Обновление динамического списка (управляемая форма)

1. user1540321 01.07.21 17:23 Сейчас в теме
Есть открытая управляемая форма документа, на ней - динамический список (справочник с вложениями). При добавлении файлов проверяю, что документ записан и, если это новый, то предлагаю записать и только тогда даю добавить файл.
Проблема: при такой схеме добавленные файлы не отображаются в списке на форме. Но отображаются, если перезайти в форму. Пользователи с ума сходят: добавляют файлы - их нет, а потом перезаходят - там 10 дублей одного и того же ))
Не помогает ни принудительное обновление, ни оповещение... Нашла тут статью https://forum.infostart.ru/forum9/topic241591/ - то ли я не в те места пихаю оповещение, то ли еще что... Был эксперимент с автообновлением даже - всё равно не помогло.
Пробовала:
1. Вызывать обновление после выбора файла:
ФормаФайла.ОткрытьМодально();

Элементы.Файлы.Обновить();
ЭтаФорма.Прочитать();
ЭтаФорма.ОбновитьОтображениеДанных();

2. Оповещение:
ОповеститьОбИзменении(Тип("СправочникСсылка.Файлы"));

3. Автообновление (ради эксперимента)

Что делаю не так? Какие есть нюансы?
По теме из базы знаний
Найденные решения
15. user1540321 01.07.21 20:09 Сейчас в теме
(13) Да, истина ) и этот вопрос сподвиг пристальнее приглядеться к отбору. Проблема была в следующем: при создании док-та также вызывается процедура по установке отбора и устанавливает отбор по пустому док-ку (оно и понятно - документ же новый). Потом после записи док-та эта процедура снова вызывается и добавляется еще один элемент отбора по объекту, но уже со ссылкой. Получается два отбора по объекту. В этот и проблема. Я решила ее проверкой на то, что док-т не новый и у этого отбора в правом значении пустая ссылка, тогда удаляю его. Заработало и без оповещений теперь )))
Спасибо большое за наводку!
И всем остальным за советы и участие! :)
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Sashares 35 01.07.21 17:55 Сейчас в теме
(1)вы отбор по владельцу у ДС Файлы после записи документа устанавливаете?
Или только при создании на сервере?
5. user1540321 01.07.21 17:56 Сейчас в теме
6. Sashares 35 01.07.21 17:57 Сейчас в теме
(5)А по описанию проблемы, похоже, что нет.
7. user1540321 01.07.21 17:59 Сейчас в теме
(6) Проверяла под отладкой - отбор установлен.
8. Sashares 35 01.07.21 18:04 Сейчас в теме
11. user1540321 01.07.21 18:51 Сейчас в теме
(8)
1 Здесь просим пользователя записать:
	Если ТекущаяСтраница.Имя = "ГруппаВложение" и Параметры.Ключ.Пустая() Тогда 
		Если Вопрос("Перед добавлением вложений необходимо записать документ. Продолжить с записью документа?", РежимДиалогаВопрос.ОКОтмена,15,,"Требуется выбрать действие:") 
			= КодВозвратаДиалога.Ок Тогда 
			Записать();
		Иначе 
			Элементы.Страницы.ТекущаяСтраница = Элементы.ГруппаРаспределение;		
		КонецЕсли;
	КонецЕсли;
	// ОБНОВИМ динамический список файлы
	Элементы.Файлы.Обновить();
Показать

2
Процедура ПослеЗаписи(ПараметрыЗаписи)
	УстановитьВидимостьДоступностьПолей();
	УстановитьОтборСпискаФайлов();
КонецПроцедуры

3
Процедура УстановитьОтборСпискаФайлов()
	ЭлементОтбора = Файлы.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект");
	ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ЭлементОтбора.ПравоеЗначение = Объект.Ссылка;
	
	ЭлементОтбора = Файлы.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПометкаУдаления");
	ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ЭлементОтбора.ПравоеЗначение = Ложь;
КонецПроцедуры
Показать
13. o.nikolaev 214 01.07.21 19:06 Сейчас в теме
(11) ЭлементОтбора.Использовать = Истина я надеюсь?
15. user1540321 01.07.21 20:09 Сейчас в теме
(13) Да, истина ) и этот вопрос сподвиг пристальнее приглядеться к отбору. Проблема была в следующем: при создании док-та также вызывается процедура по установке отбора и устанавливает отбор по пустому док-ку (оно и понятно - документ же новый). Потом после записи док-та эта процедура снова вызывается и добавляется еще один элемент отбора по объекту, но уже со ссылкой. Получается два отбора по объекту. В этот и проблема. Я решила ее проверкой на то, что док-т не новый и у этого отбора в правом значении пустая ссылка, тогда удаляю его. Заработало и без оповещений теперь )))
Спасибо большое за наводку!
И всем остальным за советы и участие! :)
16. DELOVOYDOM 19.12.23 21:20 Сейчас в теме
(15) 1. Возьмите за практику писать где у вас код на сервере а где на клиенте
2. Вы реализовали это просто в лоб, без асинхронного выполнения кода? Хотя в 21 году наверное и не умел никто писать фоновые задания, тут еще тьма комментов и ни одного здравого, переписать под фоновое задание. Странно
2. o.nikolaev 214 01.07.21 17:46 Сейчас в теме
Вариант синтаксиса: Изменен один объект
Синтаксис:
ОповеститьОбИзменении(<Ссылка>)
Ссылка измененного объекта или ключ измененной записи регистра, об изменении которой(го) необходимо уведомить динамические списки, чтобы они обновились.
4. user1540321 01.07.21 17:55 Сейчас в теме
(2) Да, пробовала. Даже дважды ))
	ОповеститьОбИзменении(Тип("СправочникСсылка.Файлы"));
	ОповеститьОбИзменении(Ссылка);

Чувствую, есть что-то, что упускаю, но не могу понять, что... :(
9. coollerinc 190 01.07.21 18:16 Сейчас в теме
Вам нужно использовать ОповеститьОбИзменении() после записи файла, а не после выбора
10. user1540321 01.07.21 18:47 Сейчас в теме
(9) Да, так и делаю
Процедура ПослеЗаписи()
	ОповеститьОбИзменении(Тип("СправочникСсылка.Файлы"));
	ОповеститьОбИзменении(Ссылка);
	Оповестить ("Запись нового файла", , Ссылка);
КонецПроцедуры

Это в форме справочника с файлами, которая открывается для добавления
12. o.nikolaev 214 01.07.21 19:04 Сейчас в теме
14. o.nikolaev 214 01.07.21 19:07 Сейчас в теме
(10) Ссылка - это у вас что? Должна быть ссылка на добавленный файл.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот