При сопровождении нетиповых баз данных 1С специалисты часто сталкиваются с необходимостью вернуть доработанную конфигурацию на поддержку. Типичный сценарий: база «Бухгалтерия предприятия 3.0» находится в режиме «Редактирование с сохранением поддержки» (на всех объектах отображаются желтые кубики), в нее внесены незначительные изменения (пара справочников, документов или новых реквизитов). Задача заключается в том, чтобы вернуть «замочки» на все типовые объекты, оставив возможность редактирования только для реальных доработок.
Однако при попытке выполнить стандартную процедуру объединения или загрузки конфигурации поставщика разработчик может столкнуться с крайне опасной ситуацией: платформа при сохранении изменений (клавиша F7) инициирует масштабную реструктуризацию таблиц базы данных с удалением существующих реквизитов, справочников или документов. Это происходит из-за несовпадения внутренних уникальных идентификаторов (UUID/GUID) метаданных в основной конфигурации и конфигурации поставщика.
В этой статье мы подробно разберем природу данной проблемы, научимся ее диагностировать и рассмотрим надежные методы восстановления поддержки без риска потери накопленных данных.
Каждый объект метаданных в платформе 1С:Предприятие (будь то справочник, документ, реквизит или табличная часть) имеет два ключевых признака идентификации:
Контрагенты) — текстовое имя, видимое разработчику и пользователям._Reference123).Если в прошлом обновления конфигурации накатывались некорректно — например, через простое сравнение и объединение с файлом .cf (без использования стандартного механизма поддержки) или путем копирования объектов через буфер обмена (Ctrl+C / Ctrl+V), — внутренние UUID объектов в основной конфигурации и конфигурации поставщика начинают различаться. Внешне объекты выглядят абсолютно одинаково, но для платформы это принципиально разные сущности.
Когда вы пытаетесь загрузить «чистую» конфигурацию поставщика поверх вашей основной, платформа заменяет ваши «неправильные» UUID на «правильные» UUID поставщика. При обновлении конфигурации базы данных (F7) система видит, что старый объект исчез, а вместо него появился новый. СУБД выполняет команду удаления старой таблицы (вместе со всеми вашими данными!) и создает новую пустую таблицу.
Прежде чем предпринимать какие-либо действия, нам необходимо точно выяснить, какие объекты имеют расхождения по внутренним идентификаторам. Обычное сравнение конфигураций по умолчанию сопоставляет объекты по именам, скрывая от нас критические различия в UUID.
Проанализируем ситуацию с помощью встроенных механизмов платформы. Выполним следующие шаги по шагам:
Устанавливать соответствия по именам объектов.Поскольку мы отключили сопоставление по именам, платформа выполнит сравнение исключительно по внутренним UUID метаданных. В результате мы увидим реальную картину: все объекты, чьи идентификаторы различаются, отобразятся как удаленные в одной конфигурации и созданные в другой. Если в списке сравнения появились типовые константы, документы или справочники (например, регистр сведений ЦеныНоменклатурыДокументов), это верный сигнал того, что прямое обновление или загрузка .cf файла приведет к полной очистке данных в этих таблицах.
Если мы выяснили, что физические UUID объектов базы данных отличаются от UUID поставщика, нам необязательно физически менять идентификаторы в базе данных (что сопряжено с огромными рисками). Платформа 1С хранит связи между объектами в специальной внутренней таблице сопоставления поддержки. Мы можем заставить систему заново перестроить эти связи по именам объектов.
Рассмотрим пошагово этот безопасный алгоритм:
custom_work.cf)..cf) строго той же самой версии, которая установлена в вашей базе (например, 3.0.46.19).В случаях, когда требуется жесткое соответствие UUID основной конфигурации и конфигурации поставщика (например, для корректной работы распределенных информационных баз или сторонних утилит автоматизации), можно прибегнуть к физической замене идентификаторов в исходном коде конфигурации.
Начиная с платформы 8.3, разработчикам доступен мощный инструмент выгрузки конфигурации в файлы XML. Проанализируем, как использовать его для решения нашей проблемы:
C:\XML_Vendor).C:\XML_Custom).
<MetaDataObject>
<Catalog uuid="d3b07384-d113-4e4a-a0f1-1e24743c7b80">
<Properties>
<Name>Контрагенты</Name>
...
<Name> и заменяем значения атрибута uuid в файлах нашей доработанной конфигурации на UUID из конфигурации поставщика.Важное предупреждение: Данный метод физически меняет структуру метаданных. При первом обновлении базы данных (F7) платформа все равно инициирует реструктуризацию измененных таблиц. Применять данный способ рекомендуется только в файловых копиях баз разработки, где физически отсутствуют пользовательские данные, либо если вы планируете последующий перенос данных через универсальные обработки XML.
Если вы работаете с современными конфигурациями на управляемых формах (такими как «Бухгалтерия предприятия 3.0»), лучшим архитектурным решением будет полный отказ от изменения основной конфигурации и перевод всех доработок в Расширения конфигурации.
Выясним преимущества этого подхода:
Для реализации этого сценария создайте новое расширение, перенесите туда все добавленные реквизиты и объекты, напишите обработку для переноса данных из старых (измененных) реквизитов основной конфигурации в новые реквизиты расширения, после чего смело загружайте чистую конфигурацию поставщика.
Среди разработчиков существует старое заблуждение, что платформа 1С не позволяет массово менять правила поддержки и устанавливать «замочки» сразу на целые группы объектов (например, на все перечисления или справочники). В современных версиях платформы 1С:Предприятие 8.3 это ограничение успешно преодолено.
Чтобы быстро установить правила поддержки для множества объектов одновременно:
Справочники).Объект поставщика не редактируется и установите флажок Применить к подчиненным объектам.Shift или Ctrl, чтобы точечно установить замочки на выбранную группу элементов за один клик.Используя предложенные методики диагностики и восстановления сопоставления метаданных, мы сможем гарантировать стабильное и безопасное обновление любых нетиповых конфигураций без риска потери критически важных бизнес-данных.