1С как обратиться к макету внешней обработки

После массового перехода на управляемые формы в 1С 8.3 у многих программистов возникла трудность при получении макета внешней обработки или отчета. Ранее для этого использовалась функция «ПолучитьМакет()», но в режиме управляемого приложения данная конструкция перестала работать на клиенте. Что же делать?

Ответ прост — необходимо использовать следующую функцию:

Или более лаконично:

Примечание: если необходимо получить макет обработки — используйте вместо «Обработка» значение «Отчет».

Если отчёт является внешним, то к его объекту нельзя обратиться методом «Отчеты.ИмяОтчёта». Также нет возможности использовать реквизит ОтчетОбъект , который применяется в неуправляемых формах.

Однако возможность обратиться к объекту есть. Для этого необходимо в настройках формы посмотреть, существует ли реквизит «Объект» для внешней обработки или «Отчет» для внешнего отчета. Этот реквизит создается автоматически при создании новой формы с типом «Форма отчета» или «Форма обработки» (выбирать следует один из этих вариантов, а не «Произвольная форма»).

Далее применяем такую конструкцию:

В модуле формы внешнего отчёта:

В модуле формы внешней обработки:

В дальнейшем, применительно к внешнему отчёту, мы можем через установленную нами переменную ОтчетОбъект получить макет Системы компоновки данных:

"ОсновнаяСхемаКомпоновкиДанных" – это имя макета СКД.

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

Как получить макет на клиенте?

В этом нам поможет отдельная функция, работающая на стороне сервера. С помощью функции «РеквизитФормыВЗначение()» мы передадим объект в виде нашей внешней обработки в серверную функцию и там получим макет. В качестве реквизита формы выступает основной реквизит, выделенный на самой форме жирным шрифтом. Подробный код функции содержит следующие строки:

Читайте также:  Java длина строки массива

Передача объекта с клиентской формы на сервер;

Получение макета по наименованию. Наименование задается при добавлении макета во внешнюю обработку;

Возвращаем полученный макет на клиент;

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock detector