Довідковий матеріал

Оновлення списків під час інтерактивних дій користувача

1. Платформа 1С:Підприємство за замовчуванням оновлює вміст динамічних списків під час виконання користувачем стандартних команд зі зміни елементів цього списку (Записати, Провести, Позначити на видалення тощо) та під час додавання нових елементів. Але в низці перелічених нижче випадків таке оновлення слід явно передбачити в прикладному коді.Див. також

Абстрактна сцена синхронізації: змінена картка запису передає сигнал центральному списку, який оновлює набір елементів.

Див. також

 

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

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

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

Під час зміни кількох об'єктів доцільно оновлювати список одноразово, наприкінці операції:

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

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

3.1 Якщо дані додаються або змінюються командою, розташованою у формі динамічного списку, то необхідно явно оновити список після виконання команди.

3.2 Якщо дані змінюються в будь-якій іншій формі (наприклад, у формі об'єкта), то необхідно організувати оновлення списку через сповіщення. Для цього в кожній формі об'єкта, дані якого виводяться в динамічному списку, слід реалізувати обробник події ПослеЗаписи з використанням методу Оповестить :

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

де

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

Приклад:

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

Потім в обробнику події Оповещение у формі динамічного списку розмістити код з оновлення динамічного списку такого вигляду:

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

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

Див. також

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