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