Не обновляется представление объекта в табличной части документа

1. boron 26.06.17 23:52 Сейчас в теме
Доброго времени суток!
Возникла такая проблема. В УТ11.3 есть документ "ТаможеннаяДекларация". Табличная часть документа содержит серии номенклатуры и номера ГТД. Понадобилось сделать так, чтобы после проведения документа наименования серий менялись - в номер и наименование серии должен входить номер ГТД из соответствующей строки. В процедуру модуля формы документа ПослеЗаписиНаСервере() я добавил фрагмент, который меняет номера и наименования серий в строках. Серии изменяются, но почему-то в табличной части формы остаются старые представления! Если документ закрыть и снова открыть, то представления серий в табличной части все равно старые, хотя, если смотреть в отладчике, видно, что номера и наименования серий поменялись. А если закрыть сеанс 1С и снова запустить, и открыть эту же декларацию, то представления серий в табличной части уже новые. Кроме того, если в текущем сеансе открыть форму списка справочника серий и спозиционироваться на измененной серии, то видно, что представление у неё уже новое, и после такого позиционирования представление этой серии в таблице формы документа сразу изменится на новое. Подскажите, пожалуйста, почему, хотя серия изменилась, её представление в документе остается старым до конца сеанса, даже если документ закрыть и повторно открыть?
Заранее благодарю
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. mr_sav 92 06.04.18 22:57 Сейчас в теме
(1) Сам вот немало часов промаялся с этим загадочным обновлением представления ссылки после изменения полей формирующих это самое представление. Хотел было уже плюнуть, но не тут-то было! Неожиданно и приятно подфартило!

Для некоего документа сделал автоматическое создание по его данным другого вида документа и сразу же заполнение ТЧ этого некоего документа новыми либо перезаполненными (перезаписанными) документами. И вот когда в соответствующих ячейках ТЧ было пусто, то всё норм создавалось и проставлялось, а вот когда повторно выполнялась эта команда (выведена кнопкой в командной панели ТЧ), то шло перезаполнение (перезапись, без отключения контроля записи) тех доков и, например, если изменилась дата, то представление ссылок в строках этой ТЧ и в таксишных выпадающих списках полей ввода этих ячеек не менялись, пока не потыкаешься вручную интерактивно по соответствующим формам выбора и т.п., точных манипуляшек не запоминал, но переоткрытие формы этого злополучного некоего документа точно не помогало, ладно хотя бы перезапуск сеанса безупречно с этим справлялся)). Также не помогли ни Прочитать(), ни Элементы.ТЧ.Обновить(), ни ОбновитьОтображениеДанных(), ОбновитьПовторноИспользуемыеЗначения(), ни т.п. ...КРОМЕ!!! ВНИМАНИЕ!!!

ОповеститьОбИзменении(Тип("ДокументСсылка.НазваниеДокументаСЗагадочнымОтображениемПредставленияСсылки"));

В самом конце Процедуры (&НаКлиенте) команды этот метод вставил.

Для задачек, подобной сути, но с обработкой единичного объекта, в качестве параметра разумнее передавать не тип, а его ссылку, согласно СП. "УФ" уж этот непредсказуемый "кешка" ;)

Глобальный контекст.ОповеститьОбИзменении (Global context.NotifyChanged)
Глобальный контекст (Global context)
ОповеститьОбИзменении (NotifyChanged)
Вариант синтаксиса: Изменен один объект

Синтаксис:

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

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

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

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

Синтаксис:

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

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

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

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

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

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

Уведомление не влияет на динамические списки, у которых не задана основная таблица.
Динамические списки в тонком и веб-клиенте не обновляются при изменении данных в базе данных автоматически. Обновление динамического списка происходит при явном вызове метода, а также при выполнении стандартных команд записи данных форм.
Также осуществляется очистка закэшированных данных на клиенте. В частности, очищается кэш представлений ссылок, кэш данных через точку, кэш данных быстрого выбора, кэш ограничений по типу, кэш форм выбора. Удаляется только та информация, которая стала недействительной.
lev6975; kimskiysanya; user1017560; Programmer_Ekatetina; feel_deep; denmon88; Romyl01; Rusbread; Stan; OMOIVA; SergeNsk; YA_38095378; mickey.1cx; Wrols; amaliya_06; rasdva; baltexpert_39; user-sergey; _Ramzes; etorpov; elga2012; Necytij; Bespechnii_kot; anuar_medeup; Anna1985; kassbar; MightyMitya; TheGrinch2; viplelik; snood; ipetrochenko; saiten; parshin; d.zhukov; Atma888; Xershi; ReDvAlL; bendarik; LaninaNata; roman8115; Nuuq; annak2980; MsDjuice; burni4; den_vrn; mpvrus21; igordynets; Gang031; mr.lynx; MelomanOV; nixen88; idiked; maxim_1c; ray-xp; CyberCerber; +55 Ответить
3. CyberCerber 854 04.07.18 12:54 Сейчас в теме
(2) Спасибо тебе, добрый человек, это то, что нужно!
7. MsDjuice 114 23.09.19 14:01 Сейчас в теме
(2)Это помогает на текущий сеанс, или на все активные сеансы? У помогло только для обновления динамических списков в текущем сеансе.
8. annak2980 27.10.19 13:09 Сейчас в теме
(2) Спасибо за подробный ответ, очень помогло!
13. Xershi 1484 05.05.20 12:52 Сейчас в теме
(2)
ОповеститьОбИзменении
у меня была табличная часть. Иногда представление обновлялось. Иногда нет.
Думал в чем дело.
Об этой функции знал. Но смутило фраза динамический список.
А ключевое здесь обновление кеша!
В итоге после группового изменения времени в документах теперь их преставление обновляется и вопрос решен.
16. MightyMitya 10 19.01.21 14:39 Сейчас в теме
(2) Спасибо! Полдня долбился с этим, пока не нашёл твой ответ!
17. Anna1985 09.02.21 18:28 Сейчас в теме
(2) ООО, благодарю! Полдня не могла разобраться)
4. ray-xp 20 20.07.18 09:14 Сейчас в теме
Супер!!! Присоединяюсь к CyberCerber. Тоже долго страдал этой темой....
5. nixen88 17.05.19 04:44 Сейчас в теме
Как раз искала, как бы это побороть. Спасибо, помогло!
6. Gang031 17.07.19 15:21 Сейчас в теме
Спасибо, помогло! Тоже столкнулся с подобной проблемой
9. user1135682 01.11.19 09:43 Сейчас в теме
10. goodursus 12.12.19 02:06 Сейчас в теме
Но для тонкого клиента не помогает. При запуске в режиме Толстый клиент Управляемое приложение все красиво работает и при стандартных средствах, а как только переключаешь режим запуска, то возникает стандартная ситуация с обновлением данных после смены сеанса.
11. LaninaNata 77 18.03.20 14:21 Сейчас в теме
Спасибо огромное!!! Очень нужно было!
12. jan-pechka 408 03.05.20 18:08 Сейчас в теме
эта тема более всего близка к описанию глюка с которым столкнулась.
Итак, как только добавила механизм Перерасчетов в регистры расчета, то с самой формой документа Начисления зп-начали происходить чудеса: то пропадают введенные ранее данные, то появляются вообще старые данные расчетов...Причем в регистрах расчета все Ок и верно!
Перепробывала все варианты, которые предлагались в инете с обновлением формы-ничего не помогает.

Выкрутилась просто: в модуле формы в проц.ПриОткрытии - силком запихиваю актуальные данные из рег.расчета в форму док.начисления:

&НаСервере
Процедура ПриОткрытииНаСервере()
	Если  Объект.Ссылка.Пустая() Тогда
		возврат;
	Иначе
		//НЕ ЗНАЮ почему, но после запуска механизма ПЕРЕРАСЧЕТОВ-форма дока глючит!!!-отражает при открытии старые данные, а не актуальные!!!
		Движ=РегистрыРасчета.ОсновныеНачисления.СоздатьНаборЗаписей();
		Движ.Отбор.Регистратор.Установить(Объект.Ссылка);
		Движ.Прочитать();
		
		//Объект.ОсновныеНачисления.Загрузить(Движ.Выгрузить());
		
		ДвижД=РегистрыРасчета.ДополнительныеНачисления.СоздатьНаборЗаписей();
		ДвижД.Отбор.Регистратор.Установить(Объект.Ссылка);
		ДвижД.Прочитать();
		
		//Объект.ДополнительныеНачисления.Загрузить(ДвижД.Выгрузить());
		
		Объект.ОсновныеНачисления.Очистить();
	Для каждого стр из Движ Цикл
		Объект.ОсновныеНачисления.Добавить();
		Объект.ОсновныеНачисления[стр.НомерСтроки-1].Сотрудник=стр.Сотрудник;
		Объект.ОсновныеНачисления[стр.НомерСтроки-1].Подразделение=стр.Подразделение;
		Объект.ОсновныеНачисления[стр.НомерСтроки-1].ВидРасчета=стр.ВидРасчета;
		Объект.ОсновныеНачисления[стр.НомерСтроки-1].ДатаНачала=стр.ПериодДействияНачало;
		Объект.ОсновныеНачисления[стр.НомерСтроки-1].ДатаОкончания=стр.ПериодДействияКонец;
		Объект.ОсновныеНачисления[стр.НомерСтроки-1].Результат=стр.Результат;
		Объект.ОсновныеНачисления[стр.НомерСтроки-1].Оклад=стр.Оклад;
		Объект.ОсновныеНачисления[стр.НомерСтроки-1].КвоДнейНевыхода=стр.КвоДнейНевыхода;
		Объект.ОсновныеНачисления[стр.НомерСтроки-1].НормаЧасов=стр.НормаЧасов;
		Объект.ОсновныеНачисления[стр.НомерСтроки-1].ФактЧасов=стр.ФактЧасов;
	КонецЦикла;
	
	
	Объект.ДополнительныеНачисления.Очистить();
	Для каждого стр из ДвижД Цикл
		Объект.ДополнительныеНачисления.Добавить();
		Объект.ДополнительныеНачисления[стр.НомерСтроки-1].Сотрудник=стр.Сотрудник;
		Объект.ДополнительныеНачисления[стр.НомерСтроки-1].Подразделение=стр.Подразделение;
		Объект.ДополнительныеНачисления[стр.НомерСтроки-1].ВидРасчета=стр.ВидРасчета;
		Объект.ДополнительныеНачисления[стр.НомерСтроки-1].Результат=стр.Результат;
		Объект.ДополнительныеНачисления[стр.НомерСтроки-1].ПроцентПремии=стр.ПроцентПремии;
		Объект.ДополнительныеНачисления[стр.НомерСтроки-1].СтажИтого=стр.СтажИтого;
		Объект.ДополнительныеНачисления[стр.НомерСтроки-1].БазаРезультат=стр.БазаРезультат;
	КонецЦикла;

		
	КонецЕсли;	
КонецПроцедуры
Показать


п.с. здесь пометила ремаркой хороший метод Объект.ОсновныеНачисления.Загрузить(Движ.Выгрузить()), к-й сразу вгружает весь регистр в форму, но при условии, что Представление полей в Источнике и Приемнике одинаковые, а у меня названия Даты разные.
14. Xershi 1484 05.05.20 12:53 Сейчас в теме
(12) у вас кеш по движениям. Вам достаточно было их перечитать. Но лучше поменять логику, чем такой изврат!
jan-pechka; +1 Ответить
15. Широкий 693 22.12.20 12:25 Сейчас в теме
18. alex25ru 17.05.21 10:22 Сейчас в теме
А что делать когда изменение наименований происходит в регламентном задании? Проблема в точности такая же, только возможности после отработки регламентного задания вызвать "ОповеститьОбИзменении" нет.
19. Nikolaich_ 8 03.12.21 13:38 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот