|
Кэширование данных при отображении на форме. УФ, Такси | ☑ | ||
---|---|---|---|---|
0
1Сергей
12.11.20
✎
11:49
|
Приветствую вас, товарищи и господа.
Столкнулся с проблемой, что УФ(такси) не всегда отображает то, что есть на самом деле. Внешняя обработка, табличная часть Номенклатура, есть реквизит ТЧ РесурснаяСпецификация (СправочникСсылка.РесурсныеСпецификации). У последнего есть реквизиты НачалоДействия и КонецДействия, которые вытащены на форму в табличную часть. Т.е. не являются реквизитами обработки, но отображаются. Проблема в том, что при заполнении ТЧ одинесина запоминает эти реквизиты и при изменении их, это никак не отражается на форме обработки. Более того, не помогает переоткрытие обработки и даже (!) перезаполнение ТЧ. Упорно показывает данные которые были при первом заполнении. Вот как это выглядит в конфигураторе http://pics.rsh.ru/img/000_bjom8ihp.png Вот реквизит КонецДействия, который отображается на форме обработки в режиме предприятия http://pics.rsh.ru/img/001_65k9mqnp.png А вот какое значение записано в БД (пустая дата): http://pics.rsh.ru/img/002_dcdgd0ad.png Как победить эту шнягу? |
|||
1
Василий Алибабаевич
12.11.20
✎
11:53
|
(0) Оповестить + ОбновитьОтображениеДанных.
|
|||
2
1Сергей
12.11.20
✎
11:57
|
(1) а разве оповестить работает на сервере? как это поможет?
|
|||
3
1Сергей
12.11.20
✎
11:58
|
ОбновитьОтображениеДанных не обновляет то что я написал в (0)
|
|||
4
Василий Алибабаевич
12.11.20
✎
12:01
|
(2) "разве оповестить работает на сервере" А что и кому вы собрались показывать на сервере?
(3) "ОбновитьОтображениеДанных" обновляет то и так как вы ему скажете. А так оно берет данные из БД и показывает их на клиенте. |
|||
5
Василий Алибабаевич
12.11.20
✎
12:07
|
+ (4) Обновлять данные из БД можно не только по Оповещению. Но и по (например) таймеру.
|
|||
6
1Сергей
12.11.20
✎
12:12
|
(4) Пользователь нажимает на кнопку, запускается процедура на клиенте, которая открывает диалог ввода значения, по завершению которого запускается серверная процедура заполнения ТЧ. После того как выполнилась серверная процедура как запустить оповещение?
|
|||
7
1Сергей
12.11.20
✎
12:15
|
&НаКлиенте
Процедура ОбновитьТаблицу(Команда) ЭтаФорма.ОбновитьОтображениеДанных(); // не помогает ЭтаФорма.ОбновитьОтображениеДанных(Элементы.Номенклатура); // не помогает ЭтаФорма.ОбновитьОтображениеДанных(Элементы.НоменклатураРесурснаяСпецификацияКонецДействия); // не помогает Элементы.Номенклатура.Обновить(); // не помогает КонецПроцедуры |
|||
8
Василий Алибабаевич
12.11.20
✎
12:16
|
(6) Если "серверная процедура" выполняется в фоновом задании - можно использовать "таймер" в виде "ПодключитьОбработчикОжидания". Если в контексте текущего сеанса - после завершения серверной процедуры и передачи управления на клиент.
|
|||
9
1Сергей
12.11.20
✎
12:16
|
Ещё раз обращаю внимание: не помогает даже закрытие и открытие обработки с перезаполнением табличной части. Оно где-то очень глубоко там кешируется
|
|||
10
1Сергей
12.11.20
✎
12:17
|
(8) не суть. Я сделал кнопку (7) не помогает
|
|||
11
1Сергей
12.11.20
✎
12:27
|
Помогло вот это:
Для каждого СтрокаНоменклатура Из Объект.Номенклатура Цикл ОповеститьОбИзменении(СтрокаНоменклатура.РесурснаяСпецификация); КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |