В процессе автоматизации бизнес-процессов часто возникают ситуации, когда стандартных средств 1С недостаточно для взаимодействия с облачными сервисами, такими как SharePoint. В таких случаях программисты обращаются к PowerShell, который обладает мощными библиотеками для работы с API Microsoft. Давайте разберем, как правильно организовать обмен данными между 1С и PowerShell, чтобы не просто «запустить и забыть», а получить результат работы скрипта для дальнейшей обработки.
Этот метод является классическим, надежным и наиболее простым в реализации. Суть его заключается в том, что 1С инициирует выполнение скрипта, а скрипт, в свою очередь, сохраняет результат своей работы в текстовый файл, который 1С затем считывает. Для структурированных данных мы рекомендуем использовать формат JSON.
Рассмотрим по шагам, как реализовать этот механизм:
Write-Host, а преобразовывал результат в строку JSON и записывал её в файл.ЗапуститьПриложение или КомандаСистемы.Пример реализации вызова в 1С:
ИмяФайлаРезультата = ПолучитьИмяВременногоФайла("json");
Команда = "powershell.exe -ExecutionPolicy Bypass -File ""C:\Scripts\GetSharePointData.ps1"" -OutputFile """ + ИмяФайлаРезультата + """";
ЗапуститьПриложение(Команда, , Истина); // Истина ожидает завершения скрипта
Если ФС.СуществуетФайл(ИмяФайлаРезультата) Тогда
Чтение = Новый ЧтениеJSON;
Чтение.ОткрытьФайл(ИмяФайлаРезультата);
Данные = ПрочитатьJSON(Чтение);
Чтение.Закрыть();
КонецЕсли;
Если вы хотите избежать создания лишних файлов на диске, можно перехватить вывод скрипта напрямую в оперативную память. Для этих целей применяется объект WScript.Shell. Метод Exec возвращает объект, который позволяет считывать данные, отправляемые скриптом в стандартный поток вывода.
Этот способ позволяет работать с данными в режиме «реального времени», однако требует внимательности при работе с кодировками вывода PowerShell.
Для более тесной интеграции можно рассмотреть использование специальных библиотек, таких как ActiveXPosh. Такие компоненты позволяют вызывать методы PowerShell прямо внутри сеанса 1С. Это избавляет от необходимости запускать каждый раз новый процесс powershell.exe, что существенно экономит ресурсы сервера и ускоряет работу.
Однако помните: использование внешних COM-компонент требует предварительной регистрации библиотек на сервере 1С, что может быть ограничено политиками безопасности вашей компании.
Если ваша задача — получение данных из SharePoint, мы настоятельно рекомендуем рассмотреть отказ от «прокладки» в виде PowerShell. Современные стандарты взаимодействия подразумевают использование прямого обращения к REST API SharePoint. Это самый «кошерный» способ интеграции:
Для реализации этого метода в 1С используйте объекты HTTPСоединение и HTTPЗапрос. Получив Bearer-токен (авторизация), вы сможете получать любые списки SharePoint напрямую в формате JSON, который 1С понимает «из коробки» с помощью функции ПрочитатьJSON. Для отладки и тестирования таких запросов можно применить обработку для тестирования REST API прямо в 1С.
Каким бы методом вы ни воспользовались, не забывайте про контроль выполнения:
exit в PowerShell для возврата кода завершения (exit 0 при успехе, exit 1 при ошибке).Подводя итог: если скрипт уже написан и менять его нельзя, используйте первый вариант с JSON-файлом — он наиболее стабилен и прост в отладке. Если вы только начинаете разработку — смотрите в сторону прямого обращения к REST API SharePoint из встроенного языка 1С.