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

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

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

Способ 1. Использование среды разработки 1C:Enterprise Development Tools (EDT)

Среда разработки 1C:Enterprise Development Tools (EDT) создана на базе платформы Eclipse. В отличие от классического Конфигуратора, EDT хранит всю структуру конфигурации на диске в виде файлового проекта с текстовым исходным кодом и XML-описаниями объектов.

Проанализируем ключевые возможности EDT для автоматизации массовых правок:

  1. Программный Java API / DT API: Поскольку EDT построена на базе модели данных EMF (Eclipse Modeling Framework), разработчики могут создавать собственные плагины. Плагин получает полный программный доступ к дереву метаданных, структуре элементов форм и синтаксическому дереву (AST) программных модулей.
  2. Автоматизированный рефакторинг: С помощью API среды можно писать скрипты и расширения для контекстных проверок, генерации кода, автоматической замены вызовов функций и корректировки свойств объектов.
  3. Работа с текстовым форматом: Все файлы проекта открыты для обработки внешними инструментами текстового поиска и замены (например, регулярными выражениями).

Способ 2. Выгрузка конфигурации в файлы XML и частичная загрузка

Классический Конфигуратор 1С позволяет выгрузить всю конфигурацию в файлы XML, модифицировать их внешними скриптами и загрузить обратно. Выясним, как обойти основные ограничения этого подхода — длительное время обработки и проблему с длиной путей к файлам.

1. Обустройство иерархической структуры файлов:

Чтобы избежать ошибок, связанных с превышением длины пути (более 80 символов) в некоторых файловых системах, используйте ключ иерархического формата выгрузки -Format Hierarchical в параметрах запуска Конфигуратора через командную строку.

2. Инкрементальная (частичная) загрузка и выгрузка:

Чтобы не выгружать и не загружать всю конфигурацию целиком (что может занимать много времени на больших базах), применяйте механизм отслеживания изменений через файл версий. Для этого используются параметры -updateConfigDumpInfo и -listFile совместно с командами /DumpConfigFiles и /LoadConfigFiles.

Разберем пример автоматизированного сценария работы:

  1. Пакетный запуск Конфигуратора производит инкрементальную выгрузку только измененных XML-файлов и модулей в целевой каталог.
  2. Внешний скрипт (например, на языке OneScript или Python) выполняет массовый поиск по файлам .bsl (тексты модулей) или .xml (структура метаданных) и вносит необходимые изменения.
  3. Конфигуратор повторно вызывается из командной строки для загрузки списка измененных файлов обратно в базу данных.

Пример команды для частичной выгрузки конфигурации в файлы из командной строки:


1cv8.exe DESIGNER /F "C:\Bases\DemoBase" /N "Administrator" /P "Password" /DumpConfigFiles "C:\ConfigDump" -Format Hierarchical -updateConfigDumpInfo

Способ 3. Использование надстройки «Снегопат» для Конфигуратора

Если разработка ведется в штатном Конфигураторе 1С, для расширения его возможностей применяется плагин Снегопат. Он встраивается в процесс Конфигуратора и предоставляет объектную модель для доступа к внутренним элементам C++ платформы.

С помощью Снегопата можно:

  1. Автоматизировать рутинный ввод кода через собственные макросы (написание скриптов возможно на VBScript, JavaScript или в виде внешних компонентов).
  2. Получать доступ к открытым текстовым документам и модулям, выполнять в них поиск и автоматическую замену фрагментов.
  3. Управлять элементами интерфейса Конфигуратора, окнами метаданных и свойствами объектов.

Важное предупреждение о прямом редактировании таблиц СУБД

Попытки вносить изменения в структуру метаданных или тексты модулей путем прямого редактирования системных таблиц базы данных (таких как Config или ConfigSave) через SQL-запросы или бинарное редактирование файлов .cf крайне опасны.

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

Резюме

Выбор оптимального инструмента зависит от поставленной задачи:

← На главную