Книга: Разработка интерфейса прикладных решений на платформе "1С:Предприятие 8"
Назад: Первый вариант решения
Дальше: Резюме

Второй вариант решения

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

Установим флажок Использовать всегда для поля ЭтоГруппа в свойствах основного реквизита формы Список (рис. 4.46). Это значит, что данные этого поля будут передаваться на клиент, даже несмотря на то что в форме они нигде не отображаются. Такая возможность сделана как раз на случай только программного использования этих данных.

Теперь изменим обработчик команды ОткрытьТовар следующим образом (листинг 4.29).

Листинг 4.29. Обработчик команды «Открыть товар»

&НаКлиенте

Процедура ОткрытьТовар(Команда)

 

СсылкаНаЭлементСправочника = Элементы.Список.ТекущаяСтрока;

ПараметрыФормы = Новый Структура("Ключ", СсылкаНаЭлементСправочника);

 

Если Элементы.Список.ТекущиеДанные.ЭтоГруппа Тогда

ОткрытьФорму("Справочник.Товары.ФормаГруппы", ПараметрыФормы);

 

Иначе

ОткрытьФорму("Справочник.Товары.ФормаОбъекта", ПараметрыФормы);

 

КонецЕсли;

 

КонецПроцедуры

В этом обработчике для определения того, является ли элемент справочника группой, мы используем свойство ТекущиеДанные таблицы формы Список, отражающей данные динамического списка. И затем через точку от него обращаемся к полю ЭтоГруппа текущей строки этой таблицы.

ПРИМЕЧАНИЕ

Этот пример можно посмотреть в демонстрационной конфигурации «07 (вар. 2) Использование стандартных полей запроса в динамических списках на клиенте».

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

Рис. 4.49. Показатели производительности

ПРИМЕЧАНИЕ

Заметим, что при первом открытии формы могут быть лишние серверные вызовы за счет кеширования платформой необходимой информации о форме.

Назад: Первый вариант решения
Дальше: Резюме