Как устранить несовпадение идентификаторов объектов при обновлении 1С:Документооборот?

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

При обновлении типовой конфигурации 1С:Документооборот 8 КОРП, особенно начиная с редакции 2.1.12.2, специалисты часто сталкиваются с ситуацией, когда платформа не может автоматически сопоставить объекты метаданных. Даже если конфигурация находится на поддержке и изменения в нее не вносились, в окне сравнения и объединения может появиться дерево объектов, предлагающее удалить существующие таблицы и добавить новые с такими же именами. Это критическая ситуация, так как простое принятие предложенных изменений приведет к безвозвратной потере данных в этих таблицах.

В этой статье мы подробно разберем причины возникновения такой проблемы, проанализируем механизмы работы платформы с идентификаторами и рассмотрим несколько способов восстановления корректной связи между основной конфигурацией и конфигурацией поставщика.

Причина возникновения проблемы: конфликт UUID

Прежде всего, выясним причину такого поведения системы. Для платформы «1С:Предприятие» имя объекта (например, РегистрСведений.ОчередьОбновленияПрав) является лишь «человекочитаемым» представлением. Внутри базы данных каждый объект жестко привязан к уникальному внутреннему идентификатору — UUID (или GUID).

Рассинхронизация этих идентификаторов обычно происходит в следующих случаях:

  1. Некорректное обновление в прошлом: Если вместо стандартной процедуры «Обновить конфигурацию» была выполнена «Загрузка конфигурации из файла» (.cf) от другой базы или другого релиза, который не был прямым наследником текущего.
  2. Специфика релиза 2.1.12: В «Документообороте» этой версии происходило масштабное обновление встроенной Библиотеки стандартных подсистем (БСП). Разработчики могли пересоздать некоторые объекты (особенно регистры, связанные с правами доступа), что привело к изменению их идентификаторов в поставке.
  3. Технические сбои: Ошибки при выгрузке/загрузке базы или некорректное использование инструментов прямого редактирования таблиц SQL.

Если UUID объекта в вашей основной конфигурации не совпадает с UUID в файле обновления, платформа считает их разными объектами. Именно поэтому она предлагает удалить «старый» регистр и создать «новый».

Способ 1: Ручное сопоставление объектов в окне обновления

Проанализируем самый простой, но требующий внимательности метод. Если при попытке обновления вы видите таблицу с расхождениями, где объекты помечены как «удаляемые» в основной конфигурации и «добавляемые» из конфигурации поставщика, попробуйте выполнить сопоставление вручную.

Для этого выполним следующие действия:

  1. В окне сравнения и объединения найдем нужный объект.
  2. Выделим объект в колонке основной конфигурации и соответствующий ему объект в колонке поставщика.
  3. Нажмем правую кнопку мыши и выберем пункт «Установить соответствие объектов».

Если платформа позволяет это сделать (объекты имеют совместимые типы), связь будет восстановлена на время текущего объединения. Однако этот метод не всегда исправляет проблему UUID «навсегда» и может потребовать повторения при следующем обновлении.

Способ 2: Полная переустановка конфигурации поставщика

Если ручное сопоставление не помогает или объектов слишком много, рассмотрим более радикальный, но эффективный метод «лечения» поддержки. Важно: выполняйте все действия только на копии базы данных! Для автоматизации создания резервных копий и подготовки тестовых сред удобно использовать программу для автоматического архивирования и обновления баз 1С.

Алгоритм действий следующий:

  1. Снимите конфигурацию с поддержки полностью (Конфигурация — Поддержка — Настройка поддержки — Снять с поддержки).
  2. Выгрузите конфигурацию в файл (Конфигурация — Сохранить конфигурацию в файл...). Назовем его custom.cf.
  3. Найдите «чистый» дистрибутив (полный .cf) того релиза, на котором вы сейчас находитесь (например, 2.1.12.2).
  4. Выполните «Загрузить конфигурацию из файла», выбрав чистый файл поставщика. Внимание: При этом платформа может предупредить о потере данных, если структуры сильно отличаются. Если вы уверены, что релиз совпадает, UUID должны встать на место.
  5. После загрузки база будет на полной поддержке. Теперь выполните «Сравнить и объединить» с вашим файлом custom.cf, чтобы вернуть внесенные ранее доработки, если они были.

Способ 3: Метод последовательного наката через промежуточные релизы

Разберем ситуацию, когда пользователь пытается обновиться сразу через несколько версий, например, с 2.1.12.2 сразу на 2.1.25.5. Как отмечалось в обсуждении, такой «скачок» часто приводит к потере цепочки идентификаторов.

Рекомендуется придерживаться строгой последовательности:

Техническая диагностика через SQL и кэш

Иногда проблема кроется не в самих данных, а в «фантомных» записях в системных таблицах базы данных. Рассмотрим технические приемы очистки:

1. Очистка кэша конфигуратора. Платформа может кэшировать структуру конфигурации поставщика. Рекомендуется запустить конфигуратор с параметром:

/ClearConfigCache

2. Проверка таблицы Config. В клиент-серверном варианте можно проанализировать таблицу Config (или ConfigSave). В ней хранятся записи конфигурации поставщика. Если там остались следы от «битых» обновлений, это будет мешать нормальной работе. Одним из признаков является наличие нескольких записей с типом vrs_storage.

3. Использование справочника «Идентификаторы объектов метаданных». После любого сложного обновления в «1С:Документообороте» обязательно нужно убедиться, что внутренние данные программы синхронизированы с метаданными. Запустите базу с параметром:

ЗапуститьОбновлениеИнформационнойБазы

Это инициирует выполнение процедур БСП, которые пересчитают идентификаторы в справочнике Идентификаторы объектов метаданных.

Особенности обновления регистров сведений в ДО 8 КОРП

Проанализируем конкретный пример из практики. В релизах линейки 2.1.24 и выше некоторые регистры (например, связанные с правами) могли быть принципиально изменены. Если вы видите, что при обновлении платформа хочет удалить старый регистр и добавить новый, проверьте его состав.

Если в новом объекте поставщика изменились типы измерений или состав ресурсов, автоматическое сопоставление может быть невозможно. в этом случае:

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

Таким образом, проблема «невидимых» расхождений при обновлении 1С:Документооборот чаще всего решается либо принудительным ручным сопоставлением в окне сравнения, либо процедурой полной перезагрузки конфигурации поставщика соответствующего релиза для восстановления целостности UUID.

← На главную