Как задать реквизиту составной тип СправочникСсылка или ДокументСсылка в расширении 1С?

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

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

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

Выясним причину: влияние режима совместимости

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

Если в вашей конфигурации установлен режим совместимости "Версия 8.3.17" или ниже, платформа жестко блокирует этот функционал в Конфигураторе. Базы данных в старых форматах и версиях просто не имели нужной структуры таблиц для надежного хранения и обработки таких комбинированных записей. Попытка присвоить реквизиту с таким типом ссылку на новый справочник из расширения приводила бы к тому, что система сбрасывала значение в Неопределено.

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

Инструкция по настройке составного типа

Рассмотрим по шагам, как правильно настроить реквизит после того, как вопрос с режимом совместимости решен:

  1. Откройте свойства нужного реквизита в Конфигураторе.
  2. В поле Тип установите галочку Составной тип данных.
  3. В появившемся дереве типов найдите и отметьте галочками СправочникСсылка и ДокументСсылка.
  4. Платформа автоматически учтет все справочники и документы, созданные внутри вашего расширения, и добавит их в этот обобщенный тип.

Дополнительные возможности платформы (с версии 8.3.20)

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

Пример программного получения всех типов:


МассивТиповСправочников = Справочники.ТипВсеСсылки().Типы();
Для Каждого ТекущийТип Из МассивТиповСправочников Цикл
    // В этом цикле теперь будут обрабатываться и типы из расширений
    Сообщить(Строка(ТекущийТип));
КонецЦикла;

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

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

← На главную