1С 8.3.8.1747
В форме справочника расположен динамический список, основная таблица Регистр сведений, динамическое считывание данных.
Над списком самописная кнопка, которая открывает форму записи регистра сведений и заполняет в поле ссылку на элемент справочника, из которого открывается эта форма записи. При записи данных в данной форме записи регистра сведений динамический список на форме справочника не обновляется.
Были попытки в событие ДинамическийСписокПриИзменении() добавить
Элементы. ДинамическийСписок.Обновить()
Оповестить("ОбновтьДинамическийСписок") и в ОбработкаОповещения Элементы. ДинамическийСписок.Обновить()
ОповеститьОбИзменении
ничего не дало результата. причем если елемент был уже раннее записан, то при добавлении новой записи регистра список обновлялся сам, а если происходит первая запись елемента справочника и не закрывая форму пытаюсь добавить запись регистра, то ничего не обновляется
Подскажите как решить данную проблему?
В форме справочника расположен динамический список, основная таблица Регистр сведений, динамическое считывание данных.
Над списком самописная кнопка, которая открывает форму записи регистра сведений и заполняет в поле ссылку на элемент справочника, из которого открывается эта форма записи. При записи данных в данной форме записи регистра сведений динамический список на форме справочника не обновляется.
Были попытки в событие ДинамическийСписокПриИзменении() добавить
Элементы. ДинамическийСписок.Обновить()
Оповестить("ОбновтьДинамическийСписок") и в ОбработкаОповещения Элементы. ДинамическийСписок.Обновить()
ОповеститьОбИзменении
ничего не дало результата. причем если елемент был уже раннее записан, то при добавлении новой записи регистра список обновлялся сам, а если происходит первая запись елемента справочника и не закрывая форму пытаюсь добавить запись регистра, то ничего не обновляется
Подскажите как решить данную проблему?
По теме из базы знаний
- Сложные запросы в динамическом списке или как не надо писать запросы для них
- Программное создание динамического списка на управляемой форме. (Динамическое создание динамического списка). Готовая процедура + обработка - демонстрационный пример
- Полнотекстовый поиск в 1С. №1 Грабли в динамических списках
- Перечень множественных значений в ячейке динамического списка. Как стало и как было
- Как "приджойнить" к динамическому списку таблицу из формы
Найденные решения
Пока решение такое, что приизменении динамического списка заново устанавливаю параметр запроса и делаю ЭтаФорма.Прочитать().
Но метод какой-то карявый и работает только на веб-клиенте, на толстом не работает. да еще и при удалении записи РС на толстом клиенте 1С просто вылетает.
Поэтому вопрос еще актуален.
Но метод какой-то карявый и работает только на веб-клиенте, на толстом не работает. да еще и при удалении записи РС на толстом клиенте 1С просто вылетает.
Поэтому вопрос еще актуален.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Я правильно понимаю, что Вы из формы нового, не записанного элемента справочника, пытаетесь создать запись в РС, у которой одно из полей - это ссылка на этот новый элемент? При этом, когда то же самое выполняется для записанного элемента, все работает штатно.
Каким образом осуществляется отбор в динамический список? Там наверняка есть отбор по ссылке, но в момент добавления записи в РС для нового элемента ссылки еще не существует, соответственно отбор не отрабатывает. Как вариант.
Каким образом осуществляется отбор в динамический список? Там наверняка есть отбор по ссылке, но в момент добавления записи в РС для нового элемента ссылки еще не существует, соответственно отбор не отрабатывает. Как вариант.
(8)Нет, понимаете не правильно. Создается новый елемент справочника, записывается, при этом форма не закрывается. после записи создаю запись в регистре сведений. т.е. елемент справочника уже записан на тот момент когда делается запись в РС.
Отбор динамического списка идет по ссылке элемента справочника, который открывается или записывается. Отбирается сразу в запросе, параметр устанавливается при создании на сервере.
Пробовал после записи данных в РС переустанавливать данный параметр и обновлять динсписок, все равно ничего не происходило.
Отбор динамического списка идет по ссылке элемента справочника, который открывается или записывается. Отбирается сразу в запросе, параметр устанавливается при создании на сервере.
Пробовал после записи данных в РС переустанавливать данный параметр и обновлять динсписок, все равно ничего не происходило.
(22) ты проверь, именно список не обновляется, или он просто не на экране ? Как то давно делал справочник, где в форме программно генерил серийный номер, и мне он должен был появится..и дело было не в том что список не обновлялся, а в том, что новый элемент был выше начала видимого списка...курсором вверх двигаешь, и было видно, что элемент там есть..
решал эмуляцией нажатий клавиш ctrl-end
решал эмуляцией нажатий клавиш ctrl-end
Если проблема еще актуальна - уточните:
- поле со ссылкой на элемент справочника присутствует в динамическом списке?
- если возможно - покажите скриншот динамического списка, скриншот формы записи регистра (после нажатия самописной кнопки);
- если возможно покажите код обработчика команды самописной кнопки.
- поле со ссылкой на элемент справочника присутствует в динамическом списке?
- если возможно - покажите скриншот динамического списка, скриншот формы записи регистра (после нажатия самописной кнопки);
- если возможно покажите код обработчика команды самописной кнопки.
(9) Ссылка на элемент в дин.списке не присутствует, но пробовал и добавлять туда ссылку на элемент, делал ее невидимой , результат тот же.
Код:
П = Новый Структура;
Ссылка = ЭтаФорма.Объект.Ссылка;
П.Вставить("ФизЛицо", Ссылка);
Форма = ПолучитьФорму("РегистрСведений.Название.ФормаЗаписи", П, ЭтаФорма);
Форма.ЭтаФорма.Запись.ФизЛицо = Ссылка;
Форма.ЭтаФорма.Запись.Период = ТекущаяДата();
Форма.Открыть();
Код:
П = Новый Структура;
Ссылка = ЭтаФорма.Объект.Ссылка;
П.Вставить("ФизЛицо", Ссылка);
Форма = ПолучитьФорму("РегистрСведений.Название.ФормаЗаписи", П, ЭтаФорма);
Форма.ЭтаФорма.Запись.ФизЛицо = Ссылка;
Форма.ЭтаФорма.Запись.Период = ТекущаяДата();
Форма.Открыть();
Прикрепленные файлы:
Пока решение такое, что приизменении динамического списка заново устанавливаю параметр запроса и делаю ЭтаФорма.Прочитать().
Но метод какой-то карявый и работает только на веб-клиенте, на толстом не работает. да еще и при удалении записи РС на толстом клиенте 1С просто вылетает.
Поэтому вопрос еще актуален.
Но метод какой-то карявый и работает только на веб-клиенте, на толстом не работает. да еще и при удалении записи РС на толстом клиенте 1С просто вылетает.
Поэтому вопрос еще актуален.
Можно попробовать сделать так:
- динамический список формировать произвольным запросом;
- форму записи регистра открывать модально и при возврате в форму динамического списка - либо обновить список или переопределить текст произвольного запроса.
- динамический список формировать произвольным запросом;
- форму записи регистра открывать модально и при возврате в форму динамического списка - либо обновить список или переопределить текст произвольного запроса.
(13)Динамический список формируется и так произвольным запросом, в нем же и указывается условие отбора по параметру.
Модально открывать нельзя окна, на вебе все происходит.
Каким образом переопределяется текст запроса? Может это и не через модальное окно можно сделать.
Модально открывать нельзя окна, на вебе все происходит.
Каким образом переопределяется текст запроса? Может это и не через модальное окно можно сделать.
Возможно в том и проблема, что динамический список у вас в другой форме
переопределить текст запроса можно так:
ДинСписок.ТекстЗапроса =
"ВЫБРАТЬ
| ...
|ИЗ
| ...
|ГДЕ
| ...";
ДинСписок.Параметры.УстановитьЗначениеПараметра("параметр", параметр); // при необходимости
ДинСписок.Отбор.Элементы.... // при необходимости выполняем действия с элементами отборов
переопределить текст запроса можно так:
ДинСписок.ТекстЗапроса =
"ВЫБРАТЬ
| ...
|ИЗ
| ...
|ГДЕ
| ...";
ДинСписок.Параметры.УстановитьЗначениеПараметра("параметр", параметр); // при необходимости
ДинСписок.Отбор.Элементы.... // при необходимости выполняем действия с элементами отборов
(15)Думаю таким образом переопределять текст запроса еще карявее, чем то решение , которое я нашел. Менять запрос нужно будет все время в двух местах, не очень хорошо.
Параметры и отборы переопределяю при изменении динамического списка.
Суть в том, что если взять уже записанный раннее элемент справочника , открыть его и создать запись регистра сведений, то динамический список обновляется, значит проблема не в том, что находятся они в разных формах.
Не обновляется динамический список в том случае, если сразу после записи елемента справочника не закрывая его, создавать запись регистра сведений.
Параметры и отборы переопределяю при изменении динамического списка.
Суть в том, что если взять уже записанный раннее элемент справочника , открыть его и создать запись регистра сведений, то динамический список обновляется, значит проблема не в том, что находятся они в разных формах.
Не обновляется динамический список в том случае, если сразу после записи елемента справочника не закрывая его, создавать запись регистра сведений.
уточните:
Создаем элемент, записываем, жмем педаль записи в регистр - динамический список не обновляется.
Если закрыть элемент и снова открыть - динамический список показывает нужную запись?
Если не показывает - значит запись не создана по причине того что ссылка на элемент справочника была не доступна.
Создаем элемент, записываем, жмем педаль записи в регистр - динамический список не обновляется.
Если закрыть элемент и снова открыть - динамический список показывает нужную запись?
Если не показывает - значит запись не создана по причине того что ссылка на элемент справочника была не доступна.
(17) Уточняю:
Создаем элемент, нажимаем записать, при этом форма елемента открыта остается, далее создаем запись в регистре, динамический список не обновляется. Но в регистре эту запись я вижу.
Закрываем этот елемент, открываем заново, в динамическом списке видим запись, все записалось и отобразилось.
Или вариант такой:
Создаем новый елемент справочника, записываем его и закрываем. Запись в регистр пока не создаем. Далее открываем елемент справочника, нажимаем педаль, создаем запись в регистр сведений, динамический список обновился.
Т.е. Записывается запись в РС в любом случае. Но в первом случае просто не обновляется динамический список.
Создаем элемент, нажимаем записать, при этом форма елемента открыта остается, далее создаем запись в регистре, динамический список не обновляется. Но в регистре эту запись я вижу.
Закрываем этот елемент, открываем заново, в динамическом списке видим запись, все записалось и отобразилось.
Или вариант такой:
Создаем новый елемент справочника, записываем его и закрываем. Запись в регистр пока не создаем. Далее открываем елемент справочника, нажимаем педаль, создаем запись в регистр сведений, динамический список обновился.
Т.е. Записывается запись в РС в любом случае. Но в первом случае просто не обновляется динамический список.
(19)Пробовал. о чем писал выше. это пока единственное решение которое хоть как-то работает. Только перед ЭтаФорма.Прочитать(); приходится устанавливать параметры заново, без этого прочитать тоже не работает.
Но в этом методе есть затык. В веб-клиенте все работает нормально, немного тугова-то правда идет прочтение. Когда тестирую на толстом клиенте, то этот метод не работает вообще. а при удалении записи из динамического списка 1С вылетает. Работают все пользователи на веб-клиенте, но меня смущает, что на толстом 1С вылетает. Наверно что-то отрабатывает не совсем корректно.
Но в этом методе есть затык. В веб-клиенте все работает нормально, немного тугова-то правда идет прочтение. Когда тестирую на толстом клиенте, то этот метод не работает вообще. а при удалении записи из динамического списка 1С вылетает. Работают все пользователи на веб-клиенте, но меня смущает, что на толстом 1С вылетает. Наверно что-то отрабатывает не совсем корректно.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот