Приветствую Вас ГостьСуббота, 18.05.2024, 11:25

Каталог статей


Обновить список объектов в динамической форме после изменения/создания объекта

Для обновления динамического списка после добавления объекта, который должен попасть в этот список, можно выполнить процедуру ОповеститьОбИзменении(<Ссылка>) или ОповеститьОбИзменении(<ИзмененныйТип>). В первом случае создается оповещение для динамического списка для обновления по объекту, во втором по типу объектов

Например ОповеститьОбИзменении(Тип("ДокументСсылка.ИнвентаризацияРасчетовСАбонентами"));

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

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

Если данные изменяются в какой-либо другой форме (например, в форме объекта), то необходимо организовать обновление списка через оповещение. Для этого в каждой форме объекта, данные которого выводятся в динамическом списке, следует реализовать обработчик события ПослеЗаписи с использованием метода Оповестить:

Оповестить ("Запись_<ИмяОбъекта>", ПараметрыОповещения, ОбъектСсылка);

где 

Запись_<ИмяОбъекта> - имя события, в котором <ИмяОбъекта> - имя объекта, как оно задано в метаданных. Например, для документа "Расходная накладная" имя события будет "Запись_РасходнаяНакладная".
ПараметрыОповещения – как правило, это параметр события ПослеЗаписи формы объекта. Состав свойств структуры может быть расширен исходя из потребностей прикладной логики.
ОбъектСсылка – ссылка на записываемый объект.

Пример:

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
  Оповестить("Запись_РасходнаяНакладная", ПараметрыЗаписи, Объект.Ссылка);
КонецПроцедуры

Затем в обработчике события Оповещение в форме динамического списка разместить код по обновлению динамического списка вида:

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

 Если Врег(ИмяСобытия) = Врег("Запись_РасходнаяНакладная")
   Или Врег(ИмяСобытия) = Врег("Запись_НакладнаяНаПеремещение") Тогда
   Элементы.СписокНакладных.Обновить();
 КонецЕсли;

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

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

При изменении сразу нескольких объектов в параметре ОбъектСсылка метода Оповестить следует передавать значение Неопределено.

Пример:

Оповестить("Запись_РасходнаяНакладная", ПараметрыЗаписи, Неопределено);

ВНИМАНИЕ!

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


В расширении табличного поля есть настройки, которые отвечают за периодическое обновление списка: Автообновление и ПериодАвтообновления.

Автообновление позволяет включить или выключить автоматическое обновление списка, а Период автообновления задает периодичность обновления данных в списке.

Для интерактивного управления периодом обновления динамического списка используются значения, устанавливаемые через меню табличного поля Настройка списка – Прочее.

Следует учитывать, что это дополнительная нагрузка на 1С и это может привести к подтормаживанию.


Для не динамических списков можно задать периодическое обновление следующим образом: подключается обработчик ожидания и запускается необходимая процедура. Например:

Процедура ПриОткрытии()
    ПодключитьОбработчикОжидания("ОбновитьСписокДокументов",60);
КонецПроцедуры

Процедура ОбновитьСписокДокументов()
    ЭтаФорма.Обновить();
КонецПроцедуры    

Категория: Формы | Добавил: leshic (04.12.2019)
Просмотров: 1067 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Вход на сайт
Поиск
Категории раздела
СКД [48]
Регистры [7]
Формы [41]
Администрирование [35]
Запросы [10]
Объекты конфигурации и типы данных [20]
Взаимодействие с другими базами, приложениями и источниками данных [16]
Программирование [29]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0