Управление конфигуратором в режиме агента с помощью python

06.08.20

База данных - Архивирование (backup)

Управление конфигуратором 1С:Предприятие в режиме агента. Опыт применения с реализацией на языке python. Результат получен с использованием интерактивной сессии оболочки через invoke_shell().

В статье "Режим агента конфигуратора" технологического блога 1С приводится пример управления конфигуратором с помощью языка python.


import paramiko

host = '127.0.0.1'
user = 'login'
secret = 'password'
port = 1543

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=host, port=port, username=user, password=secret)

stdin, stdout, stderr = client.exec_command('common connect-ib')
data = stdout.read() + stderr.read()

// Тут подразумевается код команд конфигуратору после подключения к базе

stdin, stdout, stderr = client.exec_command('common disconnect-ib')
data = stdout.read() + stderr.read()

client.close()

Оригинал кода можно посмотреть по ссылке выше. Я попробовал воспроизвести этот код. Проблема возникла в том, что метод exec_command() после выполнения одной команды закрывает сессию. Поэтому таким способом нельзя выполнить две команды последовательно в рамках одного подключения, созданного методом client.connect(hostname=host, username=user, password=secret, port=port). Следовательно, после подключения к базе командой 'common connect-ib' любую другую команду для базы уже выполнить нельзя, используя exec_command().


Я пошел другим путем. Запуск конфигуратора в режиме агента из командной строки с помощью subprocess.Popen(). Параметры командной строки есть в Руководстве администратора ИТС.


/F - путь к базе
/AgentMode - режим агента
/AgentSSHHostKeyAuto - ключ для подключения берется из файла host_id в директории 1С
/AgentBaseDir - путь к директории, с которой будет работать конфигуратор для загрузки/выгрузки файлов.
/Visible - режим видимости агента, появляется окно при запуске конфигуратора в этом режиме

import subprocess
import paramiko
import time

p = subprocess.Popen([r'c:\Program Files (x86)\1cv8\8.3.15.1830\bin\1cv8.exe', 
                      r'DESIGNER', 
                      r'/F d:\Test', r'/AgentMode', r'/AgentSSHHostKeyAuto', 
                      r'/AgentBaseDir d:\Test\Agent', r'/Visible'])

time.sleep(5)

host = '127.0.0.1'
user = 'Admin'
secret = '123'
port = 1543

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=host, port=port, username=user, password=secret)

transport = client.get_transport()
channel = transport.open_session()
channel.invoke_shell()
print(channel.recv(5000).decode('utf-8'))

channel.send('options set --show-prompt=no\n')
time.sleep(3)
print('Нет коммандной строки: ' + channel.recv(5000).decode('utf-8'))  

channel.send('common connect-ib\n')
time.sleep(1)
print('Подключение к базе: ' + channel.recv(5000).decode('utf-8'))

channel.send(r'config dump-cfg --file=\1Cv8.cf' + '\n') 
while not channel.recv_ready():
    i = 0
print('Выгрузка конфигурации: ' + channel.recv(5000).decode('utf-8'))
time.sleep(1)

channel.send('common disconnect-ib\n')
time.sleep(1)
print('Отключение от базы: ' + channel.recv(5000).decode('utf-8'))

channel.send('common shutdown\n')
time.sleep(1)
print('Завершение работы: ' + channel.recv(5000).decode('utf-8'))

channel.close()

client.close()

print("конец программы")

Я использовал получение интерактивной сессии оболочки через invoke_shell(). После этого можно отправлять команды конфигуратору через сообщения channel.send('common connect-ib\n'), при этом канал остается открытым и ответ сервера можно получить через channel.recv(). При отправке команд через сообщения обязательно строка команды должна заканчиваться '\n' (переход строки).


'options set --show-prompt=no\n' - отключает приглашение 'designer>' в командной строке
'common connect-ib\n' - подключение к информационной базе
'config dump-cfg --file=\1Cv8.cf' - выгрузка файла конфигурации в заданную директорию
'common disconnect-ib\n' - отключение от информационной базы
'common shutdown\n' - завершение работы конфигуратора

Вступайте в нашу телеграмм-группу Инфостарт

конфигуратор режимагента python администрирование

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

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

См. также

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

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

24900 руб.

20.08.2024    73757    373    170    

321

Разработка Инструменты администратора БД Администрирование веб-серверов Администрирование Программист 1C:ERP Платные (руб)

Это специализированное решение для глубокого анализа и мониторинга серверов и баз данных 1С. Продукт позволяет выявлять причины замедлений, блокировок и ошибок, объединяя данные технологического журнала, СУБД и оборудования в единой интерактивной системе.

90000 руб.

13.05.2026    1061    2    0    

4

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

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

17000 руб.

10.11.2023    26120    97    46    

104

Тестирование QA DevOps и автоматизация разработки Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Налоговый учет Платные (руб)

Готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарии возможно использовать как для vanessa-automation, так и для СППР. Поддерживаемые версии конфигураций ERP2 и КА2: 2.5.27.47.

5000 руб.

04.07.2022    14455    65    5    

41

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

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14640 руб.

29.04.2020    50947    139    162    

93

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

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 17.04.2026, версия 1.4.1, работает в 1С:ФРЕШ!

23180 руб.

06.12.2023    23808    82    10    

115

Файловый обмен (TXT, XML, DBF), FTP Поиск данных Инструменты администратора БД Корректировка данных Системный администратор Программист 1С:Предприятие 8 1C:Бухгалтерия 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Данная обработка позволит Вам легко и просто, а главное - быстро, выполнить сравнение данных между ЛЮБЫМИ базами (и РИБ, по правилам конвертаций) по контрольным суммам выбранных объектов баз 1С, работающих на платформах 8.3 и выше. Удобный и понятный интерфейс в виде "мастера". Высокая скорость сравнения достигается за счет специального алгоритма расчета контрольной суммы объекта/записи и сравнения по данным суммам объектов 2х баз через файл. Имеется возможность выбора реквизитов, по которым система будет сравнивать объекты. Сравнение количества записей в движениях документов, возможность сравнивать данные по правилам конвертации и не только! Выбор объектов конфигурации для КАЖДОГО узла в отдельности с индивидуальным отбором для каждого объекта конфигурации, работа с FTP, сохранение или загрузка настроек, сохранение или загрузка результата сравнения, регистрация на обмен объекта и его движений. (Обновление от 12.11.2024, версия 2.2-2.5)

24400 руб.

27.10.2017    46727    32    13    

50
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Бэнни 221 18.08.20 15:07 Сейчас в теме
Поставил плюс. Еще бы кейс какой-то хороший разобрали вообще цены не было бы.
Alex10166; +1 Ответить
2. Alex10166 33 28.08.20 18:20 Сейчас в теме
(1) Спасибо ! К сожалению, не было какой-либо реальной задачи с применением режима Агента для конфигуратора. Хотелось просто "прощупать" этот инструмент. Да и довольно мало команд пока реализовано под этот режим. Только самые простые. Если только автоматизировать обновление конфигурации базы.
Для отправки сообщения требуется регистрация/авторизация