Как правильно обновлять предопределенные элементы ПВХ в 1С?

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

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

Почему возникают проблемы с предопределенными элементами?

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

Метод безопасного переноса через пустую конфигурацию

Если вы не уверены в результате автоматического сравнения и объединения, рекомендуем воспользоваться методом «чистой площадки». Этот подход позволяет изолировать изменения и проконтролировать сопоставление элементов до того, как они попадут в структуру вашей рабочей базы.

  1. Подготовка данных: Перенесите все ваши нетиповые предопределенные элементы в пустую конфигурацию с помощью штатного механизма объединения. Убедитесь, что в этой пустой конфигурации сохранена структура ваших кастомных элементов.
  2. Обновление на релиз поставщика: Выполните обновление основной конфигурации на новую версию поставщика. При выборе режима сравнения обязательно используйте опцию «Взять из файла» (конфигурации поставщика).
  3. Отложенное обновление БД: После завершения процесса сравнения и объединения не выполняйте обновление конфигурации базы данных. Это критически важно, так как на данном этапе структура еще не зафиксирована.
  4. Финальное объединение: Выполните объединение с конфигурацией из пункта 1, выбрав приоритет вашей конфигурации. Это позволит «подтянуть» ваши нетиповые элементы поверх типовых настроек.

Рекомендации по работе с приоритетами объединения

При работе в окне «Сравнение и объединение» выбор приоритета определяет судьбу ваших данных. Рассмотрим два основных сценария:

Если вы работаете с типовыми объектами, в которые были добавлены элементы, рекомендуется выбирать приоритет конфигурации поставщика. Это гарантирует, что все изменения структуры (изменение типов субконто, новые предопределенные счета) будут приняты корректно. Однако помните, что после этого ваши изменения могут затереться. Чтобы этого избежать, сначала выгрузите свои элементы в XML или отдельный CF, а после обновления восстановите их.

Как избежать потери данных при изменении типа значения

Особое внимание уделите ПВХ, у которых меняется тип значения. Если поставщик изменил тип (например, с СправочникСсылка.Контрагенты на Характеристика.ВидыСубконто), а у вас в базе уже есть документы с данными старого типа, при обновлении вы рискуете получить ошибку записи или «пустые» обороты. В таких случаях:

Разберем алгоритм программной конвертации:


// Пример логики обработки перед обновлением
Для Каждого Элемент Из СписокСтарыхЭлементов Цикл
    // Переносим ссылки на новые предопределенные элементы
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Документ.ОперацияБух ИДЕ... "; // упрощенно
    // Заменяем ссылки программно
КонецЦикла;

Лучшие практики и советы

Чтобы обновление проходило максимально гладко в будущем, старайтесь придерживаться следующих правил:

Помните, что ключ к успеху — это всегда резервная копия базы данных и наличие CF-файла поставщика. Проанализировав ситуацию, вы всегда сможете принять решение: либо позволить системе пересоздать элементы, либо вручную сопоставить идентификаторы для сохранения целостности данных.

← На главную