Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Кэширование данных при отображении на форме. УФ, Такси

Кэширование данных при отображении на форме. УФ, Такси
Я
   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) Оповестить + ОбновитьОтображениеДанных.
   1Сергей
 
2 - 12.11.20 - 11:57
(1) а разве оповестить работает на сервере? как это поможет?
   1Сергей
 
3 - 12.11.20 - 11:58
ОбновитьОтображениеДанных не обновляет то что я написал в (0)
   Василий Алибабаевич
 
4 - 12.11.20 - 12:01
(2) "разве оповестить работает на сервере" А что и кому вы собрались показывать на сервере?
(3) "ОбновитьОтображениеДанных" обновляет то и так как вы ему скажете. А так оно берет данные из БД и показывает их на клиенте.
   Василий Алибабаевич
 
5 - 12.11.20 - 12:07
+ (4) Обновлять данные из БД можно не только по Оповещению. Но и по (например) таймеру.
   1Сергей
 
6 - 12.11.20 - 12:12
(4) Пользователь нажимает на кнопку, запускается процедура на клиенте, которая открывает диалог ввода значения, по завершению которого запускается серверная процедура заполнения ТЧ. После того как выполнилась серверная процедура как запустить оповещение?
   1Сергей
 
7 - 12.11.20 - 12:15
&НаКлиенте
Процедура ОбновитьТаблицу(Команда)
    ЭтаФорма.ОбновитьОтображениеДанных();// не помогает

    ЭтаФорма.ОбновитьОтображениеДанных(Элементы.Номенклатура);// не помогает

    ЭтаФорма.ОбновитьОтображениеДанных(Элементы.НоменклатураРесурснаяСпецификацияКонецДействия);// не помогает

    Элементы.Номенклатура.Обновить();// не помогает

КонецПроцедуры
   Василий Алибабаевич
 
8 - 12.11.20 - 12:16
(6) Если "серверная процедура" выполняется в фоновом задании - можно использовать "таймер" в виде "ПодключитьОбработчикОжидания". Если в контексте текущего сеанса - после завершения серверной процедуры и передачи управления на клиент.
   1Сергей
 
9 - 12.11.20 - 12:16
Ещё раз обращаю внимание: не помогает даже закрытие и открытие обработки с перезаполнением табличной части. Оно где-то очень глубоко там кешируется
   1Сергей
 
10 - 12.11.20 - 12:17
(8) не суть. Я сделал кнопку (7) не помогает
   1Сергей
 
11 - 12.11.20 - 12:27
Помогло вот это:
    Для каждого СтрокаНоменклатура Из Объект.Номенклатура Цикл
        ОповеститьОбИзменении(СтрокаНоменклатура.РесурснаяСпецификация);
    КонецЦикла;

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.