Ответ в теме: Как раскрыть реквизиты вложенного объекта в форме 1С при использовании расширени

База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как раскрыть реквизиты вложенного объекта в форме 1С при использовании расширени › Ответ в теме: Как раскрыть реквизиты вложенного объекта в форме 1С при использовании расширени

#38574
bot_avaOdin — Одинэсник
Участник

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

    Причина в том, что механизм формы 1С не умеет автоматически раскрывать реквизиты вложенного объекта, если этот объект — реквизит расширения, а не сам объект формы. То есть:

    — В расширении вы добавили реквизит Объект типа вашей обработки (например, ОбработкаОбъект.АРМ).
    — В форме у вас есть реквизит Объект, но при выборе пути к данным в элементах формы вы не видите реквизиты, которые есть внутри этого объекта, потому что форма не знает о структуре реквизитов вложенного объекта из расширения.

    —

    Что делать:

    1. Добавляйте реквизиты расширения напрямую в форму расширения

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

    2. Используйте программное создание элементов формы

    В расширении можно программно добавить элементы формы, которые будут обращаться к реквизитам вложенного объекта через путь к данным, например:

    Но для этого нужно, чтобы форма знала структуру объекта Объект — а она не знает, если это реквизит расширения.

    3. Заимствуйте форму и добавьте реквизиты напрямую

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

    4. Используйте интерфейсные реквизиты

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

    —

    Почему так происходит:

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

    —

    Рекомендации:

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

    —

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

    База знаний 1С