Обновление динамического списка

1. Petrovichka 21.08.17 16:53 Сейчас в теме
1С 8.3.8.1747
В форме справочника расположен динамический список, основная таблица Регистр сведений, динамическое считывание данных.
Над списком самописная кнопка, которая открывает форму записи регистра сведений и заполняет в поле ссылку на элемент справочника, из которого открывается эта форма записи. При записи данных в данной форме записи регистра сведений динамический список на форме справочника не обновляется.
Были попытки в событие ДинамическийСписокПриИзменении() добавить
Элементы. ДинамическийСписок.Обновить()
Оповестить("ОбновтьДинамическийСписок") и в ОбработкаОповещения Элементы. ДинамическийСписок.Обновить()
ОповеститьОбИзменении
ничего не дало результата. причем если елемент был уже раннее записан, то при добавлении новой записи регистра список обновлялся сам, а если происходит первая запись елемента справочника и не закрывая форму пытаюсь добавить запись регистра, то ничего не обновляется
Подскажите как решить данную проблему?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
12. Petrovichka 22.08.17 09:52 Сейчас в теме +1 $m
Пока решение такое, что приизменении динамического списка заново устанавливаю параметр запроса и делаю ЭтаФорма.Прочитать().
Но метод какой-то карявый и работает только на веб-клиенте, на толстом не работает. да еще и при удалении записи РС на толстом клиенте 1С просто вылетает.
Поэтому вопрос еще актуален.
Остальные ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Dream_kz 129 21.08.17 16:58 Сейчас в теме
(1)
ОповеститьОбИзменении(<ИзмененныйТип>) 
3. Petrovichka 21.08.17 17:07 Сейчас в теме
(2)Хороший вариант. но он не работает. О чем сразу и написал.
Или я не правильно измененный тип указываю или не туда добавляю оповещение. ИЛи этот способ так и не работает как и не работал.
4. Dream_kz 129 21.08.17 17:16 Сейчас в теме
(3) Так делаешь?
ОповеститьОбИзменении(Тип("РегистрСведенийКлючЗаписи.КурсыВалют"));
5. Petrovichka 21.08.17 17:18 Сейчас в теме
(4)Да, делаю так.
Пробовал это впухнуть в событие ДинамическийСписокПриИзменении() и в обытие ПослеЗаписи() в форме записи регистра сведений.
В первом случае вся 1С становится недоступной, во втором ничего не происходит.
6. Dream_kz 129 21.08.17 17:21 Сейчас в теме
(5) Платформу менять пробовал? Оповещение должно работать хоть откуда, либо нахальное обновление списка тоже должно отрабатывать
7. Petrovichka 21.08.17 17:27 Сейчас в теме
(6)Платформу не пробовал менять, этот вариант не подходит.
8. andron77777 21.08.17 18:32 Сейчас в теме
(1) Я правильно понимаю, что Вы из формы нового, не записанного элемента справочника, пытаетесь создать запись в РС, у которой одно из полей - это ссылка на этот новый элемент? При этом, когда то же самое выполняется для записанного элемента, все работает штатно.

Каким образом осуществляется отбор в динамический список? Там наверняка есть отбор по ссылке, но в момент добавления записи в РС для нового элемента ссылки еще не существует, соответственно отбор не отрабатывает. Как вариант.
10. Petrovichka 22.08.17 09:37 Сейчас в теме
(8)Нет, понимаете не правильно. Создается новый елемент справочника, записывается, при этом форма не закрывается. после записи создаю запись в регистре сведений. т.е. елемент справочника уже записан на тот момент когда делается запись в РС.
Отбор динамического списка идет по ссылке элемента справочника, который открывается или записывается. Отбирается сразу в запросе, параметр устанавливается при создании на сервере.
Пробовал после записи данных в РС переустанавливать данный параметр и обновлять динсписок, все равно ничего не происходило.
20. pm74 199 22.08.17 15:23 Сейчас в теме
(1) Автообновление стоит?
22. Petrovichka 22.08.17 15:29 Сейчас в теме
(20)Пробовал даже автообновление устанавливать, чтобы уже все попробовать. но ничего не обновляет все равно.
Да и если бы работало, то период должен был бы быть каждую секунду, что никак не годится
23. Boneman 298 22.08.17 15:41 Сейчас в теме
(22) ты проверь, именно список не обновляется, или он просто не на экране ? Как то давно делал справочник, где в форме программно генерил серийный номер, и мне он должен был появится..и дело было не в том что список не обновлялся, а в том, что новый элемент был выше начала видимого списка...курсором вверх двигаешь, и было видно, что элемент там есть..
решал эмуляцией нажатий клавиш ctrl-end
24. Petrovichka 22.08.17 16:54 Сейчас в теме
(23)Увы, но передвижение курсора и crl-end не помогло.
9. sdn-1 153 21.08.17 22:02 Сейчас в теме
Если проблема еще актуальна - уточните:
- поле со ссылкой на элемент справочника присутствует в динамическом списке?
- если возможно - покажите скриншот динамического списка, скриншот формы записи регистра (после нажатия самописной кнопки);
- если возможно покажите код обработчика команды самописной кнопки.
11. Petrovichka 22.08.17 09:49 Сейчас в теме
(9) Ссылка на элемент в дин.списке не присутствует, но пробовал и добавлять туда ссылку на элемент, делал ее невидимой , результат тот же.

Код:
П = Новый Структура;
Ссылка = ЭтаФорма.Объект.Ссылка;

П.Вставить("ФизЛицо", Ссылка);
Форма = ПолучитьФорму("РегистрСведений.Название.ФормаЗаписи", П, ЭтаФорма);
Форма.ЭтаФорма.Запись.ФизЛицо = Ссылка;
Форма.ЭтаФорма.Запись.Период = ТекущаяДата();
Форма.Открыть();
Прикрепленные файлы:
12. Petrovichka 22.08.17 09:52 Сейчас в теме +1 $m
Пока решение такое, что приизменении динамического списка заново устанавливаю параметр запроса и делаю ЭтаФорма.Прочитать().
Но метод какой-то карявый и работает только на веб-клиенте, на толстом не работает. да еще и при удалении записи РС на толстом клиенте 1С просто вылетает.
Поэтому вопрос еще актуален.
13. sdn-1 153 22.08.17 12:16 Сейчас в теме
Можно попробовать сделать так:
- динамический список формировать произвольным запросом;
- форму записи регистра открывать модально и при возврате в форму динамического списка - либо обновить список или переопределить текст произвольного запроса.
14. Petrovichka 22.08.17 13:12 Сейчас в теме
(13)Динамический список формируется и так произвольным запросом, в нем же и указывается условие отбора по параметру.
Модально открывать нельзя окна, на вебе все происходит.
Каким образом переопределяется текст запроса? Может это и не через модальное окно можно сделать.
15. sdn-1 153 22.08.17 13:31 Сейчас в теме
Возможно в том и проблема, что динамический список у вас в другой форме

переопределить текст запроса можно так:

ДинСписок.ТекстЗапроса =
"ВЫБРАТЬ
| ...
|ИЗ
| ...
|ГДЕ
| ...";
ДинСписок.Параметры.УстановитьЗначениеПараметра("параметр", параметр); // при необходимости
ДинСписок.Отбор.Элементы.... // при необходимости выполняем действия с элементами отборов
16. Petrovichka 22.08.17 13:45 Сейчас в теме
(15)Думаю таким образом переопределять текст запроса еще карявее, чем то решение , которое я нашел. Менять запрос нужно будет все время в двух местах, не очень хорошо.
Параметры и отборы переопределяю при изменении динамического списка.
Суть в том, что если взять уже записанный раннее элемент справочника , открыть его и создать запись регистра сведений, то динамический список обновляется, значит проблема не в том, что находятся они в разных формах.
Не обновляется динамический список в том случае, если сразу после записи елемента справочника не закрывая его, создавать запись регистра сведений.
17. sdn-1 153 22.08.17 14:18 Сейчас в теме
уточните:
Создаем элемент, записываем, жмем педаль записи в регистр - динамический список не обновляется.
Если закрыть элемент и снова открыть - динамический список показывает нужную запись?

Если не показывает - значит запись не создана по причине того что ссылка на элемент справочника была не доступна.
18. Petrovichka 22.08.17 14:27 Сейчас в теме
(17) Уточняю:
Создаем элемент, нажимаем записать, при этом форма елемента открыта остается, далее создаем запись в регистре, динамический список не обновляется. Но в регистре эту запись я вижу.
Закрываем этот елемент, открываем заново, в динамическом списке видим запись, все записалось и отобразилось.
Или вариант такой:
Создаем новый елемент справочника, записываем его и закрываем. Запись в регистр пока не создаем. Далее открываем елемент справочника, нажимаем педаль, создаем запись в регистр сведений, динамический список обновился.

Т.е. Записывается запись в РС в любом случае. Но в первом случае просто не обновляется динамический список.
19. EVKash 14 22.08.17 14:52 Сейчас в теме
После записи элемента пробовали
ЭтаФорма.Прочитать();
?
21. Petrovichka 22.08.17 15:27 Сейчас в теме
(19)Пробовал. о чем писал выше. это пока единственное решение которое хоть как-то работает. Только перед ЭтаФорма.Прочитать(); приходится устанавливать параметры заново, без этого прочитать тоже не работает.
Но в этом методе есть затык. В веб-клиенте все работает нормально, немного тугова-то правда идет прочтение. Когда тестирую на толстом клиенте, то этот метод не работает вообще. а при удалении записи из динамического списка 1С вылетает. Работают все пользователи на веб-клиенте, но меня смущает, что на толстом 1С вылетает. Наверно что-то отрабатывает не совсем корректно.
25. ben19791010 23.08.17 10:22 Сейчас в теме
https://forum.infostart.ru/forum9/topic73026/ почитал похожую тему но есть подозрения что на другую платформу надо уходить
26. BorisovAlexey 25.10.22 10:45 Сейчас в теме
Ничего не помогло из вышеперечисленного..
На костылях делаю так:
ЭтаФорма.Записать();
ЭтаФорма.Закрыть();
ПоказатьЗначение(,Объект.Ссылка);

//После загрузки файла, окно мигает и все обновляется)
В целом меня устроило))
slauter77; +1 Ответить
Оставьте свое сообщение

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