При обновлении нетиповых конфигураций «1С:Предприятие» разработчики часто сталкиваются с дилеммой: как перенести изменения на новый релиз так, чтобы полностью исключить риск потери накопленных пользовательских данных. Типичный пример — в документ добавлен пользовательский реквизит (например, СуммаДокумента), конфигурацию нужно обновить на актуальный релиз, но стандартное сравнение и объединение кажется разработчику слишком рутинным процессом.
В этой статье мы подробно разберем, почему простая загрузка измененного файла конфигурации (.cf) приводит к затиранию данных, как работает механизм уникальных идентификаторов платформы и какие практические способы существуют для решения этой задачи — от хитрого лайфхака с буфером обмена до современных стандартов разработки с использованием расширений.
Давайте разберем ситуацию, которая часто приводит к катастрофической потере данных у начинающих специалистов. Предположим, вы решили пойти по «простому» пути:
СуммаДокумента) и типом данных..cf.В результате этой операции вы обнаружите, что колонка СуммаДокумента в базе данных полностью очистилась. Почему это произошло, ведь имена объектов полностью совпадали?
Дело в том, что платформа «1С:Предприятие» при работе с базой данных (будь то MS SQL Server, PostgreSQL или файловая СУБД) опирается не на строковые имена объектов метаданных, а на их внутренние 128-битные уникальные идентификаторы — UUID (GUID).
Когда вы создаете реквизит вручную в старой базе, платформа генерирует для него случайный UUID (например, a1b2c3d4-e5f6-...). В СУБД создается физическая колонка с системным именем (например, _Fld12345), жестко связанная с этим UUID. Когда вы создаете точно такой же реквизит вручную в новой базе, платформа генерирует совершенно другой UUID.
При использовании операции «Загрузить конфигурацию из файла» происходит полная замена структуры метаданных:
_Fld12345 со всеми данными удаляется из таблицы СУБД._Fld12346).Ниже мы рассмотрим рабочие и безопасные методы, которые позволят вам избежать этой проблемы.
Малоизвестный, но крайне эффективный лайфхак, который позволяет обойти ограничение генерации новых UUID. Когда вы копируете объект метаданных в дереве конфигуратора с помощью стандартного сочетания клавиш Ctrl+C, платформа помещает в системный буфер обмена XML-описание этого объекта, внутри которого зафиксирован его оригинальный UUID.
Проанализируем пошаговый алгоритм безопасного переноса реквизита:
СуммаДокумента. Нажмите Ctrl+C на клавиатуре (или выберите в контекстном меню пункт «Копировать»).Ctrl+V (Вставить).При таком способе переноса реквизит в новой конфигурации получит абсолютно идентичный UUID, который был в старой базе. После этого вы действительно сможете сохранить новую конфигурацию в файл .cf и загрузить его в старую базу — платформа сопоставит объекты по UUID, и данные в СУБД останутся нетронутыми.
Важное предупреждение: Метод полной загрузки конфигурации через .cf лишает вашу базу корректной поддержки поставщика. Прибегать к нему на регулярной основе крайне не рекомендуется. Используйте его только в крайних случаях и обязательно делайте резервную копию перед обновлением!
Если вы хотите действовать по стандартам фирмы «1С», вам следует отказаться от идеи «тупой» загрузки файлов конфигурации и использовать встроенный механизм сравнения и объединения. Рассмотрим, как это сделать правильно:
.cf файл нового релиза.СуммаДокумента был добавлен только в рабочей базе, в окне объединения напротив него будет стоять галочка на добавление/сохранение, а сам реквизит не затрется, так как в новом релизе его просто нет.Этот метод гарантирует, что все связи с поставщиком обновлений будут сохранены, а структура базы данных не будет повреждена.
Начиная с версии платформы «1С:Предприятие 8.3.12», механизм расширений стал основным стандартом для кастомизации любых типовых решений. Это полностью избавляет разработчиков от необходимости снимать конфигурацию с поддержки и вручную переносить реквизиты при каждом обновлении.
Выясним, как перенести наш реквизит СуммаДокумента в расширение:
РеализацияТоваровУслуг) в расширение, нажав на него правой кнопкой мыши и выбрав «Добавить в расширение».СуммаДокумента именно там.В чем преимущество такого подхода при обновлении?
Основная конфигурация вашей базы остается абсолютно типовой, находясь на полной поддержке («на замке»). Вы сможете обновлять её стандартными файлами обновлений (.cfu) в автоматическом режиме за пару кликов. Данные реквизита расширения физически хранятся платформой в СУБД в специальных связанных таблицах и никак не страдают при обновлении основной конфигурации.
Если ваша конфигурация разработана на основе Библиотеки Стандартных Подсистем (БСП) — к таким относятся БП 3.0, ЗУП 3.1, УТ 11, ERP, УНФ — то добавлять реквизиты через Конфигуратор зачастую вообще не требуется.
Администратор или разработчик может решить эту задачу прямо в режиме «1С:Предприятие»:
СуммаДокумента, укажите тип данных (Число, Строка и т.д.) и настройте видимость на форме.Платформа сама выведет это поле в интерфейс пользователя, а данные будут надежно записываться в специальный регистр сведений. При этом конфигурация остается на 100% типовой, что гарантирует легкое и быстрое обновление в будущем.