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

Коллекция окон

Последний, четвертый, способ удобен тогда, когда нужно выполнить одинаковые действия со всеми отрытыми формами.

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

Примечание

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

Коллекцию открытых окон приложения можно получить с помощью метода глобального контекста ПолучитьОкна() (листинг 3.74).

Листинг 3.74. Работа с коллекцией окон

СсылкаНаНовыйЭлемент = ДобавитьЭлементНаСервере();

Окна = ПолучитьОкна();

Для Каждого ТекущееОкно Из Окна Цикл

Если ТекущееОкно.Содержимое.Количество() Тогда

Для каждого Форма Из ТекущееОкно.Содержимое Цикл

СписокТоваров = Форма.Элементы.Найти("Список");

 

// Если есть элемент Список - обновить его

Если СписокТоваров <> Неопределено Тогда

СписокТоваров.Обновить();

 

КонецЕсли;

 

КонецЦикла;

 

КонецЕсли;

 

КонецЦикла

В этом примере коллекция открытых окон обходится в цикле. У каждого окна анализируется свойство Содержимое, в котором содержится фиксированный массив форм, размещенных на начальной странице, а также открытых в окнах клиентского приложения. Элементы этого массива имеют тип УправляемаяФорма. Свойство Содержимое для основного окна приложения (с установленным свойством Основное) всегда содержит пустой массив.

Если массив Содержимое непустой, элементы этого массива обходятся в цикле. В каждой текущей форме ищется элемент с именем Список, и если он есть, то он обновляется.

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

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

Рис. 3.100. Обновление данных во всех открытых формах

Назад: Обновление формы извне
Дальше: Глава 3.15. Оформление списков