Как правильно обновить конфигурацию 1С с несколькими поставщиками и избежать потери данных

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

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

Три состояния конфигурации: фундамент понимания

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

  1. Основная конфигурация: Это то, что мы видим и редактируем в конфигураторе. Когда вы нажимаете «Загрузить конфигурацию из файла», вы меняете именно этот слой.
  2. Конфигурация базы данных: Это рабочая структура таблиц SQL, с которой взаимодействуют пользователи. Она обновляется только после нажатия клавиши F7 (Обновить конфигурацию базы данных) или через меню «Конфигурация — Обновить конфигурацию базы данных».
  3. Конфигурация поставщика: Это эталонный слепок метаданных, который хранится внутри базы для возможности сравнения и автоматического обновления. Если у вас два поставщика, таких слепков в базе два.

Рассмотрим подробнее типичную ошибку: разработчик загружает .cf, видит, что основная конфигурация изменилась, но при попытке выгрузить конфигурацию поставщика получает старую версию. Выясним причину: выгрузка конфигурации поставщика часто обращается к данным, которые еще не были зафиксированы в структуре БД или не были корректно сопоставлены при загрузке «целого» файла. Чтобы изменения вступили в силу окончательно, необходимо выполнить реструктуризацию (обновление БД). Только после этого платформа окончательно сопоставит версии в системных таблицах.

Проблема обнуления справочников и GUID объектов

Ситуация, когда после обновления справочники оказываются пустыми, — самый страшный сон администратора базы данных. Разберем, почему это происходит. Платформа 1С идентифицирует объекты метаданных (справочники, документы, реквизиты) не по их именам (например, Справочник.Контрагенты), а по внутренним уникальным идентификаторам — GUID (UUID).

Рассмотрим ситуацию по шагам:

  1. Поставщик подготовил новую сборку, но создал некоторые объекты заново или объединил базы методом «копирования», а не «сравнения-объединения» с сохранением идентификаторов.
  2. В вашей базе Справочник1 имеет идентификатор ID_AAA.
  3. В загружаемом файле Справочник1 имеет идентификатор ID_BBB.
  4. Для платформы это два разных объекта. При обновлении конфигурации базы данных 1С решит, что старый справочник нужно удалить (вместе со всеми данными в таблице SQL!), а новый — создать (пустым).

Проанализируем, как этого избежать. При выполнении обновления (F7) платформа выводит окно «Реорганизация информации». Если в списке изменений вы видите действие «Удаление» для объекта, который на самом деле должен просто обновиться, — немедленно остановитесь! Это означает, что идентификаторы в вашей базе и в файле обновления не совпадают.

Правильный алгоритм обновления конфигурации с двумя поставщиками

Вместо рискованного метода «Загрузить конфигурацию из файла», который полностью затирает информацию о поддержке и может нарушить связи, рассмотрим более надежный путь. Если вам прислали совмещенную сборку (УТ + Модуль XXX), выполните следующие действия:

Шаг 1. Сравнение и объединение

Используйте механизм «Конфигурация — Сравнить, объединить с конфигурацией из файла». Этот метод позволяет контролировать процесс сопоставления объектов. В открывшемся окне обязательно проверьте настройки:

Важно: Если вы видите, что объекты не сопоставились автоматически (стоят галочки на удаление и добавление), попробуйте сопоставить их вручную по именам. Однако помните, что это не изменит GUID в вашей базе, а лишь перенесет свойства объектов.

Шаг 2. Обновление через настройку поддержки

Для корректного обновления версий поставщиков (чтобы в окне «Настройка поддержки» цифры версии сменились на актуальные), используйте путь «Конфигурация — Поддержка — Обновить конфигурацию». В качестве файла обновления выберите полученный .cf. Платформа проанализирует файл, обнаружит там конфигурации поставщиков и предложит обновить их версии.

Шаг 3. Реструктуризация и проверка кэша

После объединения обязательно выполните обновление базы данных (F7). Если после этого вы все еще видите странное поведение (например, отчеты работают по-старому), проанализируем ситуацию с кэшем. Кэш 1С может хранить старые описания типов и структур. Рекомендуется очистить локальный кэш пользователя и, в случае клиент-серверного варианта, перезапустить службу сервера 1С.

Работа с конфигурациями поставщика вручную

Иногда требуется принудительно обновить именно конфигурацию поставщика. Для этого выполним следующий прием:


// Пример логики обновления, если штатные средства дают сбой:
// 1. Снять с поддержки проблемный объект.
// 2. Снова поставить на поддержку через "Сравнить/Объединить", 
//    выбрав в окне объединения постановку на поддержку.

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

Выводы и рекомендации

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

Соблюдение этих правил позволит вам сохранить целостность базы и обеспечить корректную работу всех модулей системы.

← На главную