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

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

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #38573
      Фото аватараOdineski
      Участник

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

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

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

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

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

          Что делать:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С