← На главную
В процессе обновления типовых и доработанных конфигураций (например, 1C:Бухгалтерия) специалисты нередко сталкиваются с ситуацией, когда в окне сравнения и объединения конфигураций один и тот же объект метаданных отображается сразу в двух разных строках. Типичная картина: в одной строке объект присутствует в старой конфигурации и отсутствует в новой, а во второй строке — отсутствует в старой, но присутствует в новой. При попытке применить обновление конфигуратор прерывает операцию с ошибкой: на объект есть ссылки в метаданных, поэтому удалить его невозможно.
В данном материале разберем причины возникновения такого конфликта и подробно рассмотрим проверенные способы устранения дублирования объектов метаданных.
Почему возникает дублирование одного и того же объекта
Проанализируем механизм сопоставления объектов платформой «1С:Предприятие». Внутренняя логика конфигуратора сопоставляет элементы метаданных не по их строковым именам (синонимам или идентификаторам), а по скрытым уникальным идентификаторам — UUID (GUID). Дублирование строк в таблице сравнения возникает в следующих случаях:
- Смена внутреннего идентификатора объекта: если в информационной базе отчет когда-либо был удален и создан заново вручную, перенесен через буфер обмена или скопирован из другой конфигурации, платформа присвоила ему новый
UUID. Для конфигуратора старый объект и одноименный объект из файла обновления являются двумя абсолютно разными сущностями. - Сбой метаданных поддержки: при некорректном снятии с поддержки, выборочном объединении или повреждении внутренней таблицы правил поддержки связь объекта с конфигурацией поставщика может быть разорвана. В таком случае система считает существующий объект пользовательским, а входящий — новым типовым.
- Контроль ссылочной целостности: конфигуратор не позволяет удалить старый объект, так как на него продолжают ссылаться роли (права доступа), подсистемы, командный интерфейс, регламентные задания или общие модули.
Способ 1. Принудительное сопоставление объектов через полный файл конфигурации (Рекомендуемый)
Рассмотрим штатный и наиболее безопасный способ восстановления связи между объектами. В стандартном окне мастера обновления по файлу .cfu возможность ручного маппинга заблокирована, поэтому нам потребуется полный файл конфигурации .cf целевого релиза.
Разберем по шагам последовательность действий:
- Создание резервной копии: обязательно выгрузим информационную базу в файл
.dt или создадим резервную копию средствами СУБД перед выполнением любых операций со структурой конфигурации. - Открытие сравнения с файлом: в меню Конфигурация выберем пункт Сравнить, объединить с конфигурацией из файла... и укажем полный файл конфигурации поставщика
.cf требуемого релиза. - Поиск дублирующихся строк: в открывшемся дереве сравнения найдем объект
РегламентированныйОтчет3НДФЛ. Мы увидим две строки: одну со стороны основной конфигурации и одну со стороны файла поставщика. - Установка соответствия объектов: вызовем контекстное меню правой кнопкой мыши на строке отчета и воспользуемся командами:
- Если объект уже ошибочно сопоставлен с другим элементом, нажмем Отменить соответствие объектов.
- Выделим отчет в левой части и отчет в правой части, затем выберем команду Установить соответствие объектов.
- Объединение конфигураций: после того как объект схлопнулся в одну строку, снимем флажки с тех объектов, которые не должны обновляться, либо оставим типовую настройку и нажмем кнопку Выполнить.
- Обновление конфигурации поставщика: перейдем в меню Конфигурация — Поддержка — Настройка поддержки и обновим конфигурацию поставщика до целевой версии, чтобы правила поддержки оставались консистентными.
Способ 2. Быстрое устранение ссылок через временное переименование и глобальную замену
Если обновление выполняется в условиях ограниченного времени, либо доступен только файл обновления .cfu, можно воспользоваться инженерным обходным путем. Его суть заключается в принудительном разрыве связей с удаляемым дублем.
Разберем данный алгоритм по шагам:
- Анализ признака поддержки: откроем дерево метаданных основной конфигурации. Убедимся, что конфигурация открыта для редактирования с сохранением поддержки. Найдем дублирующийся отчет
РегламентированныйОтчет3НДФЛ, который не имеет связи с поставщиком. - Временное переименование: изменим имя проблемного отчета, добавив в конец уникальный суффикс, например:
РегламентированныйОтчет3НДФЛ_$. - Попытка локального удаления: попробуем удалить переименованный объект из дерева метаданных конфигуратора. Платформа выдаст предупреждение о наличии ссылок в модулях и свойствах конфигурации.
- Глобальная замена ссылок: перейдем в меню Правка — Глобальная замена...:
- В поле Искать укажем:
РегламентированныйОтчет3НДФЛ_$. - В поле Заменить на укажем исходное имя:
РегламентированныйОтчет3НДФЛ. - В области поиска отметим только Модули.
- Нажмем Заменить все.
- Удаление бессылочного объекта: вернемся к объекту с суффиксом и удалим его. Теперь, когда ссылки в коде ведут на корректное типовое имя, удаление пройдет успешно.
- Повторный запуск обновления: запустим процедуру обновления конфигурации через поддержку заново — конфликт исчезнет, так как старый объект больше не блокирует процесс.
Способ 3. Очистка ссылок в свойствах объектов метаданных
Иногда ошибка вызвана тем, что старый отчет жестко зафиксирован в структурных объектах конфигурации. Выясним причину, по которой конфигуратор считает объект занятым:
- В дереве метаданных нажмем правой кнопкой мыши на старом отчете и выберем пункт Поиск ссылок на объект.
- Проанализируем окно результатов. Чаще всего блокирующими элементами являются:
- Подсистемы: отчет включен в состав командного интерфейса регламентированной отчетности.
- Роли: на объект назначены явные права чтения и просмотра.
- Общие команды: отчет выбран в качестве типа параметра команды.
- Вручную снимем галочки использования старого отчета в найденных ролях и подсистемах. После исключения объекта из состава метаданных повторим процесс обновления конфигурации.
Способ 4. Полная загрузка конфигурации (для типовых конфигураций)
Если конфигурация находится на поддержке без доработок (или все доработки вынесены в расширения), наиболее надежным способом является полная загрузка конфигурации из файла:
- Получим файл типовой конфигурации
.cf нужного релиза из дистрибутива поставщика. - Перейдем в меню Конфигурация — Загрузить конфигурацию из файла... и укажем файл
.cf. - Применим изменения клавишей
F7. Данный механизм полностью перезаписывает структуру метаданных информационной базы, восстанавливая оригинальные UUID всех типовых объектов без необходимости ручного маппинга.
Действия в режиме «1С:Предприятие» после обновления
После успешного обновления конфигурации базы данных обязательно выполним следующие действия в пользовательском режиме:
- Запустим систему в режиме 1С:Предприятие от имени пользователя с административными правами.
- Перейдем в раздел Отчеты — Регламентированные отчеты.
- Откроем справочник регламентированных отчетов и запустим служебную команду обновления списка отчетов. Это позволит внутренним регистрам подсистемы отчетности корректно связать справочные записи с актуальным объектом метаданных.