При разработке удобных пользовательских интерфейсов часто возникает необходимость отображать содержимое выбранного документа прямо в форме списка или обработки. Рассмотрим, как устроена работа с управляемыми формами в интерфейсе Такси, какие технические ограничения есть у платформы 1С:Предприятие и какими способами можно реализовать подобный функционал.
Разберем основные технические нюансы, с которыми сталкиваются разработчики при попытке встроить одну форму в другую:
Если задача требует отображения данных выбранного объекта на той же форме без открытия дополнительных окон (в том числе при работе через веб-клиент), проанализируем доступные архитектурные решения.
Рассмотрим вариант реализации единой управляемой формы по схеме Master-Detail. В этом случае слева размещается таблица или динамический список, а справа — пустая группа-контейнер, элементы которой создаются программно на сервере в зависимости от выбранного объекта.
Разберем алгоритм по шагам:
ГруппаОсновная. Настраиваем в ней два блока: левый — СписокДокументов, правый — ГруппаКонтейнерДеталей.ПриАктивизацииСтроки вызываем серверную процедуру для обновления правой панели.ИзменитьРеквизиты() и Элементы.Добавить().Посмотрим на пример кода обработки события активации строки:
&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
ТекущиеДанные = Элемент.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено И ЗначениеЗаполнено(ТекущиеДанные.Ссылка) Тогда
ОбновитьПанельДеталейНаСервере(ТекущиеДанные.Ссылка);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьПанельДеталейНаСервере(СсылкаНаДокумент)
// 1. Очищаем ранее созданные динамические элементы в ГруппаКонтейнерДеталей
// 2. Формируем массив удаляемых/добавляемых реквизитов формы через ИзменитьРеквизиты()
// 3. Создаем элементы управления через Элементы.Добавить() и связываем их с реквизитами
КонецПроцедуры
Если вы работаете с подсимой Анкетирование из Библиотеки Стандартных Подсистем (БСП), можно использовать штатные серверные процедуры построения состава вопросов, передавая созданную группу формы в качестве родительского элемента.
Выясним особенности использования HTML-контейнера. Если структура документа является сложносоставной или произвольной, в правой части управляемой формы можно разместить элемент управления с видом Поле HTML документа.
ПриНажатии поля HTML.Этот подход гарантирует стабильную работу во всех клиентах: тонком клиенте под Windows и Linux, а также в веб-клиенте.
Проанализируем еще один способ — проектирование специальной обработки «Рабочее место оператора». Вместо стандартной формы элемента документа создается единая управляемая форма, сочетающая логику навигации и пошаговый интерфейс (wizard).
Для переключения между шагами документа или разделами анкеты используется элемент формы Страницы. При выборе объекта в левой части формы правая панель переключается на нужную страницу или программно заполняет данные на страницах текущей формы без вызова сторонних окон.
Прямо встроить стандартную форму документа в форму списка или программно закрепить окно в интерфейсе Такси средствами языка 1С невозможно. Для решения этой задачи рекомендуется либо обучить пользователей визуальному закреплению окон, либо спроектировать единую форму с динамической генерацией элементов или полем HTML-документа.