Нередко разработчики сталкиваются с крайне неприятной ситуацией: в рабочую базу добавлены новые реквизиты или табличные части, пользователи уже заполнили их данными, но после очередного обновления конфигурации все накопленные сведения бесследно исчезают. Первая мысль, которая возникает в таком случае — отработал фоновый или монопольный обработчик обновления информационной базы, который «причесал» справочник и очистил поля. Однако на практике программный код типовой конфигурации здесь ни при чем. Разберем детально физические механизмы работы платформы 1С:Предприятие, выясним истинную причину проблемы и рассмотрим регламент безопасного обновления.
Главная причина затирания данных кроется в том, как платформа 1С связывает объекты конфигуратора с физическими таблицами в базе данных СУБД. Платформа идентифицирует таблицы справочников, табличные части и реквизиты не по их строковым именам (синонимам или идентификаторам метаданных), а по внутренним уникальным идентификаторам — UUID (внутренним кодам метаданных).
Рассмотрим, что происходит при типичной ошибке разработчика:
UUID и создает соответствующие колонки или таблицы в СУБД.UUID, даже если имя и тип полностью идентичны.При полной загрузке конфигурации файл целиком замещает дерево метаданных приемника. Платформа видит, что объект со старым внутренним идентификатором пропал, а вместо него появился объект с новым UUID. На этапе реструктуризации базы данных СУБД выполняет команду на удаление физической колонки или таблицы со старым идентификатором (вместе со всеми накопленными данными пользователей) и создает абсолютно пустую структуру для нового объекта.
Платформа 1С всегда предупреждает о деструктивных действиях. Проанализируем диалог, на который разработчики часто не обращают внимания в спешке — окно «Реорганизация информации», возникающее при нажатии кнопки F7 (Обновить конфигурацию базы данных).
Если реквизит или табличная часть потеряли связь по своему внутреннему идентификатору, в списке планируемых изменений напротив них появится специальный предупреждающий значок и формулировка об удалении данных (или удалении колонки/таблицы). Если вы видите пометку на удаление пользовательских полей, ни в коем случае нельзя нажимать кнопку «Принять». Необходимо немедленно отменить обновление и восстановить правильное сопоставление объектов.
Чтобы избежать подмены идентификаторов и сохранить данные пользователей, разберем по шагам корректный регламент применения доработок:
.cf. В режиме сравнения и объединения платформа сопоставляет объекты не только по внутренним идентификаторам, но и по именам, сохраняя существующие UUID целевой базы данных.F7).Если рассматривается обновление типовой конфигурации (например, переход линейки «Управление торговлей» с версии 11.0 на 11.3), важно помнить о правилах межрелизных обновлений. Прямой скачок через несколько промежуточных подверсий категорически недопустим, так как архитектура прикладных решений и Библиотеки стандартных подсистем (БСП) кардинально перерабатывается.
Обновление должно производиться строго по цепочке, рекомендованной фирмой «1С» в файле поставки. На каждом промежуточном релизе необходимо:
.cfu или .cf) с сохранением пользовательских доработок через сравнение и объединение.Чтобы исключить влияние обновлений типовой конфигурации на доработанный функционал, проанализируем архитектурные механизмы, которые рекомендует платформа:
Если реструктуризация базы данных уже завершилась с удалением информации, вернуть данные стандартными средствами текущей базы невозможно — физические записи из таблиц СУБД стерты. Рассмотрим пути восстановления:
Ссылка / УникальныйИдентификатор).Full, можно восстановить базу на момент времени непосредственно перед операцией реструктуризации (Point-in-Time Recovery), после чего выгрузить утраченные данные.