Обновление реквизитов управляемой формы #795660


#0 by McNamara
Добрый день, такой вопрос. 1С 8.3, документ в нем ТЧ Товары, типовая конфа. При клике по ячейке с Характеристикой элемент характеристики перезаписыватся программно в коде(переименовывается). Но после этого он не обновляется на форме документа. И даже если переоткрыть документ, на форме он тоже остается прежний. На сервере в ТЧ Товары ссылка на новый элемент, а на клиенте в ДанныхФормы находится старый элемент до переименования. Как будто он не считывает его из базы. Методы ОбновитьОтображениеДанных,Прочитать не помогают. Если перезаписать характиристку в форме характеристики, то в документе он обновляется мгновенно. Как исправить?
#1 by Тихий омут
Чёт сумбурно как-то. Характеристика всё таки переименовывается или создаётся новая? Это я про "на сервере в ТЧ Товары ссылка на новый элемент, на клиенте в ДанныхФормы находится старый элемент до переименования"
#2 by Cyberhawk
"даже если переоткрыть документ, на форме он тоже остается прежний" // Переоткрой через 20 секунд, объектый кэш наверное злую штуку с тобой играет
#3 by McNamara
Характиристика переименовывается программно из формы документа. В базе характеристика с новым наимнованием, а в ТЧ Товары со старым.
#4 by McNamara
А как принудительно заставить форму прочесть ссылку из базы данных, а не из кэша..Форма видимо не понимает что я объект в базе изменился.
#5 by Cyberhawk
ищи метод не у формы, а у таблицы или даже поля таблицы
#6 by Cyberhawk
Если ТаблицаФормы.Обновить не прокатывает, то еще проверь, что ты не используешь контекстный серверный вызов - замени на неконтекстный
#7 by Cyberhawk
Получилось?
#8 by McNamara
Нет, неконтекстный вызов тоже не помогает. Попробую методы ПолучитьОбъект и Прочитать у характеристики.. Если не получится, то буду характеристику через форму характеристики записывать, иначе хз как делать.
#9 by Cyberhawk
Эти методы читают из объектного кэша (что кажется ахтунгом каким-то - Прочитать не обновляет объектый кэш), скорее всего не прокатит
#10 by Buster007
ОбновитьОтображениеДанных (RefreshDataRepresentation) Синтаксис: ОбновитьОтображениеДанных(<ОбновлятьЭлементы>) Параметры: Тип: ГруппаФормы; ТаблицаФормы; ПолеФормы; Массив. Если параметр задан, то установка значений (и обновление) будет выполняться только для тех элементов, которые заданы в параметре. Если в качестве значения передан пустой массив, то ни для каких элементов формы установка значений выполнена не будет. После вызова метода признак необходимости установки значений и обновления для элементов формы сбрасывается: если после вызова метода никакие данные формы не меняются, то ни для никаких элементов, кроме указанных, текст обновлен не будет. Если параметр имеет значение типа Массив, то элементами массива могут быть только значения типа ГруппаФормы, ТаблицаФормы, ПолеФормы. Если массив содержит значение другого типа, то будет выдано исключение о неверном типе параметра. Вызов метода ОбновитьОтображениеДанных с параметром <ОбновлятьЭлементы> имеет смысл только внутри обработчика ВнешнееСобытие, обработчиков ожидания формы и обработчика ОбработкаОповещения. В обработчиках других событий вызов этого метода с параметром аналогичен вызову без параметра (при необходимости данные будут установлены всем элементам управления). Описание: В принудительном порядке обновляет содержание элементов управления. Полезен при изменении значений реквизитов формы вне формы, в тот момент, когда форма отображается на экране. Доступность: Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент). Примечание: В веб-клиенте обновление элементов управления происходит не сразу, а после окончания выполнения кода на встроенном языке. Может это поможет?
#11 by Buster007
+ а можно еще после программного изменения вызвать метод ОповеститьОбИзменении(СсылкаСИзмененнымНаименованием);
#12 by McNamara
о чудо, ОповеститьОбИзменении помогло! Всем спасибо.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С