Справочный материал

Обновление списков при интерактивных действиях пользователя

1. Платформа 1С:Предприятие по умолчанию обновляет содержимое динамических списков при выполнении пользователем стандартных команд по изменению элементов этого списка (Записать, Провести, Пометить на удаление и т.п.) и при добавлении новых элементов. Но в ряде ниже перечисленных случаев такое обновление следует предусмотреть явно в прикладном коде.См. также

Абстрактная сцена синхронизации: изменённая карточка записи передаёт сигнал центральному списку, который обновляет набор элементов.

См. также

 

1. Платформа 1С:Предприятие по умолчанию обновляет содержимое динамических списков при выполнении пользователем стандартных команд по изменению элементов этого списка (Записать, Провести, Пометить на удаление и т.п.) и при добавлении новых элементов. Но в ряде ниже перечисленных случаев такое обновление следует предусмотреть явно в прикладном коде.

2. Команды, которые изменяют объекты и размещаются в форме списка, должны заботиться об обновлении списка объектов после своего выполнения. Например, после изменения одного объекта рекомендуется вызывать метод ОповеститьОбИзменении:

 &НаКлиенте
 Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
	 ОбъектСсылка = ПараметрКоманды;
	 // Меняем объект
	 // ...
	 ОповеститьОбИзменении(ОбъектСсылка);
 КонецПроцедуры

При изменении нескольких объектов целесообразно обновлять список однократно, в конце операции:

 &НаКлиенте
 Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
	 Для Каждого ОбъектСсылка Из ПараметрКоманды Цикл
		 // Меняем объект
		 // ...
	 КонецЦикла;
	 ОповеститьОбИзменении(ТипЗнч(ПараметрКоманды[0]));
 КонецПроцедуры

3. Также должно быть обеспечено обновление данных в динамическом списке, у которого не назначена основная таблица. Такие динамические списки могут отображать данные из нескольких таблиц.

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

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

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

где

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

Пример:

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

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

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

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

См. также

  • Особенности реализации команд для форм списков
Записаться по телефону