Как включить документ из расширения в состав определяемых типов для расчетов?

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

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

Давайте подробно проанализируем эту ситуацию, разберем возможные пути решения и определим, когда стоит использовать расширения, а когда — изменения основной конфигурации.

Понимание проблемы: определяемые типы и расширения

Определяемые типы — это мощный механизм 1С, позволяющий объединять множество ссылочных типов под одним именем. Когда типовой механизм (например, регистр расчетов или справочник ОбъектыРасчетов) ожидает ссылку на документ, он проверяет, входит ли тип этого документа в состав соответствующего определяемого типа.

Основная проблема заключается в следующем:

  1. Расширения конфигурации предназначены для добавления функционала без изменения основной структуры метаданных.
  2. До появления платформы версии 8.3.20 расширения не могли изменять состав ОпределяемыхТипов, заданных в основной конфигурации.
  3. Даже если технически «взломать» эту возможность, изменение состава типов для ключевых объектов системы может привести к непредсказуемым последствиям при обновлении типовой конфигурации.

Решение 1: использование возможностей платформы 8.3.20 и выше

Если ваша организация использует современную версию платформы (8.3.20 или выше) и режим совместимости конфигурации позволяет это сделать, вы получаете возможность расширять ОпределяемыеТипы непосредственно в расширении. Это самый чистый путь, который позволяет не снимать конфигурацию с поддержки.

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

Например, в версии 8.3.18 был переименован параметр Параметры метода СтрокаСЧислом в ФорматнаяСтрокаЧисла. Если в типовой конфигурации используются методы, чье поведение изменилось в новых версиях платформы, автоматическое обновление режима совместимости может повлечь за собой ошибки исполнения кода.

Решение 2: добавление объекта в основную конфигурацию

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

Многие разработчики опасаются, что любое изменение основной конфигурации делает систему «необновляемой». Однако давайте разберем это утверждение с практической точки зрения:

Практические рекомендации по сопровождению системы

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

  1. Минимизируйте использование расширений для структуры данных. Используйте расширения для изменения алгоритмов (процедур и функций) или добавления печатных форм. Если задача требует изменения структуры данных (например, добавления типов в определяемые типы), лучше внести это изменение в основную конфигурацию один раз.
  2. Управляйте определяемыми типами. Если вы вносите изменения в определяемые типы в основной конфигурации, документируйте это. При установке обновлений от вендора, 1С предложит вам либо принять изменения поставщика, либо оставить свои. Вы сможете осознанно объединить свои типы с типовыми.
  3. Тестируйте изменения режима совместимости. Если вы решили поднять режим совместимости, выполняйте этот процесс на тестовой базе. Прогоняйте через Глобальный поиск все методы, которые могли изменить свою сигнатуру или логику работы в новой версии платформы.
  4. Оцените трудозатраты. Попытка обойти ограничения расширения часто занимает больше времени, чем грамотное внесение изменений в основную конфигурацию с последующим качественным документированием. В долгосрочной перспективе это экономит время на отладке ошибок «радостных клиентов», которые могут возникнуть из-за скрытых конфликтов в расширениях.

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

← На главную