При разработке и внедрении доработок в конфигурациях 1С (особенно тяжелых решениях уровня 1С:ERP, Комплексная автоматизация или Управление торговлей) часто возникает дилемма: каким способом переносить изменения из базы разработки в продуктивную базу данных. Вопрос становится особенно острым, если в процессе доработки из конфигурации были удалены лишние объекты или существенно переработана структура метаданных. Разберем детально, как работают механизмы платформы, в каких случаях могут быть безвозвратно удалены данные и как правильно выполнить перенос изменений.
Проанализируем поведение платформы при использовании каждого из этих двух режимов:
Данная операция выполняет полную замену основной конфигурации разработчика содержимым файла .cf. При этом конфигурация поставщика также полностью замещается версией из файла. Сама команда загрузки не затрагивает таблицы базы данных — перестройка структуры СУБД происходит позже, на этапе выполнения команды Обновить конфигурацию базы данных (горячая клавиша F7). На этом шаге платформа сравнивает новую конфигурацию с конфигурацией базы данных исключительно по внутренним уникальным идентификаторам (UUID). Если объект с определенным UUID отсутствует в загруженной конфигурации, платформа считает его удаленным.
Этот инструмент предназначен для выборочного объединения изменений. По умолчанию сопоставление объектов выполняется по их наименованиям и типам, а внутренние идентификаторы существующих объектов сохраняются. Главная особенность объединения: оно не удаляет объекты метаданных, которые присутствуют в текущей базе, но отсутствуют в файле .cf. Если из конфигурации-источника был удален справочник или документ, после сравнения и объединения в целевой базе он останется на месте.
Выясним причину, по которой разработчики иногда сталкиваются с полной очисткой справочников, документов или регистров после загрузки файла конфигурации:
Платформа 1С идентифицирует таблицы базы данных не по их строковым именам, а по внутренним UUID метаданных. Если новый объект был создан вручную в двух разных базах с совершенно одинаковым именем, синонимом и составом реквизитов, их UUID все равно будут разными. Рассмотрим сценарий:
НоменклатураПоставщиков с внутренним UUID_1, и пользователи уже заполнили его данными.UUID_2.UUID_2.F7 платформа фиксирует: объект UUID_1 удален (на уровне СУБД выполняется команда DROP TABLE со всеми данными), а объект UUID_2 — вновь создан (создается новая пустая таблица).В окне Реорганизация информации при этом появится предупреждение о физическом удалении таблицы объекта. Если подтвердить реорганизацию, данные будут безвозвратно уничтожены.
В конфигурациях, построенных на базе Библиотеки стандартных подсистем (включая ERP), физическое удаление объектов метаданных сопряжено со скрытыми системными рисками:
ИдентификаторыОбъектовМетаданных. После удаления объектов и обновления конфигурации БД первый запуск предприятия необходимо выполнять от имени администратора с монопольным доступом (или с ключом командной строки /C ЗапуститьОбновлениеИнформационнойБазы) для корректной очистки устаревших записей справочника.ОпределяемыйТип), подписках на события (Событие), планах обмена или функциональных опциях. Перед обновлением обязательно запустите синтаксический контроль и полную проверку конфигурации на поиск некорректных ссылок.Разберем по шагам, как гарантированно избежать ошибок и потери информации при переносе серьезных изменений:
.dt).Если изменения разрабатывались на базе точной копии и объекты действительно должны быть удалены — используем Загрузить конфигурацию из файла. Если же конфигурация дорабатывалась в отрыве от рабочей базы или требуется частичный перенос — используем Сравнить, объединить с конфигурацией из файла (с последующим ручным удалением ненужных объектов из дерева метаданных).
F7 и внимательно анализируем диалоговое окно Реорганизация информации. Если среди удаляемых объектов присутствуют те, данные которых должны сохраниться, немедленно отменяем операцию обновления и проверяем соответствие UUID через сравнение конфигураций.1С:Предприятие в монопольном режиме для отработки процедур обновления параметров работы программы и справочника идентификаторов метаданных БСП.