#std558

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

1.

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

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

2.

Команды в форме списка, которые изменяют объекты, должны обновлять список после выполнения.

Если изменяется один объект, вызывайте ОповеститьОбИзменении для ссылки объекта. Если изменяется несколько объектов, обновляйте список один раз в конце операции.

Изменен один объект

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

Изменено несколько объектов

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

    ОповеститьОбИзменении(ТипЗнч(ПараметрКоманды[0]));
КонецПроцедуры
3.

Обеспечьте обновление и для динамического списка без основной таблицы.

Такие списки могут показывать данные из нескольких таблиц.

3.1.

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

3.2.

Если данные меняются в другой форме (например, форме объекта), организуйте обновление через оповещение.

Для этого в форме объекта реализуйте обработчик ПослеЗаписи и вызов Оповестить:

Шаблон

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

В форме динамического списка обрабатывайте это событие и выполняйте обновление списка.

Пример

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

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

Если в рамках одной операции изменяется сразу несколько объектов, в параметр ОбъектСсылка метода Оповестить передавайте Неопределено.

Пример

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

https://its.1c.ru/db/v8std#content:558