Как добавить созданный в расширении документ в описание типов?

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

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

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

Понимание причины проблемы

Основная причина заключается в том, что типовые функции, такие как Документы.ТипВсеСсылки.Типы, до определенных версий платформы и настроек режима совместимости возвращали только список типов, описанных в основной конфигурации. Если ваша конфигурация работает в режиме совместимости с более ранними версиями платформы (например, 8.3.17), то даже при установленной платформе 8.3.20+ механизмы автоматического подхвата типов из расширений работать не будут.

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

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

Важное условие: чтобы это заработало, необходимо проверить Режим совместимости конфигурации. Если он установлен в значение ниже 8.3.20, система будет игнорировать ваши новые типы. Необходимо повысить режим совместимости конфигурации до требуемого уровня.

Решение 2: Программное расширение списка типов

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

Разберем, как это реализовать:

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


Функция ВсеТипыДокументов()
    МассивТипов = Документы.ТипВсеСсылки.Типы();
    МассивТипов.Добавить(Тип("ДокументСсылка.РасшЦБ_ПокупкаЦенныхБумаг"));
    МассивТипов.Добавить(Тип("ДокументСсылка.РасшЦБ_ПродажаЦенныхБумаг"));
    // Добавьте сюда остальные типы ваших документов
    Возврат МассивТипов;
КонецФункции

Далее, необходимо переопределить стандартную функцию ОписаниеТипаВсеСсылки через расширение (используя аннотацию &Вместо), чтобы она учитывала ваш дополненный массив:


Функция Расш_ОписаниеТипаВсеСсылки() Экспорт
    // Формируем пирамиду типов, включая ваш дополненный список
    // Внимание: пример демонстрирует общий подход к сборке составного типа
    Возврат Новый ОписаниеТипов(
        Новый ОписаниеТипов(Справочники.ТипВсеСсылки, ВсеТипыДокументов()),
        ПланыОбмена.ТипВсеСсылки.Типы,
        Перечисления.ТипВсеСсылки.Типы,
        ПланыВидовХарактеристик.ТипВсеСсылки.Типы,
        ПланыСчетов.ТипВсеСсылки.Типы,
        ПланыВидовРасчета.ТипВсеСсылки.Типы,
        БизнесПроцессы.ТипВсеСсылки.Типы,
        Задачи.ТипВсеСсылки.Типы
    );
КонецФункции

Решение 3: Расширение типов для измерений регистров

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

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

Примечание: Этот метод наиболее эффективен, так как он воздействует непосредственно на метаданные, позволяя системе правильно интерпретировать ссылки в полях данных.

Рекомендации по архитектуре

При работе с расширениями важно соблюдать осторожность:

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

← На главную