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

03.03.21

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Выгрузка внешних обработок в XML через Агент конфигуратора
.epf 9,37Kb
7
7 Скачать (1 SM) Купить за 1 850 руб.

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

Надеюсь кому-то будут полезны мои заметки о работе агента конфигуратора, так как лично меня ожидали некоторые трудности в работе с 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 внешние обработки

См. также

SALE! %

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

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

12000 10000 руб.

02.09.2020    161238    892    399    

872

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 руб.

20.08.2024    8554    65    29    

76

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

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

22200 руб.

06.10.2023    15675    38    8    

73

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

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    23835    70    45    

119

SALE! %

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

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

15000 10000 руб.

10.11.2023    10655    38    27    

63

SALE! %

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

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

4800 3840 руб.

14.01.2013    188483    1142    0    

913

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

Использования систем контроля версий — стандарт современной разработки. На курсе научимся использованию Хранилища 1С и GIT при разработке на 1С:Предприятие 8. Разберем подходы и приемы коллективной разработки, научимся самостоятельно настраивать системы и ориентироваться в них.

4900 руб.

29.06.2022    12085    104    4    

134

SALE! %

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

20000 15000 руб.

07.10.2021    17552    6    32    

42
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. VKislitsin 1015 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 53 24.06.21 17:29 Сейчас в теме
(1) спасибо, интересная альтернатива.
Но XML выгрузка все таки предпочтительнее (во внешних могут лежать схемы, формы, макеты + загрузка обратно штатными средствами)
Оставьте свое сообщение