Обновление списков при интерактивных действиях пользователя
Полезный стандарт и связан с реальной задачей. Когда-то планировал написать пост на эту тему, но потом отвлёкся. А тут повторилась задача и попался прям стандарт)
Суть проблемы, у вас есть обработка, которая отбирает документы, добавляет их в ТЧ для предварительного просмотра, пользователь смотрит, если все ок, нажимает кнопку "Выполнить". Чаще всего проблема в обработке перенумерации, и речь про УФ. И вот обработка выполнилась, а в ТЧ мы видим ссылку на документ со старым номером. Как раз для решения этой ситуации есть процедура ОповеститьОбИзменении(), в которую можно передать один объект или тип объектов. После её выполнения данные в ТЧ обновятся.
#std558
...
2. Команды, которые изменяют объекты и размещаются в форме списка, должны заботиться об обновлении списка объектов после своего выполнения. Например, после изменения одного объекта рекомендуется вызывать метод ОповеститьОбИзменении:
ОбъектСсылка = ПараметрКоманды;
// Меняем объект
// ...
ОповеститьОбИзменении(ОбъектСсылка);
При изменении нескольких объектов целесообразно обновлять список однократно, в конце операции:
Для Каждого ОбъектСсылка Из ПараметрКоманды Цикл
// Меняем объект
// ...
КонецЦикла;
ОповеститьОбИзменении(ТипЗнч(ПараметрКоманды[0]));
...
3.2. Если данные изменяются в какой-либо другой форме (например, в форме объекта), то необходимо организовать обновление списка через оповещение. Для этого в каждой форме объекта, данные которого выводятся в динамическом списке, следует реализовать обработчик события ПослеЗаписи с использованием метода Оповестить:
Оповестить ("Запись_<ИмяОбъекта>", ПараметрыОповещения, ОбъектСсылка);
В стандарте описаны ещё несколько важных пунктов и примеров кода, как и когда обновлять данные в динамических списках и что делать если изменение происходит на другой форме.
P.S. Полное описание стандарта по ссылке в начале поста
#ЧёПоСтандартам #std558