Обновление нетиповых конфигураций или баз, находящихся на поддержке сразу у нескольких поставщиков (например, «1С:Управление торговлей» + отраслевой модуль), — это задача, требующая от разработчика глубокого понимания внутренних механизмов платформы. Часто возникают ситуации, когда после загрузки нового файла конфигурации .cf версии поставщиков не обновляются, а данные в справочниках и вовсе исчезают. Разберем подробно, почему это происходит и как правильно проводить такие манипуляции.
Прежде всего, проанализируем ситуацию с точки зрения архитектуры 1С. В любой информационной базе одновременно существуют три «слоя» метаданных, и непонимание различий между ними часто приводит к ошибкам:
F7 (Обновить конфигурацию базы данных) или через меню «Конфигурация — Обновить конфигурацию базы данных».Рассмотрим подробнее типичную ошибку: разработчик загружает .cf, видит, что основная конфигурация изменилась, но при попытке выгрузить конфигурацию поставщика получает старую версию. Выясним причину: выгрузка конфигурации поставщика часто обращается к данным, которые еще не были зафиксированы в структуре БД или не были корректно сопоставлены при загрузке «целого» файла. Чтобы изменения вступили в силу окончательно, необходимо выполнить реструктуризацию (обновление БД). Только после этого платформа окончательно сопоставит версии в системных таблицах.
Ситуация, когда после обновления справочники оказываются пустыми, — самый страшный сон администратора базы данных. Разберем, почему это происходит. Платформа 1С идентифицирует объекты метаданных (справочники, документы, реквизиты) не по их именам (например, Справочник.Контрагенты), а по внутренним уникальным идентификаторам — GUID (UUID).
Рассмотрим ситуацию по шагам:
Справочник1 имеет идентификатор ID_AAA.Справочник1 имеет идентификатор ID_BBB.Проанализируем, как этого избежать. При выполнении обновления (F7) платформа выводит окно «Реорганизация информации». Если в списке изменений вы видите действие «Удаление» для объекта, который на самом деле должен просто обновиться, — немедленно остановитесь! Это означает, что идентификаторы в вашей базе и в файле обновления не совпадают.
Вместо рискованного метода «Загрузить конфигурацию из файла», который полностью затирает информацию о поддержке и может нарушить связи, рассмотрим более надежный путь. Если вам прислали совмещенную сборку (УТ + Модуль XXX), выполните следующие действия:
Используйте механизм «Конфигурация — Сравнить, объединить с конфигурацией из файла». Этот метод позволяет контролировать процесс сопоставления объектов. В открывшемся окне обязательно проверьте настройки:
Важно: Если вы видите, что объекты не сопоставились автоматически (стоят галочки на удаление и добавление), попробуйте сопоставить их вручную по именам. Однако помните, что это не изменит GUID в вашей базе, а лишь перенесет свойства объектов.
Для корректного обновления версий поставщиков (чтобы в окне «Настройка поддержки» цифры версии сменились на актуальные), используйте путь «Конфигурация — Поддержка — Обновить конфигурацию». В качестве файла обновления выберите полученный .cf. Платформа проанализирует файл, обнаружит там конфигурации поставщиков и предложит обновить их версии.
После объединения обязательно выполните обновление базы данных (F7). Если после этого вы все еще видите странное поведение (например, отчеты работают по-старому), проанализируем ситуацию с кэшем. Кэш 1С может хранить старые описания типов и структур. Рекомендуется очистить локальный кэш пользователя и, в случае клиент-серверного варианта, перезапустить службу сервера 1С.
Иногда требуется принудительно обновить именно конфигурацию поставщика. Для этого выполним следующий прием:
// Пример логики обновления, если штатные средства дают сбой:
// 1. Снять с поддержки проблемный объект.
// 2. Снова поставить на поддержку через "Сравнить/Объединить",
// выбрав в окне объединения постановку на поддержку.
Если выгрузка конфигурации поставщика (второй, XXX) все равно показывает старую версию, это может означать, что сам файл .cf, присланный поставщиком, был собран некорректно (в нем обновлена основная конфигурация, но не обновлен эталонный слепок внутри). В этом случае единственный путь — запросить корректную поставку модуля или обновить его отдельно поверх основной конфигурации.
Подведем итог нашего анализа. Использование команды «Загрузить конфигурацию из файла» — это «грубый» метод, который хорош для идентичных баз (например, перенос разработки из копии в рабочую). Для полноценного обновления версий поставщиков и сохранения данных:
.dt) перед началом работ.Соблюдение этих правил позволит вам сохранить целостность базы и обеспечить корректную работу всех модулей системы.