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

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

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

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

В чем кроется главная опасность: механизм UUID и структура СУБД

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

  1. Взяли чистую типовую конфигурацию нового релиза.
  2. Вручную добавили в нужный документ реквизит с точно таким же именем (например, СуммаДокумента) и типом данных.
  3. Сохранили конфигурацию в файл .cf.
  4. В рабочей базе выполнили команду Конфигурация — Загрузить конфигурацию из файла.

В результате этой операции вы обнаружите, что колонка СуммаДокумента в базе данных полностью очистилась. Почему это произошло, ведь имена объектов полностью совпадали?

Дело в том, что платформа «1С:Предприятие» при работе с базой данных (будь то MS SQL Server, PostgreSQL или файловая СУБД) опирается не на строковые имена объектов метаданных, а на их внутренние 128-битные уникальные идентификаторы — UUID (GUID).

Когда вы создаете реквизит вручную в старой базе, платформа генерирует для него случайный UUID (например, a1b2c3d4-e5f6-...). В СУБД создается физическая колонка с системным именем (например, _Fld12345), жестко связанная с этим UUID. Когда вы создаете точно такой же реквизит вручную в новой базе, платформа генерирует совершенно другой UUID.

При использовании операции «Загрузить конфигурацию из файла» происходит полная замена структуры метаданных:

Ниже мы рассмотрим рабочие и безопасные методы, которые позволят вам избежать этой проблемы.

Решение 1. Копирование через буфер обмена (лайфхак с Ctrl+C / Ctrl+V)

Малоизвестный, но крайне эффективный лайфхак, который позволяет обойти ограничение генерации новых UUID. Когда вы копируете объект метаданных в дереве конфигуратора с помощью стандартного сочетания клавиш Ctrl+C, платформа помещает в системный буфер обмена XML-описание этого объекта, внутри которого зафиксирован его оригинальный UUID.

Проанализируем пошаговый алгоритм безопасного переноса реквизита:

  1. Откройте Конфигуратор вашей старой (необновленной) рабочей базы.
  2. Найдите нужный документ и спозиционируйте курсор на вашем добавленном реквизите СуммаДокумента. Нажмите Ctrl+C на клавиатуре (или выберите в контекстном меню пункт «Копировать»).
  3. Запустите второй сеанс Конфигуратора с новой базой (актуальным чистым релизом).
  4. Перейдите к аналогичному документу в дереве метаданных, откройте его реквизиты и нажмите Ctrl+V (Вставить).

При таком способе переноса реквизит в новой конфигурации получит абсолютно идентичный UUID, который был в старой базе. После этого вы действительно сможете сохранить новую конфигурацию в файл .cf и загрузить его в старую базу — платформа сопоставит объекты по UUID, и данные в СУБД останутся нетронутыми.

Важное предупреждение: Метод полной загрузки конфигурации через .cf лишает вашу базу корректной поддержки поставщика. Прибегать к нему на регулярной основе крайне не рекомендуется. Используйте его только в крайних случаях и обязательно делайте резервную копию перед обновлением!

Решение 2. Стандартное сравнение и объединение (правильный путь)

Если вы хотите действовать по стандартам фирмы «1С», вам следует отказаться от идеи «тупой» загрузки файлов конфигурации и использовать встроенный механизм сравнения и объединения. Рассмотрим, как это сделать правильно:

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

Этот метод гарантирует, что все связи с поставщиком обновлений будут сохранены, а структура базы данных не будет повреждена.

Решение 3. Современный стандарт — перенос доработок в Расширения

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

Выясним, как перенести наш реквизит СуммаДокумента в расширение:

  1. Создайте новое расширение в меню Конфигурация — Расширения конфигурации.
  2. Добавьте документ (например, РеализацияТоваровУслуг) в расширение, нажав на него правой кнопкой мыши и выбрав «Добавить в расширение».
  3. Внутри расширения перейдите к заимствованному документу и добавьте новый реквизит СуммаДокумента именно там.

В чем преимущество такого подхода при обновлении?
Основная конфигурация вашей базы остается абсолютно типовой, находясь на полной поддержке («на замке»). Вы сможете обновлять её стандартными файлами обновлений (.cfu) в автоматическом режиме за пару кликов. Данные реквизита расширения физически хранятся платформой в СУБД в специальных связанных таблицах и никак не страдают при обновлении основной конфигурации.

Решение 4. Использование дополнительных реквизитов БСП

Если ваша конфигурация разработана на основе Библиотеки Стандартных Подсистем (БСП) — к таким относятся БП 3.0, ЗУП 3.1, УТ 11, ERP, УНФ — то добавлять реквизиты через Конфигуратор зачастую вообще не требуется.

Администратор или разработчик может решить эту задачу прямо в режиме «1С:Предприятие»:

  1. Перейдите в раздел Администрирование — Общие настройки — Дополнительные реквизиты и сведения.
  2. Выберите нужный документ и нажмите кнопку «Добавить».
  3. Задайте имя СуммаДокумента, укажите тип данных (Число, Строка и т.д.) и настройте видимость на форме.

Платформа сама выведет это поле в интерфейс пользователя, а данные будут надежно записываться в специальный регистр сведений. При этом конфигурация остается на 100% типовой, что гарантирует легкое и быстрое обновление в будущем.

← На главную