Имя: Пароль:
1C
1С v8
Не обновляется элемент на форме
,
0 KuJIT
 
01.12.15
16:12
Добрый вечер. Есть документы А и Б. Документ А содержит ссылку на Документ Б (реквизитСсылкаНаБ). На форме Документа А есть элемент (Вид: Поле надписи), который отображает реквизит (СуммуДокумента) документа Б. Т.е. его ПутьКДанным выглядит так: "Объект.реквизитСсылкаНаБ.СуммаДокумента".
Суть проблемы: когда документ Б программно меняется (в частности, меняется его реквизит СуммаДокумента), то, для того, чтобы изменилось значение элемента на форме А (того, который показывает СуммуДокумента), я вызываю на форме А Этаформа.Прочитать(). Но желаемого результата я не достигаю. Более того, ни переоткрытие формы А, ни  даже перезапуск клиента не помогают. Видимо, это значение где-то в кеше записывается и не меняется. Как быть?
З.Ы. Надеюсь, не очень сумбурно получилось =)
1 aleks_default
 
01.12.15
16:15
Управляемых форм на тебя нет...
2 VikingKosmo
 
01.12.15
16:16
перечитать значение реквизита СсылкаНаБ не помогает?
3 KuJIT
 
01.12.15
16:17
(1) Так в последнее время не работал с обычными формами, забыл упомянуть, что все на управляемых происходит
4 KuJIT
 
01.12.15
16:17
(2) Каким образом перечитать?
5 KuJIT
 
01.12.15
16:24
Этаформа.Прочитать() вызывается. Но ничего не меняет. (2)
6 KuJIT
 
01.12.15
16:29
Хотя, перезапуск клиента помогает. А вот переоткрытие окна не помогает
7 aleks_default
 
01.12.15
16:31
Ну дык это же не реквизит Объекта, поэтому и не перечитывает. Устанавливай вручную, какая нафиг тебе разница.
8 KuJIT
 
01.12.15
16:35
А как в ручную указать то? Элемент ни с каким реквизитом формы не связан напрямую. (7)
9 aleks_default
 
01.12.15
16:36
Реквизит формы делай, присваивай ему значение на сервере.
10 aleks_default
 
01.12.15
16:37
ПриЧтениНаСервере
11 VikingKosmo
 
01.12.15
16:37
хотя тут еще хороший вопрос, каким образом меняется СуммаДокументаБ
12 KuJIT
 
01.12.15
16:38
Придется, походу. Так это ж надо будет его отлавливать и менять всюду. Просто странно, что даже переоткрытие формы не меняет. (9)
13 KuJIT
 
01.12.15
16:40
(11) Ну.. Меняется программно. То, что меняется - это инфа сотка, т.к. рядом запросом строится динамический спсок - и он отображает актуальное значение СуммыДокументаБ
14 Nuobu
 
01.12.15
16:41
(0) ОповеститьОбИзменении (NotifyChanged)
Вариант синтаксиса: Изменен один объект

Синтаксис:

ОповеститьОбИзменении(<Ссылка>)
Параметры:

<Ссылка> (обязательный)

Тип: СправочникСсылка.<Имя справочника>; ДокументСсылка.<Имя документа>; ПеречислениеСсылка.<Имя перечисления>; ПланСчетовСсылка.<Имя плана счетов>; ПланВидовРасчетаСсылка.<Имя плана видов расчета>; ПланВидовРасчетаСсылка.<Имя плана видов расчета>; БизнесПроцессСсылка.<Имя бизнес-процесса>; ЗадачаСсылка.<Имя задачи>; РегистрСведенийКлючЗаписи.<Имя регистра сведений>; РегистрНакопленияКлючЗаписи.<Имя регистра накопления>; РегистрБухгалтерииКлючЗаписи.<Имя регистра бухгалтерии>; РегистрРасчетаКлючЗаписи.<Имя регистра расчета>; ПланОбменаСсылка.<Имя плана обмена>.
Ссылка измененного объекта или ключ измененной записи регистра, об изменении которой(го) необходимо уведомить динамические списки, чтобы они обновились.
Поведение при очистке кэша (такое же, как при интерактивном изменении):
кэш представлений ссылок - очищаются записи, соответствующие измененной ссылке;
кэш данных через точку - удаляются те записи, которые имеют в пути ссылки того же типа, что и измененная;
кэш данных быстрого выбора - данные хранятся по типам, очищаются данные, которые относятся к типу измененной ссылки;
кэш ограничений по типу - данные хранятся по типам, очищаются данные, которые относятся к типу измененной ссылки.
Описание варианта метода:

Уведомляет динамические списки на клиенте об изменении одного объекта базы данных или одной записи регистра.
Вариант синтаксиса: Изменено много объектов

Синтаксис:

ОповеститьОбИзменении(<ИзмененныйТип>)
Параметры:

<ИзмененныйТип> (обязательный)

Тип: Тип.
Тип изменившихся объектов, например "ДокументСсылка.РасходнаяНакладная".
Поведение при очистке кэша - очищается вся информация, которая связана с измененным типом.
Описание варианта метода:

Уведомляет динамические списки на клиенте об изменении множества объектов или множества записей регистра.

Доступность:

Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент).
Примечание:

Уведомление не влияет на динамические списки, у которых не задана основная таблица.
Динамические списки в тонком и веб-клиенте не обновляются при изменении данных в базе данных автоматически. Обновление динамического списка происходит при явном вызове метода, а также при выполнении стандартных команд записи данных форм.
Также осуществляется очистка закэшированных данных на клиенте. В частности, очищается кэш представлений ссылок, кэш данных через точку, кэш данных быстрого выбора, кэш ограничений по типу, кэш форм выбора. Удаляется только та информация, которая стала недействительной.
--------------------------------------------------------------------------------

     Методическая информация
15 VikingKosmo
 
01.12.15
16:42
(14) это для демонических списков, а у него форма документа
16 KuJIT
 
01.12.15
16:42
(10) Хорошо, что подсказал нужное событие. Такой маленький костыль решил проблему. Благодарю =)
17 aleks_default
 
01.12.15
16:43
Ну ты же пишешь что при изменении документа Б в А вызывается Прочитать(), вот в ПриЧтенииНаСервере и перезаполнится твой реквизит формы. Больше нигде менять не надо.
18 aleks_default
 
01.12.15
16:46
(15)Не пробовал, но вполне может сработать.
19 Nuobu
 
01.12.15
16:47
(18) Та и мне кажется, что должно сработать.
20 KuJIT
 
01.12.15
16:47
Могу проверить, если очень интересно. Надо?)
21 Nuobu
 
01.12.15
16:49
(20) Конечно!))
22 KuJIT
 
01.12.15
16:50
Нужно вызывать ОповеститьОбИзменении(СсылкаНаБ) Так? (21)
23 Nuobu
 
01.12.15
16:50
(22) Точно! Жги.
24 KuJIT
 
01.12.15
16:55
Сработало. Даже если после ОповеститьОбИзменении() Не вызывал Прочитать()
25 Nuobu
 
01.12.15
16:57
(24) Удаляй всё. Это только для динамических списков.
26 aleks_default
 
01.12.15
16:58
(25)Точно. Так в СП написано,а СП это как Библия! Шаг в сторону - на костер сразу.
27 aleks_default
 
01.12.15
16:59
Хотя лучше на костер тех кто составлял СП.
28 KuJIT
 
01.12.15
17:01
Всех на костер во имя Сотоны! ?~(????)?