Работа с PowerShell в 1С

27.11.15

Интеграция - Внешние источники данных

Возможно, вам уже приходилось работать с PowerShell.
Но всегда этот процесс был где-то вдалеке от 1С!
Пора провести интеграцию PowerShell с 1С!
Хотите узнать как? Читайте дальше...

Скачать исходный код

Наименование Файл Версия Размер
Работа с PowerShell
.epf 15,72Kb
27
.epf 2 15,72Kb 27 Скачать
ActiveXPoshV3
.rar 1,60Mb
33
.rar 1,60Mb 33 Скачать

Windows PowerShell — расширяемое средство автоматизации от Microsoft, состоящее из оболочки с интерфейсом командной строки и сопутствующего языка сценариев.

На текущий момент я знаю пару способов работы в 1С с PowerShell:

1) Самый простой, это просто запустить написанный скрипт:

ЗапуститьПриложение(<СтрокаКоманды>, <ТекущийКаталог>, <ДождатьсяЗавершения>, <КодВозврата>) 

2) Установить бесплатный activex от sapien. И работать по COM. 

3) Использовать платную разработку

3а) Самому сделать web сервер и написать код в 1C для взаимодействия.

Рассматривать первый вариант мы не будем. Здесь нет программирования в принципе, но для начинающих программистов это единственный выход.

Использовать платную разработку я бы не стал, а самому делать web сервер нужно еще научиться.

Поэтому вариант с работой по COM идеальное решение!

Итак, с чего же начать! 

Вам понадобится пакет установки ActiveXPoshV3:

1) Для 32-битного клиента ActiveXPoshV3x86.exe

2) Для 64-битного сервера ActiveXPoshV3x64.exe

Если ссылки будут недоступны, то зайдите на официальный сайт, там точно они будут.

Или смотрите в архиве! Пароль: infostart.

Для работы на стороне клиента, т.е. в пользовательском режиме установите 32-битную версию. А для работы и на сервере, например в регламентном задании 64-битную версию.

Так же возможно вам придется зарегистрировать компоненты через regasm 32-битный в папке Framework , 64-битный в Framework64.

Примерно так:

regasm путь\ActiveXPoSH.dll /CODEBASE 

Далее для надежности перезагружаем сервер. Все, можно создавать COM-объект.

Важно! Не забывайте для корректной работы у вас должны быть соответсвующие права в системе!

Работа в 1С

Пример работы с компонентой описан в файле ActiveXposhV3.vbs. Этот файл будет находиться в папке, где вы установили ActiveXposh.

Прочитав код, можно написать в 1С примерно такое:

Перем ActiveXPosh;
Перем OUTPUT_CONSOLE;
Перем OUTPUT_WINDOW;
Перем OUTPUT_BUFFER; 

Процедура КнопкаВыполнитьНажатие(Кнопка)

    ListServices();
    
КонецПроцедуры

Процедура ПриЗакрытии()
	
	ActiveXPosh = "";

КонецПроцедуры

Процедура ПриОткрытии()
	
	Попытка
		
		ActiveXPosh = Новый COMОбъект("SAPIEN.ActiveXPoSHV3");
		ActiveXPosh.OutputMode = OUTPUT_BUFFER;
		success = ActiveXPosh.Init(False);  	
    
	    Если success <> 0 Тогда
	        Сообщить("Init failed");
	    КонецЕсли;
		
		Если ActiveXPosh.IsPowerShellInstalled Тогда
			Сообщить("Готов выполнять команды PowerShell");
	    Иначе
	    	Сообщить("PowerShell не установлена");
		КонецЕсли; 		
	    							
		Для Каждого Строка Из ActiveXPosh.Output Цикл 
		
			Сообщить(Строка);
			
		КонецЦикла;

	Исключение
		Сообщить("SAPIEN.ActiveXPoSHV3 не установлена!");	
	КонецПопытки;

КонецПроцедуры

Функция ListServices()
	
	ActiveXPosh.OutputMode = OUTPUT_BUFFER;
	//Можно изменить ширину
	//ActiveXPosh.OutputWidth = 400;
	
	//Пример команд
	ActiveXPosh.Execute("Get-WmiObject -class Win32_Service | Format-Table -property Name, State");
        	
	Для Каждого Строка Из ActiveXPosh.Output Цикл 
		
		Сообщить(Строка);
		
	КонецЦикла;     
	
    ActiveXPosh.ClearOutput();
	
КонецФункции 

OUTPUT_CONSOLE = 0;
OUTPUT_WINDOW = 1;
OUTPUT_BUFFER = 2;

Данная компонента поддерживает выполнение следующих команд: 
ClearOutput() - Этот метод очищает внутренний буфер вывода. 
Execute(strcommand) - Выполняет команду PowerShell или сценария. 
Eval(strExpression) - Вычисляет выражение PowerShell. 
Init(execProfile) - Первоначальный вызов экземпляра движка PowerShell. 
IsPowerShellInstalled - Возвращает Истина / Ложь. 
Output - Коллекция строк заполнены с выходом из PowerShell команды. 
OutputString - Содержание буфера вывода в виде одной строки. 
OutputMode - Устанавливает или получает режим вывода результата. 
OutputWidth - Задает или получает желаемую ширину выходного результата. 

Оригинал: 
ClearOutput() - This method clears the internal output buffer. 
Execute(strcommand) - Executes a PowerShell command or script. 
Eval(strExpression) - Evaluates a PowerShell expression. 
Init(execProfile) - Initial call to instantiate a PowerShell engine. 
IsPowerShellInstalled - Returns True/False. 
Output - A collection of strings filled with output from PowerShell commands. 
OutputString - The content of the output buffer as a single string. 
OutputMode - Sets or gets the current output mode. 
OutputWidth - Sets or gets the desired output width.

Обработка изнутри

Разработка представляет собой набор кода для работы PowerShell в 1С, используя компоненту "SAPIEN.ActiveXPoSHV3" через COM.

Особенностью разработки является возможность работы с удаленной командной консолью MS Exchange. Справка.

Это позволяет с сервера 1С подключиться к почтовому серверу MS Exchange и продолжить работу PowerShell на нем.

Так же в разработку встроен код универсального парсера CSV-файлов. Это помогает решить специфическую задачу, получения всех данных после выполнения сценария PowerShell в читаемой таблице 1С.

Т.е. что происходит. Вы написали сценарий PowerShell, результат выгрузили в файл CSV. И затем загрузили эти данные на экран в удобном виде. 

Благодарности

Особая благодарность пользователю cool.vlad4. Очень помог с первоначальной настройкой и примером кода.

Также выражаю благодарность всем толковым админам. Без вашей помощи запускать компоненты на сервере очень сложно!

Обновление от 09.11.2015

Улучшен интерфейс:

Добавлены реквизиты периода.

Для ознакомления добавлены кнопки для записи регистра сведений (заполнение измерений) и полной очистки самого регистра сведений.

Улучшен пример сценария на PowerShell.

Обновлен универсальный парсер CSV-файлов.

PowerShell CSV MS Exchange

См. также

Перенос данных из Парус 8 в ЗГУ 3

Зарплата Внешние источники данных Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 8 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

84000 руб.

19.08.2020    22620    19    1    

22

Экстрактор данных 1С в BI - выгрузка данных из 1С в BI-аналитику

Внешние источники данных Платформа 1С v8.3 Управляемые формы Анализ и прогнозирование Конфигурации 1cv8 Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах. «Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков. Благодаря этому решению, специалистам не требуется быть программистами, чтобы легко получать данные из 1С в вашей BI-системе.

15.11.2022    13652    12    SQV0    47    

29

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9306    9    8    

11

Перенос данных из Парус 7.хх в ЗГУ ред.3

Внешние источники данных Зарплата Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 7.хх учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

24000 руб.

24.04.2017    48842    97    163    

86

Перенос данных из Парус 10 (Торнадо) в ЗГУ ред.3 через Excel

Внешние источники данных Загрузка и выгрузка в Excel Зарплата Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате из Парус 10(Торнадо) учреждений через файлы Excel в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ). В принципе, обработка может быть использована для загрузки из файлов Excel, полученных из любых информационных систем.

24000 руб.

16.11.2018    30083    20    31    

21

Загрузка в БГУ из УРМ "Криста"

Внешние источники данных Банковские операции Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия государственного учреждения Россия Бухгалтерский учет Платные (руб)

Обработки для загрузки данных из УРМ "Криста" в бухгалтерию государственного учреждения редакция 2.0. Есть Демо доступ на вкладке Бесплатные файлы на 1 месяц со дня получения демонстрационного ключа регистрации. Поддерживает ПО "Web-исполнение" от НПО "Криста".

4800 руб.

19.06.2013    38505    136    90    

30
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. yukon 145 23.10.15 16:39 Сейчас в теме
Использовать платную разработку я бы не стал, а самому делать web сервер нужно еще научиться.

Раз в деле PowerShell, то нет ничего проще:
$HttpListener = New-Object System.Net.HttpListener
$HttpListener.Prefixes.Add("http://localhost:8080/")
$HttpListener.Start() 
While ($HttpListener.IsListening) {
	$Context    = $HttpListener.GetContext()
	$Request    = $context.Request
	$Response   = $context.Response
	...
	$Response.StatusCode = 200
	$Response.Close()
}
$HttpListener.Stop()
Показать
mitia.mackarevich; +1 Ответить
2. Xershi 1484 23.10.15 19:04 Сейчас в теме
(1) yukon, не совсем понял к чему этот код?
3. yukon 145 26.10.15 12:50 Сейчас в теме
(2)
К тому, что веб-сервер в powershell поднимается в дюжину строк. Т.е. это решение проблемы "самому делать web сервер нужно еще научиться" в самом примитивном виде.
4. Xershi 1484 26.10.15 12:53 Сейчас в теме
(3) yukon, так речь поднять веб сервер кодом 1С.
Чтобы он поднял powershell.

А ты я так понял предлагаешь обратную последовательность?
5. Roman_Go 2 23.09.22 06:44 Сейчас в теме
а под управляемую форму есть обработка?
6. userzak 08.09.23 14:27 Сейчас в теме
(5) На данный момен в архиве версия для УФ
8. Xershi 1484 08.09.23 14:41 Сейчас в теме
(5) пока такой задачи не стояло. Любую базу можно запустить в ОФ. А дальше протестировать.
7. userzak 08.09.23 14:28 Сейчас в теме
Удобство использования этой компоненты в том, что она позволяет прочитать результат выполнения скрипта в PSH.
Оставьте свое сообщение