Обновление конфигураций 1С, в которые ранее было внесено множество правок, — одна из самых ответственных и трудоемких задач при сопровождении баз данных. Особенно остро встает вопрос, когда информационная база отстала от актуального релиза разработчика на год или более, а заказчик требует сократить затраты на будущее сопровождение путем перевода доработок в расширения. Разберем детально, почему нельзя бездумно «перепрыгивать» релизы, как функционируют внутренние обработчики Библиотеки стандартных подсистем (БСП) и по какому алгоритму следует переносить доработки.
При большом разрыве между текущей версией базы и актуальным релизом часто возникает соблазн объединить конфигурацию сразу с последним файлом поставки cf. Проанализируем, к каким критическим последствиям это приводит:
ПриДобавленииОбработчиковОбновления), предназначенные для версий двух- или трехлетней давности, со временем удаляются. Если перескочить цепочку релизов одним шагом, данные не будут преобразованы под новую структуру, поскольку требуемые обработчики в целевой версии просто отсутствуют.Рассмотрим безопасную последовательность действий при обновлении конфигурации через серию релизов поставщика:
cf (с указанием точной версии релиза) и повторяем шаги для следующего контрольного релиза.cf на рабочий контур, обязательно запуская предприятие после каждого шага для отработки служебных процедур БСП.Перенос изменений в расширение — эффективный инструмент, но он требует четкого понимания физической архитектуры платформы. Разберем, как правильно классифицировать доработки перед миграцией.
1. Модификация форм и интерфейса
Интерфейсные доработки идеально подходят для выноса в расширение. Однако не следует заимствовать форму целиком — это создает «статичный слепок», который перестанет получать типовые обновления 1С. Оптимальный путь — программное изменение формы в расширении. Перехватываем событие ПриСозданииНаСервере с аннотацией &После и добавляем нужные элементы интерфейса программным кодом.
2. Бизнес-логика и алгоритмы модулей
Процедуры и функции переносим в расширение, используя директивы &Перед, &После либо &Вместо. В случаях, когда требуется изменить типовой код точечно, используем аннотацию &ИзменениеИКонтроль. Начиная с платформы 8.3.24, в данной директиве поддерживаются инструкции #Вставка и #Удаление, что позволяет удерживать под контролем лишь модифицированный фрагмент строки, минимизируя сбои при последующих обновлениях поставщика.
3. Хранимые данные (новые объекты и реквизиты)
Особое внимание уделим объектам, содержащим информацию. Если реквизит или справочник уже созданы в основной конфигурации и содержат рабочие данные пользователей, переносить их в расширение в большинстве случаев нецелесообразно и опасно по следующим причинам:
Таким образом, наилучшая и безопасная тактика: очистить основную конфигурацию от изменений типового программного кода и форм, оставив добавленные ранее реквизиты и справочники в основной ветке метаданных. Всю программную логику и новые доработки переносим в расширение. Это позволит накатывать новые релизы 1С типовым обновлением за минимальное время, сохраняя полную стабильность базы данных.