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