Область применения: управляемое приложение, мобильное приложение.
1. Платформа 1С:Предприятие по умолчанию обновляет содержимое динамических списков при выполнении пользователем стандартных команд по изменению элементов этого списка (Записать, Провести, Пометить на удаление и т.п.) и при добавлении новых элементов. Но в ряде ниже перечисленных случаев такое обновление следует предусмотреть явно в прикладном коде.
2. Команды, которые изменяют объекты и размещаются в форме списка, должны заботиться об обновлении списка объектов после своего выполнения. Например, после изменения одного объекта рекомендуется вызывать метод ОповеститьОбИзменении:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ОбъектСсылка = ПараметрКоманды;
// Меняем объект
// ...
ОповеститьОбИзменении(ОбъектСсылка);
КонецПроцедуры
При изменении нескольких объектов целесообразно обновлять список однократно, в конце операции:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
Для Каждого ОбъектСсылка Из ПараметрКоманды Цикл
// Меняем объект
// ...
КонецЦикла;ОповеститьОбИзменении(ТипЗнч(ПараметрКоманды[0]));
КонецПроцедуры
3. Также должно быть обеспечено обновление данных в динамическом списке, у которого не назначена основная таблица. Такие динамические списки могут отображать данные из нескольких таблиц.
3.1. Если данные добавляются или изменяются командой, расположенной в форме динамического списка, то необходимо обновить список явно после выполнения команды.
3.2. Если данные изменяются в какой-либо другой форме (например, в форме объекта), то необходимо организовать обновление списка через оповещение. Для этого в каждой форме объекта, данные которого выводятся в динамическом списке, следует реализовать обработчик события ПослеЗаписи с использованием метода Оповестить:
Оповестить ("Запись_<ИмяОбъекта>", ПараметрыОповещения, ОбъектСсылка);
где
Пример:
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Оповестить("Запись_РасходнаяНакладная", ПараметрыЗаписи, Объект.Ссылка);
КонецПроцедуры
Затем в обработчике события Оповещение в форме динамического списка разместить код по обновлению динамического списка вида:
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если Врег(ИмяСобытия) = Врег("Запись_РасходнаяНакладная")
Или Врег(ИмяСобытия) = Врег("Запись_НакладнаяНаПеремещение") Тогда
Элементы.СписокНакладных.Обновить();
КонецЕсли;
КонецПроцедуры
При этом имена событий следует проверять явным образом, чтобы исключить неоправданное обновление списка.
3.3. При изменении сразу нескольких объектов в параметре ОбъектСсылка метода Оповестить следует передавать значение Неопределено.
Пример:
Оповестить("Запись_РасходнаяНакладная", ПараметрыЗаписи, Неопределено);