Работа с PowerShell в 1С

27.11.15

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

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Работа с PowerShell
.epf 15,72Kb ver:2
31 2 450 руб. Купить
ActiveXPoshV3
.rar 1,60Mb
46 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

См. также

Внешние источники данных Программист Бизнес-аналитик Пользователь 1С:Предприятие 8 1C:Бухгалтерия Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

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

28500 руб.

15.11.2022    28334    38    49    

43

Оптовая торговля Розничная торговля Внешние источники данных Прайсы 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Хотите, чтобы остатки и цены товаров в вашей базе всегда были актуальными без лишних усилий? Теперь это возможно - автоматизируйте процесс загрузки и обновления данных о номенклатуре от ваших поставщиков или конкурентов. Как это работает? Вы сами настраиваете правила и расписание для каждого поставщика, чтобы обновление информации из произвольных форматов прайс-листов происходило автоматически.

15000 руб.

15.05.2024    3013    5    1    

6

Внешние источники данных Программист Бизнес-аналитик 1С:Предприятие 8 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Розница 3.0 Платные (руб)

Обработка для выгрузки данных из подготовленных СКД в фоновом режиме в базу ClickHouseDB, PostgreSQL, MySQL, в шину данных с поддержкой REST API (CSV, JSON. SQL), в локальные файлы (CSV, JSON, XLS, XLSX) или в Google Sheets. Это дополнительная подключаемая обработка.

18000 руб.

21.08.2024    5995    12    4    

13

Производство готовой продукции (работ, услуг) Внешние источники данных 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 Лесное и деревообрабатывающее хозяйство Россия Управленческий учет Платные (руб)

Обработка предназначена для загрузки файлов, выгруженных из системы Базис-мебельщик, в справочник 1С "Спецификации" для последующих процессов учета и диспетчирования полуфабрикатов и изделий.

10200 руб.

24.06.2021    24397    61    55    

44

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

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

60000 руб.

16.11.2018    32320    23    31    

23

Розничная торговля Внешние источники данных Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Бухгалтерия 3.0 Фармацевтика, аптеки Россия Бухгалтерский учет Платные (руб)

Внешняя обработка загрузки данных из файла-выгрузки, сформированного в программе F3 TAIL версии 3.4 (и выше) или еФарма версии 2.1, в базу конфигурации 1С: Бухгалтерия предприятия 8, ред. 3.0 (базовая, ПРОФ, КОРП, ФРЕШ).

13200 руб.

19.12.2016    51651    108    106    

77
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. yukon 156 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 1531 23.10.15 19:04 Сейчас в теме
(1) yukon, не совсем понял к чему этот код?
3. yukon 156 26.10.15 12:50 Сейчас в теме
(2)
К тому, что веб-сервер в powershell поднимается в дюжину строк. Т.е. это решение проблемы "самому делать web сервер нужно еще научиться" в самом примитивном виде.
4. Xershi 1531 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 1531 08.09.23 14:41 Сейчас в теме
(5) пока такой задачи не стояло. Любую базу можно запустить в ОФ. А дальше протестировать.
7. userzak 08.09.23 14:28 Сейчас в теме
Удобство использования этой компоненты в том, что она позволяет прочитать результат выполнения скрипта в PSH.
Для отправки сообщения требуется регистрация/авторизация