В процессе разработки и сопровождения крупных решений на платформе 1С:Предприятие часто возникает необходимость выполнить рутинные массовые операции: найти в модулях определенный фрагмент кода и заменить его, автоматизировать генерацию однотипных методов или изменить параметры элементов форм сразу в десятках объектов. В штатном встроенном языке 1С глобальный контекст Метаданные доступен строго в режиме «только чтение», поэтому внести изменения в структуру метаданных или исходные тексты модулей прямо из кода исполняемой информационной базы нельзя.
Рассмотрим подробнее существующие механизмы и подходы, которые позволяют решить задачу автоматизации работы с объектами конфигурации и модулями.
Среда разработки 1C:Enterprise Development Tools (EDT) создана на базе платформы Eclipse. В отличие от классического Конфигуратора, EDT хранит всю структуру конфигурации на диске в виде файлового проекта с текстовым исходным кодом и XML-описаниями объектов.
Проанализируем ключевые возможности EDT для автоматизации массовых правок:
Классический Конфигуратор 1С позволяет выгрузить всю конфигурацию в файлы XML, модифицировать их внешними скриптами и загрузить обратно. Выясним, как обойти основные ограничения этого подхода — длительное время обработки и проблему с длиной путей к файлам.
1. Обустройство иерархической структуры файлов:
Чтобы избежать ошибок, связанных с превышением длины пути (более 80 символов) в некоторых файловых системах, используйте ключ иерархического формата выгрузки -Format Hierarchical в параметрах запуска Конфигуратора через командную строку.
2. Инкрементальная (частичная) загрузка и выгрузка:
Чтобы не выгружать и не загружать всю конфигурацию целиком (что может занимать много времени на больших базах), применяйте механизм отслеживания изменений через файл версий. Для этого используются параметры -updateConfigDumpInfo и -listFile совместно с командами /DumpConfigFiles и /LoadConfigFiles.
Разберем пример автоматизированного сценария работы:
OneScript или Python) выполняет массовый поиск по файлам .bsl (тексты модулей) или .xml (структура метаданных) и вносит необходимые изменения.Пример команды для частичной выгрузки конфигурации в файлы из командной строки:
1cv8.exe DESIGNER /F "C:\Bases\DemoBase" /N "Administrator" /P "Password" /DumpConfigFiles "C:\ConfigDump" -Format Hierarchical -updateConfigDumpInfo
Если разработка ведется в штатном Конфигураторе 1С, для расширения его возможностей применяется плагин Снегопат. Он встраивается в процесс Конфигуратора и предоставляет объектную модель для доступа к внутренним элементам C++ платформы.
С помощью Снегопата можно:
Попытки вносить изменения в структуру метаданных или тексты модулей путем прямого редактирования системных таблиц базы данных (таких как Config или ConfigSave) через SQL-запросы или бинарное редактирование файлов .cf крайне опасны.
Платформа 1С поддерживает сложную систему ссылочной целостности, уникальных идентификаторов GUID и контрольных сумм. Прямая запись в таблицы СУБД в обход механизмов платформы неизбежно приведет к разрушению структуры базы данных и невозможности последующего открытия или обновления конфигурации.
Выбор оптимального инструмента зависит от поставленной задачи: