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

03.03.21

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

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

Файлы

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

Наименование Скачано Купить файл
Выгрузка внешних обработок в XML через Агент конфигуратора
.epf 9,37Kb
14 2 500 руб. Купить

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

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

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

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

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

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

См. также

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

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

24900 руб.

20.08.2024    75356    380    170    

326

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

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

10000 руб.

02.09.2020    268700    1495    421    

1179

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26

22570 руб.

06.10.2023    40237    113    54    

126

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.

15250 руб.

25.08.2025    64016    130    36    

138

Инструментарий разработчика Разработка Администрирование веб-серверов Системный администратор Программист Бизнес-аналитик Руководитель проекта 1С 8.3 Платные (руб)

Analyzer 1C сводит выгрузку 1С — основную конфигурацию и все расширения — в единый граф знаний. Любой запрос по связям за доли секунды, с пометками «Доб.» / «Заимств.» / «Переопределено». Новое в 2.0 — обновление поставки: сравнение и объединение версий деревом «как в Конфигураторе» с выгрузкой плана решений; поиск конфликтов из-за перехватов расширений и висячих ссылок; загрузка из бинарных .cf/.cfe; циклические зависимости. Плюс анализ влияния, запросы BSL, роли и RLS, граф вызовов. Минута на развёртывание через Docker без необходимости подключения к Интернет. Любая 1С:Предприятие 8.3+.

14000 руб.

17.04.2026    9002    38    46    

52

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

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

17000 руб.

10.11.2023    26469    98    46    

104

Информационная безопасность Инструменты администратора БД Инструментарий разработчика Учет документов Системный администратор Программист Бизнес-аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С 8.5 Розничная и сетевая торговля (FMCG) Платные (руб)

Контроль ввода данных в 1С: проверка заполнения реквизитов, обязательные поля, контроль перед записью и проведением, запрет проведения документа. Позволяет настраивать любые проверки данных в 1С 8.3/8.5 от обязательных полей до сложных условий – без открытия конфигуратора и написания кода. Готовое расширение, которое подключается и работает сразу.

6000 руб.

15.04.2026    2661    6    0    

21

Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

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

9500 руб.

17.05.2024    54854    187    63    

220
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. VKislitsin 1056 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 50 24.06.21 17:29 Сейчас в теме
(1) спасибо, интересная альтернатива.
Но XML выгрузка все таки предпочтительнее (во внешних могут лежать схемы, формы, макеты + загрузка обратно штатными средствами)
3. SergMuravev 907 03.01.26 14:08 Сейчас в теме
Подскажите, как побороли проблему с кодировкой?
chcp 65001 не помогает
Если обработка и формы на русском языке то команды через plink выдают ошибку
4. SergMuravev 907 04.01.26 01:14 Сейчас в теме
Короче, автор - читер. Plink не работает с русскими путями с агентом, а обработки с названиями на английском языке нужно еще поискать. Зря потратил кучу времени.
5. redtram 50 12.01.26 22:48 Сейчас в теме
(4) спустя 5 лет тяжко вспомнить, но 99% могу сказать то что агент работает с русскими путями и с plink и с виндовым ssh клиентом. Если по какой-то причине нужно все таки юзать plink, то chcp 65001 странный выбор. Попробуйте chcp 866, а если не взлетит то с прискорбием сообщу что существуют прекрасные анализаторы "кракозябр", которые скажут из какой кодировки в какую так коряво конвертнулось (а прискорбие потому что гугл - базовый навык программиста).
7. SergMuravev 907 12.01.26 23:07 Сейчас в теме
(5) Вот информация с ИТС "Работа конфигуратора в режиме агента"

4.7.10. Рекомендации по настройке SSH-клиентов
При настройке SSH-клиента PuTTY рекомендуется выполнить следующие настройки:
● Группа параметров Terminal:
● параметр Local echo ‑ Force on;
● параметр Local line ending ‑ Force on.
● Группа параметров Window ‑ Translation:
● параметр Remote character set ‑ UTF-8.
● Группа параметров Connection ‑ SSH ‑ TTY:
● включить параметр Don`t allocate a pseudo-terminal.

Для тех кто еще не в курсе, plink - утилита из набора PuTTy.

Агент работает с utf-8.
У вас в коде используется UTF-8:
ЗаписьТекста = Новый ЗаписьТекста;
ЗаписьТекста.Открыть(Папка + "todump" + Формат(НомерБатчаПлинка, "ЧГ=") + ".bat", КодировкаТекста.UTF8);  	
ЗаписьТекста.ЗаписатьСтроку("(");
ЗаписьТекста.ЗаписатьСтроку("echo common connect-ib");
ЗаписьТекста.ЗаписатьСтроку("timeout /t 5 > nul");
6. redtram 50 12.01.26 22:51 Сейчас в теме
(4) бонусом еще предложил бы стандартное лекарство от длинных путей - не уносить далеко от корня диска + включить в винде длинные пути.
Для отправки сообщения требуется регистрация/авторизация