Обновление типовой конфигурации 1С, такой как Управление торговлей 11, ERP или Бухгалтерия предприятия 3.0, само по себе является стандартной процедурой. Однако наличие расширений, особенно тех, которые добавляют собственные объекты метаданных (документы, справочники, регистры) или подменяют логику проведения через аннотацию &Вместо, накладывает определенные риски. В данной статье мы подробно разберем, как избежать потери данных и обеспечить стабильную работу системы после перехода на новый релиз.
Прежде чем приступать к техническим действиям, проанализируем содержимое наших расширений. Важно разделить доработки на два типа:
&Перед, &После или &Вместо для существующих процедур (например, в модуле объекта Документ.РеализацияТоваровУслуг).Важный момент: если ваше расширение содержит новые объекты данных, его ни в коем случае нельзя удалять или просто «деактивировать» без понимания последствий. Хотя платформа 1С старается сохранять таблицы расширений, некорректные манипуляции с уникальным идентификатором расширения могут привести к потере доступа к созданным документам и записям регистров.
Рассмотрим золотое правило любого специалиста 1С: никогда не проводить обновление сразу на рабочей базе, если конфигурация имеет расширения с данными. Проанализируем стандартный алгоритм подготовки:
Обновление основной конфигурации выполняется по типовой схеме. Разберем шаги:
.cfu или .cf) и пройдем все этапы сопоставления объектов.F7 (Обновить конфигурацию базы данных).На этом этапе платформа может выдать предупреждение о том, что расширения не могут быть применены. Это происходит, если в новом релизе изменились типы данных, имена процедур или режим совместимости, которые заимствованы в расширении.
Теперь выясним причину конфликтов, если они возникли. Перейдем в меню Конфигурация -> Расширения конфигурации. В открывшемся списке мы можем увидеть, что некоторые расширения подсвечены красным цветом или имеют статус «Не применяется».
Воспользуемся встроенным инструментом: выделим расширение и нажмем Проверить возможность применения. Платформа сформирует отчет, в котором укажет конкретные объекты или методы, вызвавшие проблему. Например:
Ошибка: метод "ОбработкаПроведения" объекта "Документ.РеализацияТоваровУслуг" имеет другой набор параметров в основной конфигурации.
Такая ситуация критична для аннотации &Вместо. Если 1С добавила в процедуру проведения новый параметр (например, ДополнительныеСвойства), ваша расширенная процедура со старым набором параметров просто не сработает, и документ перестанет проводиться.
Проанализируем ситуацию с изменением сигнатур методов. Если мы обнаружили несоответствие, нам необходимо вручную скорректировать заголовки процедур в расширении. Рассмотрим пример кода:
Было в расширении:
&Вместо("ОбработкаПроведения")
Процедура Расш1_ОбработкаПроведения(Отказ, РежимПроведения)
// Наша доработка
ПродолжитьВызов(Отказ, РежимПроведения);
КонецПроцедуры
Стало в новом релизе (нужно исправить):
&Вместо("ОбработкаПроведения")
Процедура Расш1_ОбработкаПроведения(Отказ, РежимПроведения, ДополнительныйПараметрНовый)
// Наша доработка
ПродолжитьВызов(Отказ, РежимПроведения, ДополнительныйПараметрНовый);
КонецПроцедуры
Именно поэтому использование &Перед и &После считается более безопасным при обновлениях — они менее чувствительны к изменению внутренней логики типовых процедур, если только не меняется состав их параметров.
Рассмотрим важный нюанс, упомянутый в обсуждении. При использовании расширений с данными выполнение ТиИ может преподнести сюрпризы. В старых версиях платформы (до 8.3.15) ТиИ игнорировало данные расширений, что могло привести к очистке ссылок в основной базе.
В современных версиях платформы при запуске Администрирование -> Тестирование и исправление обязательно убедитесь, что расширение подключено. Платформа теперь умеет проверять логическую целостность объектов расширения вместе с основной конфигурацией. Однако, если база имеет объем более 60 Гб и 100 активных пользователей, выполнять ТиИ следует только в регламентное окно, предварительно проверив результат на копии.
Для того чтобы каждое обновление не превращалось в «экстрим», придерживайтесь следующих правил:
ТиИ и механизмов БСП.&Вместо на &После или подписки на события, где это возможно.Таким образом, обновление конфигурации с расширением не требует его обязательной деактивации. Напротив, для сохранения данных расширение должно оставаться в базе. Основная сложность заключается в ручной адаптации заимствованных процедур под изменившийся код типового решения. Следуя приведенному алгоритму, вы сможете успешно обновить УТ-11 или любую другую сложную систему без потери наработанного функционала.