Как исправить неправильное сопоставление регистров при обновлении 1С:Бухгалтерия КОРП 3.0?

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

При обновлении нетиповых (доработанных) конфигураций «1С:Предприятие 8» специалисты часто сталкиваются с ситуацией, когда механизм сравнения и объединения некорректно сопоставляет объекты метаданных. Особенно остро эта проблема проявляется в регистрах сведений, когда «живой» регистр из основной конфигурации сопоставляется с регистром, имеющим префикс Удалить в новой версии. В этой статье мы подробно разберем, почему возникает этот «перекос», чем он опасен и как восстановить правильное сопоставление объектов вручную.

Проанализируем причину проблемы: UUID против Имен

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

  1. Имя объекта: Строковое представление, которое мы видим в дереве метаданных (например, РегистрСведений.ЗамерыВремени).
  2. Уникальный идентификатор (UUID): Скрытый 128-битный номер, который присваивается объекту при его создании.

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

Когда мы запускаем обновление через «Сравнение и объединение», платформа видит, что у объекта в основной базе и объекта в файле обновления совпадают UUID, и автоматически «схлопывает» их, несмотря на разные имена. В результате ваш рабочий регистр ЗамерыВремени оказывается связанным с УдалитьЗамерыВремени. Если оставить всё как есть, данные в вашей базе будут переименованы в «удаляемые», а для работы системы создастся новый пустой регистр, что приведет к потере работоспособности функционала или утрате истории данных.

Разберем ситуацию на примере регистра ЗамерыВремени

Рассмотрим подробнее конкретный пример из практики обновления Бухгалтерии КОРП 3.0. Регистр ЗамерыВремени является частью подсистемы оценки производительности. В новых релизах структура этой подсистемы претерпела значительные изменения для поддержки облачных технологий и более детальной аналитики.

В процессе последовательного обновления (через файлы .cfu) происходит следующая трансформация:

Если ваша конфигурация находится «на замке» (типовая), платформа сделает это автоматически. Но если в конфигурацию внесены изменения и вы обновляетесь через ручное сравнение, автоматика может сопоставить ваш рабочий ЗамерыВремени с новым пустым ЗамерыВремени (по имени) или со старым переименованным (по UUID). Нам важно проконтролировать этот процесс.

Инструкция по ручному сопоставлению объектов

Если вы обнаружили «путаницу» в окне сравнения и объединения, выполним следующие шаги для восстановления корректной структуры. Пройдем по этапам:

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

Риски и последствия ошибок сопоставления

Проанализируем ситуацию, которая возникнет, если проигнорировать неверное сопоставление. Предположим, мы согласились с тем, что рабочий регистр ЗамерыВремени сопоставился с УдалитьЗамерыВремени.

Что произойдет после нажатия кнопки «Выполнить»?

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

Работа с техподдержкой и рекомендации

Многие пользователи опасаются обращаться в техподдержку «1С» (v8@1c.ru), если конфигурация доработана. Рассмотрим, как правильно действовать в таких случаях. Специалисты поддержки действительно могут отказать в анализе, если увидят снятый «замок» с конфигурации. Чтобы получить качественную помощь, попробуйте воспроизвести проблему на чистой типовой конфигурации того же релиза. Если на типовой базе при обновлении тем же .cfu файлом возникает аналогичный перекос — это явная ошибка релиза, которую разработчики обязаны исправить.

Золотое правило обновления: Всегда делайте резервную копию перед началом сравнения. Если после обновления вы обнаружили, что данные в каком-то регистре исчезли, проверьте, не появился ли в системе новый регистр с похожим именем и префиксом Удалить. Скорее всего, ваши данные остались там, и потребуется либо ручной перенос, либо откат и повторное обновление с правильным ручным сопоставлением объектов.

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

← На главную