Режим агента конфигуратора на практике

03.03.21

Разработка - Инструментарий разработчика

Полезные практические заметки о работе с конфигуратором с режиме агента.

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

Наименование Файл Версия Размер
Выгрузка внешних обработок в XML через Агент конфигуратора
.epf 9,37Kb
5
.epf 9,37Kb 5 Скачать

Официальную информацию по агенту можно почитать тут (ИТС). 

Надеюсь кому-то будут полезны мои заметки о работе агента конфигуратора, так как лично меня ожидали некоторые трудности в работе с SSH и вызовом множественных (многострочных/пакетных) команд.

Задача

Выгрузить справочник внешних обработок в XML из нашей УПП для контроля версий с помощью Git и для возможности использовать поиск по программному коду. Обработок более 2000, так что для выгрузки каждой обработки в XML запускать конфигуратор с ключом DumpExternalDataProcessorOrReportToFiles было как-то не спортивно.

Было решено использовать агент с его командой config dump-external-data-processor-or-report-to-files, она же dump-ext-files.

 

Запускаем агент

 Агент - это по сути SSH сервер, который управляет конфигуратором. Так что несмотря на то, что никакая база для выгрузки внешних epf вроде бы и не нужна, все равно пришлось создать отдельную пустую базу для его работы. Строка запуска будет выглядеть так:

c:\Program Files\1cv8\common>1cestart.exe DESIGNER 
/ibname Пустая 
/AgentMode 
/AgentSSHHostKeyAuto 
/AgentBaseDir "C:\Users\i.netkachev\Documents\Внешние в XML\Export" 
/Visible

 Самый интересный параметр это /AgentBaseDir, поскольку все пути используемые при вызове команд будут строиться относительно этого каталога. Параметр /Visible поможет нам убедиться, что все работает. 

Подключаемся к агенту

Мы работаем на Windows 10, в ней уже есть встроенный ssh клиент, но по каким-то причинам он мне не подошёл (кажется не было возможности подсунуть на вход файл с исполняемыми командами).

Для подключения к SSH агента я использовал консольную утилиту plink. Это один исполняемый файл, что может быть очень удобно. Скачать можно с официального сайта (прямые ссылки: x64/x86). 

Для начала подключимся и проверим, а работает ли вообще:

plink.exe -ssh -l admin -pw 1 -P 1543 localhost

где

-l admin -- логин пользователя информационной базы с полными правами/правом работы с агентом

-pw 1 -- его пароль.

-P 1543 -- стандартный порт работы агента

localhost -- адрес агента (может быть быть запущен на другом компьютере).

Если всё хорошо, то мы получим надпись Access granted

Жмем Enter и ...

уже настораживает кодировка. Ничего страшного потом поправим.

Выгрузка обработок

Агент всегда первым делом ждет команду  

common connect-ib

 и только потом в этой сессии мы можем вызывать выгрузку epf (file - целевая папка, ext-file - путь к внешней обработке):

config dump-ext-files --file="..\XML-EPFs\root\blabla.erf" --ext-file="..\EPFs\root\blabla.erf"
 
Скорее всего будет так: Ошибка CommandFormatError - Неверный формат команды

После всего этого нужно отключиться от базы

common disconnect-ib

и, если необходимо, завершить работу самого агента

common shutdown

Пакетная работа с агентом

Вообще plink поддерживает входной файл команд указанный в параметре -m, но этот фокус у меня не прокатил, т.к. агент не может работать без пауз между командами (я так понял это проблема всех терминалов), но слава богу plink поддерживает указание команд в качестве аргумента.

Собираем многострочную команду cmd:

(
echo common connect-ib
timeout /t 5 > nul
echo config dump-ext-files --file="..\XML-EPFs\root\1.erf" --ext-file="..\EPFs\root\1.erf"
timeout /t 1 > nul
echo config dump-ext-files --file="..\XML-EPFs\root\2.erf" --ext-file="..\EPFs\root\2.erf"
timeout /t 1 > nul
echo config dump-ext-files --file="..\XML-EPFs\root\3.erf" --ext-file="..\EPFs\root\3.erf"
timeout /t 1 > nul
echo common disconnect-ib
timeout /t 5 > nul
)| plink.exe -ssh -l admin -pw 1 -P 1543 localhost -T -batch

Тем самым имитируем ввод из cmd с помощью "echo", и притормаживаем следующий ввод с помощью команды "timeout /t 5 > nul", за это время агент успеет выполнить предыдущую команду (иначе ничего не получится). 

Волшебный ключ -batch говорит plink-у о том, что интерактивных действий-подтверждений мы видеть не хотим, а ключ -T делает нечто звучащее как disable pty allocation :)

Что в итоге?

В итоге мы получаем ускорение примерно на 70%, относительно запуска конфигуратора для каждой обработки. 

Буду рад, если где-то укажете на мою дремучесть или наличие альтернативных подходов по пакетному вызову команд агента. 

В интернетах искалось очень тяжело, так что решил может эта статья кому-то поможет + прошу в комментарии.

Также прикрепляю обработку-пример, которая выгружает внешние обработки из справочника в файлы, по-пути собирая .bat скрипты вызова plink-а + выгрузка кода модулей из обычных форм (благодаря вот этой крутой публикации: //infostart.ru/1c/articles/825100/). Обработка делалась исключительно для себя, так что даже путь прописан хардкодом. Тестировалось на 8.3.11.3034. 

 

 

Агент конфигуратора ssh plink epf erf выгрузка в xml внешние обработки

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    124499    681    389    

732

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

18000 руб.

06.10.2023    7705    24    6    

42

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 руб.

10.11.2023    4221    12    2    

36

SALE! %

PowerTools

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

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2880 руб.

14.01.2013    178547    1083    0    

861

Системы контроля версий для 1С-разработчиков.

1С-программирование DevOps и автоматизация разработки Групповая разработка (Git, хранилище) DevOps для 1С Платформа 1С v8.3 Платные (руб)

Основы командной разработки на 1С. Использование систем контроля версий при разработке на платформе 1С:Предприятие 8

4900 руб.

29.06.2022    9356    78    4    

112

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99576    239    97    

298

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18343    6    8    

40

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

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

2400 руб.

24.09.2019    23837    16    15    

33
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. VKislitsin 966 09.03.21 18:51 Сейчас в теме
Очень интересно. Давно сам хотел "помучить" этот режим агента, чтобы понять для чего можно использовать.

Что касается альтернативного способа для озвученной задачи - можно было бы выгружать их непосредственно из СУБД и распаковать. Можно даже средствами самой СУБД (наверняка ведь это SQL Server?).
Полноценного XML, как при выгрузке конфигуратором, не получить, но программный код - весь как на ладони. А ведь именно он нужен?
Вот несколько комментариев на тему распаковки непосредственно в SQL Server:
http://forum.infostart.ru/forum34/topic233969/message2407776/#message2407776
https://forum.infostart.ru/forum9/topic171001/message2322841/#message2322841
http://forum.infostart.ru/forum34/topic243665/message2471644/#message2471644
2. redtram 29 24.06.21 17:29 Сейчас в теме
(1) спасибо, интересная альтернатива.
Но XML выгрузка все таки предпочтительнее (во внешних могут лежать схемы, формы, макеты + загрузка обратно штатными средствами)
Оставьте свое сообщение