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

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

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

Причины возникновения проблемы

Проанализируем технические предпосылки сбоя. В современных конфигурациях на базе БСП учет объектов метаданных строго структурирован:

  1. Разделение таблиц идентификаторов БСП: Все типовые объекты метаданных регистрируются в справочнике ИдентификаторыОбъектовМетаданных. Объекты, добавленные через механизм расширений, должны регистрироваться в отдельном служебном справочнике ИдентификаторыОбъектовРасширений и регистре сведений ИдентификаторыОбъектовВерсийРасширений. При выполнении стандартного обновления с параметром /С ЗапуститьОбновлениеИнформационнойБазы платформа обновляет только основной справочник метаданных, из-за чего возникает рассинхронизация вспомогательных данных.
  2. Отключение режима совместимости: Для добавления собственных справочников и реквизитов в расширение разработчики нередко отключают режим совместимости конфигурации с предыдущими версиями платформы. Это приводит к изменению логики низкоуровневых служебных механизмов БСП, рассчитанных на строгую версию совместимости, что ломает работу зависимых подсистем.
  3. Включение объектов расширения в типовые подсистемы: Если созданный в расширении справочник напрямую включить в состав типовой служебной подсистемы конфигурации поставщика, нарушаются внутренние алгоритмы инициализации прав доступа (RLS) и командного интерфейса.

Способ 1. Программная актуализация идентификаторов расширений

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

Напишем код для принудительного обновления идентификаторов расширений:


// Принудительное обновление служебных данных расширений
Попытка
    Справочники.ИдентификаторыОбъектовРасширений.ОбновитьДанныеСправочника(Истина);
    Сообщить("Идентификаторы объектов расширений успешно обновлены.");
Исключение
    // Для более ранних редакций БСП используется альтернативный метод
    Справочники.ИдентификаторыОбъектовРасширений.ОбновитьДанные();
    Сообщить("Выполнено обновление данных через базовый метод.");
КонецПопытки;

Разберем по шагам порядок действий:

  1. Запустим конфигуратор и откроем модуль управляемого приложения либо создадим новую внешнюю обработку.
  2. В процедуре ПриНачалеРаботыСистемы или в модуле обработки разместим приведенный выше код.
  3. Запустим сеанс «1С:Предприятие» в режиме отладки (или с ключом командной строки /Execute <ПутьКФайлуОбработки>).
  4. После выполнения процедуры служебные таблицы БСП придут в соответствие с метаданными расширения, и запуск конфигурации пройдет штатно.

Способ 2. Использование актуальной обработки обновления вспомогательных данных

Если для восстановления используется внешняя обработка ОбновлениеВспомогательныхДанных.epf, обратим внимание на источник ее получения. Обработка должна браться строго из комплекта поставки той версии БСП (каталог шаблонов tmplts\1c\SSL\...), на которой построена текущая редакция конфигурации.

Старые версии данной обработки не содержат алгоритмов обхода таблиц ИдентификаторыОбъектовРасширений, что приводит к критическим ошибкам при попытке их выполнения.

Особенности сохранения данных и откат конфигурации

Выясним, как безопасно откатить версию конфигурации или удалить расширение без потери введенной пользователями информации.

Критически важные правила платформы:

  1. Удаление расширения: Если полностью удалить расширение из списка через конфигуратор или окно управления расширениями, все физические таблицы СУБД, созданные этим расширением (включая данные пользовательских справочников), будут безвозвратно удалены.
  2. Безопасное отключение: Чтобы временно исключить влияние расширения на систему без потери данных, необходимо снять флаг Активно в окне «Расширения конфигурации». В этом случае физические таблицы в базе данных сохраняются.
  3. Выгрузка данных перед манипуляциями: Перед любыми операциями обновления обязательно выгрузим данные справочников расширения во внешний файл (например, через универсальную выгрузку/загрузку данных XML или специализированную обработку).
  4. Откат на предыдущий релиз: Для возврата на стабильную версию конфигурации без удаления расширения выполним загрузку файла конфигурации .cf нужной версии через меню Конфигурация → Загрузить конфигурацию из файла. Сами расширения при этом затронуты не будут.

Альтернативные варианты доработки без использования расширений данных

Проанализируем альтернативные способы реализации требований заказчика, позволяющие избежать проблем с обновлением:

  1. Типовой механизм «Дополнительные реквизиты и сведения»: Для справочников типовых конфигураций (например, «Штатное расписание») доступно добавление дополнительных реквизитов со значением типа Дополнительное значение непосредственно в режиме «1С:Предприятие». Это полностью исключает необходимость создания собственных справочников и изменения режима совместимости.
  2. Доработка основной конфигурации на поддержке: Если требуется жесткая ссылочная целостность, добавим новый справочник и реквизит непосредственно в основную конфигурацию, включив возможность изменения с сохранением поддержки. При последующих обновлениях через механизм сравнения и объединения форма не затирается целиком, а изменения объединяются по правилам поставщика и пользователя.
← На главную