При обслуживании нескольких однотипных или схожих информационных баз 1С (например, 20 филиальных баз у одного клиента) разработчики часто сталкиваются с задачей тиражирования доработок. Прямая доработка типовой конфигурации через классическое сравнение и объединение конфигураций (файл .cf) в каждой из 20 баз требует колоссальных затрат времени, а при разнице в релизах баз может привести к конфликтам и ошибкам.
Самым эффективным и современным решением этой задачи является использование расширений конфигурации (файлы .cfe). Рассмотрим подробно, как правильно доработать формы и программный код через расширения, как проверить их применимость и как автоматизировать их массовую загрузку на несколько баз.
Использование механизмов расширений конфигурации при доработке информационных баз имеет ряд ключевых преимуществ:
Разберем по шагам процесс перенесения изменений формы в расширение конфигурации:
Адаптация).Для изменения логики работы формы или модуля объекта в расширениях используются специальные аннотации перед процедурами и функциями: &Перед, &После и &Вместо.
При добавлении события формы (например, ПриСозданииНаСервере) платформа автоматически предложит выбрать способ переопределения метода:
&Перед — ваш код выполнится до вызова штатной процедуры основной конфигурации.&После — ваш код выполнится после завершения основной процедуры.&Вместо — штатная процедура полностью замещается вашей.Важное замечание по аннотации &Вместо: Раньше при замещении метода полностью копировали весь оригинальный код типовой процедуры и дописывали свои строки. Однако это создает проблемы при обновлении основного релиза. В современных версиях платформы 1С для вызова оригинального кода внутри аннотации &Вместо следует использовать метод ПродолжитьВызов().
Рассмотрим пример правильного переопределения процедуры формы:
&Вместо("ПриСозданииНаСервере")
Процедура Расш_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Вызываем исполнение стандартного кода основной конфигурации
ПродолжитьВызов(Отказ, СтандартнаяОбработка);
// Дописываем собственную логику для доработанных элементов формы
Элементы.ГруппаДополнительно.Заголовок = "Специальные настройки филиала";
КонецПроцедуры
Использование ПродолжитьВызов() гарантирует, что при обновлении типового релиза актуальный штатный код продолжительно и корректно отработает, после чего выполнится ваша доработка.
После завершения доработок в Конфигураторе необходимо выгрузить файл расширения:
.cfe.Чтобы проверить, применяются ли изменения в целевой базе и нет ли ошибок компиляции, запустим режим «1С:Предприятие» и проанализируем состояние расширения:
Также в самом Конфигураторе перед сохранением файла рекомендуется выполнять команду Проверить возможность применения из контекстного меню расширения, чтобы убедиться в совместимости с текущим релизом базы.
При загрузке расширения в рабочие базы обратите внимание на следующие параметры:
Заходить вручную через Конфигуратор в каждую из 20 баз — трудоемкий процесс. Выясним, как автоматизировать этот этап двумя способами.
Можно написать скрипт (BAT/CMD или PowerShell), который автоматически поочередно запустит Конфигуратор для каждой базы и загрузит файл .cfe:
"C:\Program Files\1cv8\8.3.23.1865\bin\1cv8.exe" DESIGNER /F "C:\Bases\Base_1" /N "Administrator" /P "Password" /ExtensionLoad "C:\Updates\MyExtension.cfe" /UpdateDBCfg
Параметр /ExtensionLoad указывает путь к файлу расширения, а параметр /UpdateDBCfg обновляет конфигурацию базы данных.
Если конфигурация построена на Библиотеке Стандартных Подсистем (БСП), загрузить расширение можно прямо из интерфейса программы без использования Конфигуратора:
.cfe.Благодаря использованию расширений процедура внесения изменений в 20 баз сводится к созданию одного файла .cfe и его быстрой рассылке по базам, что экономит время разработчика и сводит к минимуму риск возникновения ошибок при обновлениях.