Как правильно добавить свой документ в План видов характеристик и не потерять настройки при обновлении

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

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

Ограничения платформы: расширения и состав типов ПВХ

Первый вопрос, который возникает у разработчика: можно ли добавить тип документа в ПВХ без изменения основной конфигурации, используя механизм расширений? Проанализируем возможности платформы 1С:Предприятие 8.3 в отношении состава типов.

Платформа не поддерживает расширение свойства ТипЗначенияХарактеристик у заимствованных из основной конфигурации Планов видов характеристик. В расширении свойство состава типа заблокировано для редактирования. Метаданные и состав допустимых типов ПВХ жестко фиксируются на уровне схемы базы данных, поэтому динамически или программно «на лету» из кода модуля расширить допустимые типы значений характеристик без изменения метаданных в основной конфигурации штатными средствами невозможно.

Таким образом, для включения нового документа в состав типов субконто необходимо снять ПВХ с поддержки с сохранением поддержки в основной конфигурации и добавить тип флажком в свойствах объекта.

Поведение платформы при обновлении конфигурации

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

  1. Старая конфигурация поставщика (версия до обновления).
  2. Новая конфигурация поставщика (новый релиз обновления).
  3. Пользовательская конфигурация (текущая рабочая конфигурация с добавленным документом).

Рассмотрим два возможных сценария поведения системы:

  1. Поставщик не менял состав типов ПВХ: если в новом релизе свойство Тип у ПВХ не претерпело изменений со стороны разработчиков типового решения, платформа автоматически сохранит пользовательскую галочку. Конфликта не возникнет.
  2. Поставщик изменил состав типов: если в обновлении поставщик добавил или удалил какой-либо тип из ПВХ, свойство определяется как «дважды измененное». В этом случае система требует ручного сопоставления.

Риски и последствия потери типа документа

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

  1. Платформа физически удалит ссылки на данный документ из всех записей регистра бухгалтерии, где этот документ выступал в роли субконто.
  2. Значения аналитики в проводках очистятся и станут пустыми (Неопределено или пустая ссылка).
  3. Восстановить потерянные значения субконто в проводках можно будет только из резервной копии базы данных.

Регламент безопасного обновления измененного ПВХ

Чтобы исключить потерю данных, разберем по шагам правильный порядок действий при обновлении конфигурации:

  1. Создание резервной копии: всегда делайте полную копию информационной базы перед накатыванием релиза.
  2. Настройка фильтров в окне сравнения и объединения: включите фильтр «Показывать только дважды измененные свойства». Это позволит сразу увидеть объекты, в которых ваши изменения пересекаются с правками поставщика.
  3. Ручное объединение составных типов: найдите ПВХ ВидыСубконтоХозрасчетные, дважды кликните по свойству Тип. В открывшемся окне объединения типов проверьте, чтобы стояли флажки напротив всех типов поставщика и вашего нового документа.
  4. Тестирование на копии: выполняйте процедуру обновления сначала на тестовой копии рабочей базы с проверкой проводок.

Программный контроль целостности типов при запуске программы

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


// Проверяем наличие типа созданного документа в описании типов ПВХ субконто
ТипДокумента = Тип("ДокументСсылка.ИмяВашегоДокумента");
ТипыПВХ = Метаданные.ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Тип.Типы();

Если ТипыПВХ.Найти(ТипДокумента) = Неопределено Тогда
    ВызватьИсключение "Критическая ошибка метаданных: В ПВХ 'ВидыСубконтоХозрасчетные' отсутствует тип документа 'ИмяВашегоДокумента'! Обновление выполнено некорректно.";
КонецЕсли;

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

Альтернативные архитектурные решения

Если внесение изменений в типовой ПВХ нежелательно, рассмотрим альтернативные варианты реализации аналитики:

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