1С 8.3.8.1747
В форме справочника расположен динамический список, основная таблица Регистр сведений, динамическое считывание данных.
Над списком самописная кнопка, которая открывает форму записи регистра сведений и заполняет в поле ссылку на элемент справочника, из которого открывается эта форма записи. При записи данных в данной форме записи регистра сведений динамический список на форме справочника не обновляется.
Были попытки в событие ДинамическийСписокПриИзменении() добавить
Элементы. ДинамическийСписок.Обновить()
Оповестить("ОбновтьДинамическийСписок") и в ОбработкаОповещения Элементы. ДинамическийСписок.Обновить()
ОповеститьОбИзменении
ничего не дало результата. причем если елемент был уже раннее записан, то при добавлении новой записи регистра список обновлялся сам, а если происходит первая запись елемента справочника и не закрывая форму пытаюсь добавить запись регистра, то ничего не обновляется
Подскажите как решить данную проблему?
---
Пока решение такое, что приизменении динамического списка заново устанавливаю параметр запроса и делаю ЭтаФорма.Прочитать().
Но метод какой-то карявый и работает только на веб-клиенте, на толстом не работает. да еще и при удалении записи РС на толстом клиенте 1С просто вылетает.
Поэтому вопрос еще актуален.
---
```1c
    ОповеститьОбИзменении(<ИзмененныйТип>)
```
---
Хороший вариант. но он не работает. О чем сразу и написал.
Или я не правильно измененный тип указываю или не туда добавляю оповещение. ИЛи этот способ так и не работает как и не работал.
---
Так делаешь?

```1c
    ОповеститьОбИзменении(Тип("РегистрСведенийКлючЗаписи.КурсыВалют"));
```
---
Да, делаю так.
Пробовал это впухнуть в событие ДинамическийСписокПриИзменении() и в обытие ПослеЗаписи() в форме записи регистра сведений.
В первом случае вся 1С становится недоступной, во втором ничего не происходит.
---
Платформу менять пробовал? Оповещение должно работать хоть откуда, либо нахальное обновление списка тоже должно отрабатывать
---
Платформу не пробовал менять, этот вариант не подходит.
---
Я правильно понимаю, что Вы из формы нового, не записанного элемента справочника, пытаетесь создать запись в РС, у которой одно из полей - это ссылка на этот новый элемент? При этом, когда то же самое выполняется для записанного элемента, все работает штатно.

Каким образом осуществляется отбор в динамический список? Там наверняка есть отбор по ссылке, но в момент добавления записи в РС для нового элемента ссылки еще не существует, соответственно отбор не отрабатывает. Как вариант.
---
Нет, понимаете не правильно. Создается новый елемент справочника, записывается, при этом форма не закрывается. после записи создаю запись в регистре сведений. т.е. елемент справочника уже записан на тот момент когда делается запись в РС.
Отбор динамического списка идет по ссылке элемента справочника, который открывается или записывается. Отбирается сразу в запросе, параметр устанавливается при создании на сервере.
Пробовал после записи данных в РС переустанавливать данный параметр и обновлять динсписок, все равно ничего не происходило.
---
Автообновление стоит?
---
Пробовал даже автообновление устанавливать, чтобы уже все попробовать. но ничего не обновляет все равно.
Да и если бы работало, то период должен был бы быть каждую секунду, что никак не годится
---
ты проверь, именно список не обновляется, или он просто не на экране ? Как то давно делал справочник, где в форме программно генерил серийный номер, и мне он должен был появится..и дело было не в том что список не обновлялся, а в том, что новый элемент был выше начала видимого списка...курсором вверх двигаешь, и было видно, что элемент там есть..
решал эмуляцией нажатий клавиш ctrl-end
---
Увы, но передвижение курсора и crl-end не помогло.
---
Если проблема еще актуальна - уточните:
- поле со ссылкой на элемент справочника присутствует в динамическом списке?
- если возможно - покажите скриншот динамического списка, скриншот формы записи регистра (после нажатия самописной кнопки);
- если возможно покажите код обработчика команды самописной кнопки.
---
Ссылка на элемент в дин.списке не присутствует, но пробовал и добавлять туда ссылку на элемент, делал ее невидимой , результат тот же.

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

П.Вставить("ФизЛицо", Ссылка);
Форма = ПолучитьФорму("РегистрСведений.Название.ФормаЗаписи", П, ЭтаФорма);
Форма.ЭтаФорма.Запись.ФизЛицо = Ссылка;
Форма.ЭтаФорма.Запись.Период = ТекущаяДата();
Форма.Открыть();
---
Пока решение такое, что приизменении динамического списка заново устанавливаю параметр запроса и делаю ЭтаФорма.Прочитать().
Но метод какой-то карявый и работает только на веб-клиенте, на толстом не работает. да еще и при удалении записи РС на толстом клиенте 1С просто вылетает.
Поэтому вопрос еще актуален.
---
Можно попробовать сделать так:
- динамический список формировать произвольным запросом;
- форму записи регистра открывать модально и при возврате в форму динамического списка - либо обновить список или переопределить текст произвольного запроса.
---
Динамический список формируется и так произвольным запросом, в нем же и указывается условие отбора по параметру.
Модально открывать нельзя окна, на вебе все происходит.
Каким образом переопределяется текст запроса? Может это и не через модальное окно можно сделать.
---
Возможно в том и проблема, что динамический список у вас в другой форме

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

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

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

Т.е. Записывается запись в РС в любом случае. Но в первом случае просто не обновляется динамический список.
---
После записи элемента пробовали
ЭтаФорма.Прочитать();
?
---
Пробовал. о чем писал выше. это пока единственное решение которое хоть как-то работает. Только перед ЭтаФорма.Прочитать(); приходится устанавливать параметры заново, без этого прочитать тоже не работает.
Но в этом методе есть затык. В веб-клиенте все работает нормально, немного тугова-то правда идет прочтение. Когда тестирую на толстом клиенте, то этот метод не работает вообще. а при удалении записи из динамического списка 1С вылетает. Работают все пользователи на веб-клиенте, но меня смущает, что на толстом 1С вылетает. Наверно что-то отрабатывает не совсем корректно.
---
https://forum.infostart.ru/forum9/topic73026/ почитал похожую тему но есть подозрения что на другую платформу надо уходить
---
Ничего не помогло из вышеперечисленного..
На костылях делаю так:
ЭтаФорма.Записать();
ЭтаФорма.Закрыть();
ПоказатьЗначение(,Объект.Ссылка);

//После загрузки файла, окно мигает и все обновляется)
В целом меня устроило))