Не обновляется представление объекта в табличной части документа
Доброго времени суток!
Возникла такая проблема. В УТ11.3 есть документ "ТаможеннаяДекларация". Табличная часть документа содержит серии номенклатуры и номера ГТД. Понадобилось сделать так, чтобы после проведения документа наименования серий менялись - в номер и наименование серии должен входить номер ГТД из соответствующей строки. В процедуру модуля формы документа ПослеЗаписиНаСервере() я добавил фрагмент, который меняет номера и наименования серий в строках. Серии изменяются, но почему-то в табличной части формы остаются старые представления! Если документ закрыть и снова открыть, то представления серий в табличной части все равно старые, хотя, если смотреть в отладчике, видно, что номера и наименования серий поменялись. А если закрыть сеанс 1С и снова запустить, и открыть эту же декларацию, то представления серий в табличной части уже новые. Кроме того, если в текущем сеансе открыть форму списка справочника серий и спозиционироваться на измененной серии, то видно, что представление у неё уже новое, и после такого позиционирования представление этой серии в таблице формы документа сразу изменится на новое. Подскажите, пожалуйста, почему, хотя серия изменилась, её представление в документе остается старым до конца сеанса, даже если документ закрыть и повторно открыть?
Заранее благодарю
Возникла такая проблема. В УТ11.3 есть документ "ТаможеннаяДекларация". Табличная часть документа содержит серии номенклатуры и номера ГТД. Понадобилось сделать так, чтобы после проведения документа наименования серий менялись - в номер и наименование серии должен входить номер ГТД из соответствующей строки. В процедуру модуля формы документа ПослеЗаписиНаСервере() я добавил фрагмент, который меняет номера и наименования серий в строках. Серии изменяются, но почему-то в табличной части формы остаются старые представления! Если документ закрыть и снова открыть, то представления серий в табличной части все равно старые, хотя, если смотреть в отладчике, видно, что номера и наименования серий поменялись. А если закрыть сеанс 1С и снова запустить, и открыть эту же декларацию, то представления серий в табличной части уже новые. Кроме того, если в текущем сеансе открыть форму списка справочника серий и спозиционироваться на измененной серии, то видно, что представление у неё уже новое, и после такого позиционирования представление этой серии в таблице формы документа сразу изменится на новое. Подскажите, пожалуйста, почему, хотя серия изменилась, её представление в документе остается старым до конца сеанса, даже если документ закрыть и повторно открыть?
Заранее благодарю
По теме из базы знаний
- Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2
- Загрузка документов и номенклатуры из Excel в 1С "одним нажатием": УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы
- Обмен 1С с Честным Знаком для УТ11, УНФ, КА2, ERP, Розница: Расширение для работы с СУЗ, ГИС МТ, ЦРПТ
- Подсистема сопоставления
- Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Сам вот немало часов промаялся с этим загадочным обновлением представления ссылки после изменения полей формирующих это самое представление. Хотел было уже плюнуть, но не тут-то было! Неожиданно и приятно подфартило!
Для некоего документа сделал автоматическое создание по его данным другого вида документа и сразу же заполнение ТЧ этого некоего документа новыми либо перезаполненными (перезаписанными) документами. И вот когда в соответствующих ячейках ТЧ было пусто, то всё норм создавалось и проставлялось, а вот когда повторно выполнялась эта команда (выведена кнопкой в командной панели ТЧ), то шло перезаполнение (перезапись, без отключения контроля записи) тех доков и, например, если изменилась дата, то представление ссылок в строках этой ТЧ и в таксишных выпадающих списках полей ввода этих ячеек не менялись, пока не потыкаешься вручную интерактивно по соответствующим формам выбора и т.п., точных манипуляшек не запоминал, но переоткрытие формы этого злополучного некоего документа точно не помогало, ладно хотя бы перезапуск сеанса безупречно с этим справлялся)). Также не помогли ни Прочитать(), ни Элементы.ТЧ.Обновить(), ни ОбновитьОтображениеДанных(), ОбновитьПовторноИспользуемыеЗначения(), ни т.п. ...КРОМЕ!!! ВНИМАНИЕ!!!
В самом конце Процедуры (&НаКлиенте) команды этот метод вставил.
Для задачек, подобной сути, но с обработкой единичного объекта, в качестве параметра разумнее передавать не тип, а его ссылку, согласно СП. "УФ" уж этот непредсказуемый "кешка" ;)
Глобальный контекст.ОповеститьОбИзменении (Global context.NotifyChanged)
Глобальный контекст (Global context)
ОповеститьОбИзменении (NotifyChanged)
Вариант синтаксиса: Изменен один объект
Синтаксис:
ОповеститьОбИзменении(<Ссылка>)
Параметры:
<Ссылка> (обязательный)
Тип: СправочникСсылка.<Имя справочника>; ДокументСсылка.<Имя документа>; ПеречислениеСсылка.<Имя перечисления>; ПланСчетовСсылка.<Имя плана счетов>; ПланВидовРасчетаСсылка.<Имя плана видов расчета>; ПланВидовРасчетаСсылка.<Имя плана видов расчета>; БизнесПроцессСсылка.<Имя бизнес-процесса>; ЗадачаСсылка.<Имя задачи>; РегистрСведенийКлючЗаписи.<Имя регистра сведений>; РегистрНакопленияКлючЗаписи.<Имя регистра накопления>; РегистрБухгалтерииКлючЗаписи.<Имя регистра бухгалтерии>; РегистрРасчетаКлючЗаписи.<Имя регистра расчета>; ПланОбменаСсылка.<Имя плана обмена>.
Ссылка измененного объекта или ключ измененной записи регистра, об изменении которой(го) необходимо уведомить динамические списки, чтобы они обновились.
Поведение при очистке кэша (такое же, как при интерактивном изменении):
кэш представлений ссылок - очищаются записи, соответствующие измененной ссылке;
кэш данных через точку - удаляются те записи, которые имеют в пути ссылки того же типа, что и измененная;
кэш данных быстрого выбора - данные хранятся по типам, очищаются данные, которые относятся к типу измененной ссылки;
кэш ограничений по типу - данные хранятся по типам, очищаются данные, которые относятся к типу измененной ссылки.
Описание варианта метода:
Уведомляет динамические списки на клиенте об изменении одного объекта базы данных или одной записи регистра.
Вариант синтаксиса: Изменено много объектов
Синтаксис:
ОповеститьОбИзменении(<ИзмененныйТип>)
Параметры:
<ИзмененныйТип> (обязательный)
Тип: Тип.
Тип изменившихся объектов, например "ДокументСсылка.РасходнаяНакладная".
Поведение при очистке кэша - очищается вся информация, которая связана с измененным типом.
Описание варианта метода:
Уведомляет динамические списки на клиенте об изменении множества объектов или множества записей регистра.
Доступность:
Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент).
Примечание:
Уведомление не влияет на динамические списки, у которых не задана основная таблица.
Динамические списки в тонком и веб-клиенте не обновляются при изменении данных в базе данных автоматически. Обновление динамического списка происходит при явном вызове метода, а также при выполнении стандартных команд записи данных форм.
Также осуществляется очистка закэшированных данных на клиенте. В частности, очищается кэш представлений ссылок, кэш данных через точку, кэш данных быстрого выбора, кэш ограничений по типу, кэш форм выбора. Удаляется только та информация, которая стала недействительной.
Для некоего документа сделал автоматическое создание по его данным другого вида документа и сразу же заполнение ТЧ этого некоего документа новыми либо перезаполненными (перезаписанными) документами. И вот когда в соответствующих ячейках ТЧ было пусто, то всё норм создавалось и проставлялось, а вот когда повторно выполнялась эта команда (выведена кнопкой в командной панели ТЧ), то шло перезаполнение (перезапись, без отключения контроля записи) тех доков и, например, если изменилась дата, то представление ссылок в строках этой ТЧ и в таксишных выпадающих списках полей ввода этих ячеек не менялись, пока не потыкаешься вручную интерактивно по соответствующим формам выбора и т.п., точных манипуляшек не запоминал, но переоткрытие формы этого злополучного некоего документа точно не помогало, ладно хотя бы перезапуск сеанса безупречно с этим справлялся)). Также не помогли ни Прочитать(), ни Элементы.ТЧ.Обновить(), ни ОбновитьОтображениеДанных(), ОбновитьПовторноИспользуемыеЗначения(), ни т.п. ...КРОМЕ!!! ВНИМАНИЕ!!!
ОповеститьОбИзменении(Тип("ДокументСсылка.НазваниеДокументаСЗагадочнымОтображениемПредставленияСсылки"));
В самом конце Процедуры (&НаКлиенте) команды этот метод вставил.
Для задачек, подобной сути, но с обработкой единичного объекта, в качестве параметра разумнее передавать не тип, а его ссылку, согласно СП. "УФ" уж этот непредсказуемый "кешка" ;)
Глобальный контекст.ОповеститьОбИзменении (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
–
Ответить
(2)
Думал в чем дело.
Об этой функции знал. Но смутило фраза динамический список.
А ключевое здесь обновление кеша!
В итоге после группового изменения времени в документах теперь их преставление обновляется и вопрос решен.
ОповеститьОбИзменении
у меня была табличная часть. Иногда представление обновлялось. Иногда нет.
Думал в чем дело.
Об этой функции знал. Но смутило фраза динамический список.
А ключевое здесь обновление кеша!
В итоге после группового изменения времени в документах теперь их преставление обновляется и вопрос решен.
Но для тонкого клиента не помогает. При запуске в режиме Толстый клиент Управляемое приложение все красиво работает и при стандартных средствах, а как только переключаешь режим запуска, то возникает стандартная ситуация с обновлением данных после смены сеанса.
эта тема более всего близка к описанию глюка с которым столкнулась.
Итак, как только добавила механизм Перерасчетов в регистры расчета, то с самой формой документа Начисления зп-начали происходить чудеса: то пропадают введенные ранее данные, то появляются вообще старые данные расчетов...Причем в регистрах расчета все Ок и верно!
Перепробывала все варианты, которые предлагались в инете с обновлением формы-ничего не помогает.
Выкрутилась просто: в модуле формы в проц.ПриОткрытии - силком запихиваю актуальные данные из рег.расчета в форму док.начисления:
п.с. здесь пометила ремаркой хороший метод Объект.ОсновныеНачисления.Загрузить(Движ.Выгрузить()), к-й сразу вгружает весь регистр в форму, но при условии, что Представление полей в Источнике и Приемнике одинаковые, а у меня названия Даты разные.
Итак, как только добавила механизм Перерасчетов в регистры расчета, то с самой формой документа Начисления зп-начали происходить чудеса: то пропадают введенные ранее данные, то появляются вообще старые данные расчетов...Причем в регистрах расчета все Ок и верно!
Перепробывала все варианты, которые предлагались в инете с обновлением формы-ничего не помогает.
Выкрутилась просто: в модуле формы в проц.ПриОткрытии - силком запихиваю актуальные данные из рег.расчета в форму док.начисления:
&НаСервере
Процедура ПриОткрытииНаСервере()
Если Объект.Ссылка.Пустая() Тогда
возврат;
Иначе
//НЕ ЗНАЮ почему, но после запуска механизма ПЕРЕРАСЧЕТОВ-форма дока глючит!!!-отражает при открытии старые данные, а не актуальные!!!
Движ=РегистрыРасчета.ОсновныеНачисления.СоздатьНаборЗаписей();
Движ.Отбор.Регистратор.Установить(Объект.Ссылка);
Движ.Прочитать();
//Объект.ОсновныеНачисления.Загрузить(Движ.Выгрузить());
ДвижД=РегистрыРасчета.ДополнительныеНачисления.СоздатьНаборЗаписей();
ДвижД.Отбор.Регистратор.Установить(Объект.Ссылка);
ДвижД.Прочитать();
//Объект.ДополнительныеНачисления.Загрузить(ДвижД.Выгрузить());
Объект.ОсновныеНачисления.Очистить();
Для каждого стр из Движ Цикл
Объект.ОсновныеНачисления.Добавить();
Объект.ОсновныеНачисления[стр.НомерСтроки-1].Сотрудник=стр.Сотрудник;
Объект.ОсновныеНачисления[стр.НомерСтроки-1].Подразделение=стр.Подразделение;
Объект.ОсновныеНачисления[стр.НомерСтроки-1].ВидРасчета=стр.ВидРасчета;
Объект.ОсновныеНачисления[стр.НомерСтроки-1].ДатаНачала=стр.ПериодДействияНачало;
Объект.ОсновныеНачисления[стр.НомерСтроки-1].ДатаОкончания=стр.ПериодДействияКонец;
Объект.ОсновныеНачисления[стр.НомерСтроки-1].Результат=стр.Результат;
Объект.ОсновныеНачисления[стр.НомерСтроки-1].Оклад=стр.Оклад;
Объект.ОсновныеНачисления[стр.НомерСтроки-1].КвоДнейНевыхода=стр.КвоДнейНевыхода;
Объект.ОсновныеНачисления[стр.НомерСтроки-1].НормаЧасов=стр.НормаЧасов;
Объект.ОсновныеНачисления[стр.НомерСтроки-1].ФактЧасов=стр.ФактЧасов;
КонецЦикла;
Объект.ДополнительныеНачисления.Очистить();
Для каждого стр из ДвижД Цикл
Объект.ДополнительныеНачисления.Добавить();
Объект.ДополнительныеНачисления[стр.НомерСтроки-1].Сотрудник=стр.Сотрудник;
Объект.ДополнительныеНачисления[стр.НомерСтроки-1].Подразделение=стр.Подразделение;
Объект.ДополнительныеНачисления[стр.НомерСтроки-1].ВидРасчета=стр.ВидРасчета;
Объект.ДополнительныеНачисления[стр.НомерСтроки-1].Результат=стр.Результат;
Объект.ДополнительныеНачисления[стр.НомерСтроки-1].ПроцентПремии=стр.ПроцентПремии;
Объект.ДополнительныеНачисления[стр.НомерСтроки-1].СтажИтого=стр.СтажИтого;
Объект.ДополнительныеНачисления[стр.НомерСтроки-1].БазаРезультат=стр.БазаРезультат;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Показатьп.с. здесь пометила ремаркой хороший метод Объект.ОсновныеНачисления.Загрузить(Движ.Выгрузить()), к-й сразу вгружает весь регистр в форму, но при условии, что Представление полей в Источнике и Приемнике одинаковые, а у меня названия Даты разные.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот