В принудительном порядке обновляет содержание элементов управления. Полезен при изменении значений реквизитов формы вне формы, в тот момент, когда форма отображается на экране.
Синтаксис
ОбновитьОтображениеДанных(<ОбновлятьЭлементы>)Полное описание, параметры и ограничения
ФормаКлиентскогоПриложения.ОбновитьОтображениеДанных (ClientApplicationForm.RefreshDataRepresentation)
ФормаКлиентскогоПриложения (ClientApplicationForm)
ОбновитьОтображениеДанных (RefreshDataRepresentation)
Доступен, начиная с версии 8.2.
Синтаксис:
ОбновитьОтображениеДанных(<ОбновлятьЭлементы>)
Параметры:
<ОбновлятьЭлементы> (необязательный)
Тип: ГруппаФормы, ТаблицаФормы, ПолеФормы, Массив.
Если параметр задан, то установка значений (и обновление) будет выполняться только для тех элементов, которые заданы в параметре. Если в качестве значения передан пустой массив, то ни для каких элементов формы установка значений выполнена не будет.
После вызова метода признак необходимости установки значений и обновления для элементов формы сбрасывается: если после вызова метода никакие данные формы не меняются, то ни для никаких элементов, кроме указанных, текст обновлен не будет.
Если параметр имеет значение типа Массив, то элементами массива могут быть только значения типа ГруппаФормы, ТаблицаФормы, ПолеФормы.
Если массив содержит значение другого типа, то будет выдано исключение о неверном типе параметра.
Вызов метода ОбновитьОтображениеДанных с параметром <ОбновлятьЭлементы> имеет смысл только внутри обработчика ВнешнееСобытие, обработчиков ожидания формы и обработчика ОбработкаОповещения.
В обработчиках других событий вызов этого метода с параметром аналогичен вызову без параметра (при необходимости данные будут установлены всем элементам управления).
Описание:
В принудительном порядке обновляет содержание элементов управления.
Полезен при изменении значений реквизитов формы вне формы, в тот момент, когда форма отображается на экране.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение (клиент).
Примечание:
В веб-клиенте обновление элементов управления происходит не сразу, а после окончания выполнения кода на встроенном языке.
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
Выполнить три собственных шага в состоянии покоя формы
Обработчик ожидания формы увеличивает собственное количество от 0 до 3 и выводит 250, 500, 750. Это не точный таймер и не наблюдение фонового задания.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
В отдельной учебной базе платформы 8.5.1.1343 создайте внешнюю обработку УчебнаяФорма85 с пустой управляемой основной формой. Используйте тонкий клиент Windows.
В свойствах формы → События назначьте ПриСозданииНаСервере. Вставьте полный модуль урока, включая клиентские и серверные помощники, на уровне модуля.
Не создавайте вручную ЗначениеПримера, ПолеПримера и кнопку: код создаёт их полностью. Каждый урок запускайте в отдельной копии своей формы.
Сохраните свою EPF и откройте её в учебной базе. Собственное количество начинается с 3, цена книги задана в коде как 250; исходный расчёт равен 750.
Связанный реквизит помечен как СохраняемыеДанные для изучения поведения формы. Это признак реквизита формы, а не автоматическая запись книги, файла или документа в базу.
Команда расчёта имеет ИзменяетСохраняемыеДанные = Ложь. Уроки изменяют только свой интерфейс и значения собственной формы, не конфигурацию и не рабочие данные.
Запуск и вид в 1С не проверены. Компоновку, сочетания клавиш и расположение команд осмотрите вручную в указанном клиенте; не переносите настройки на рабочие формы без отдельной проверки.
Перем Запущено;
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Новые = Новый Массив;
ТипРеквизита = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(2, 0, ДопустимыйЗнак.Неотрицательный));
Новые.Добавить(Новый РеквизитФормы("ЗначениеПримера", ТипРеквизита, "", "Количество книг", Истина));
ЭтаФорма.ИзменитьРеквизиты(Новые);
ЭтаФорма.ЗначениеПримера = 3;
Поле = Элементы.Добавить("ПолеПримера", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеВвода;
Поле.ПутьКДанным = "ЗначениеПримера";
Поле.Заголовок = "Количество собственных книг";
Поле.ТолькоПросмотр = Истина;
КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
КомандаДействия.Действие = "УчебноеДействие";
КомандаДействия.Заголовок = "Выполнить собственный учебный шаг";
КомандаДействия.Подсказка = "Действие только над данными учебной формы";
КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
Кнопка.ИмяКоманды = КомандаДействия.Имя;
Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры
&НаКлиенте
Процедура УчебноеДействие(Команда)
Если Запущено = Истина Тогда
Сообщить("Собственный проход уже запущен");
Возврат;
КонецЕсли;
Если Не ЭтаФорма.ВводДоступен() Тогда
Сообщить("Форма сейчас не допускает ввод; проход не запускается");
Возврат;
КонецЕсли;
ЗначениеПримера = 0;
Запущено = Истина;
Элементы.КнопкаУчебноеДействие.Доступность = Ложь;
Попытка
ЭтаФорма.ПодключитьОбработчикОжидания("СледующийСобственныйШаг", 1, Ложь);
Исключение
Запущено = Ложь;
Элементы.КнопкаУчебноеДействие.Доступность = Истина;
ВызватьИсключение;
КонецПопытки;
Сообщить("Ждём три собственных шага в состоянии покоя; точное время не гарантировано");
КонецПроцедуры
&НаКлиенте
Процедура СледующийСобственныйШаг() Экспорт
Если Запущено <> Истина Тогда
ЭтаФорма.ОтключитьОбработчикОжидания("СледующийСобственныйШаг");
Возврат;
КонецЕсли;
Попытка
Если ЗначениеПримера >= 3 Тогда
ЭтаФорма.ОтключитьОбработчикОжидания("СледующийСобственныйШаг");
Запущено = Ложь;
Элементы.КнопкаУчебноеДействие.Доступность = Истина;
Возврат;
КонецЕсли;
ЗначениеПримера = ЗначениеПримера + 1;
Сумма = ЗначениеПримера * 250;
ЭтаФорма.ОбновитьОтображениеДанных(Элементы.ПолеПримера);
Сообщить(СтрШаблон("Собственный шаг %1 из 3; сумма %2", ЗначениеПримера, Сумма));
Если ЗначениеПримера = 3 Тогда
ЭтаФорма.ОтключитьОбработчикОжидания("СледующийСобственныйШаг");
Запущено = Ложь;
Элементы.КнопкаУчебноеДействие.Доступность = Истина;
Сообщить(Сумма = 750);
КонецЕсли;
Исключение
ЭтаФорма.ОтключитьОбработчикОжидания("СледующийСобственныйШаг");
Запущено = Ложь;
Элементы.КнопкаУчебноеДействие.Доступность = Истина;
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
Разбор по шагам
Кнопка проверяет доступность ввода, сбрасывает только собственный реквизит и защищает проход от повторного запуска.
Подключаем клиентскую процедуру без параметров. Интервал 1 — положительное число секунд, Однократно = Ложь означает повторное подключение.
Обработчик вызывается только в состоянии покоя; реальный интервал может отличаться. Это не таймер для измерения времени.
Каждый вызов делает собственное вычисление, изменяет один реквизит и обновляет отображение именно его поля. В обработчике ожидания такая выборочная форма вызова имеет смысл.
После третьего шага явно отключаем обработчик и разблокируем кнопку. При ошибке отключение и восстановление выполняются отдельно; при закрытии формы платформа прекращает вызовы.
Как проверить результат
Дождитесь собственных шагов 1/250, 2/500, 3/750, затем Истина. Четвёртого шага нет, кнопка снова доступна.
Нажмите повторно: начинается новый собственный проход 0…3. Откройте диалог или временно заблокируйте приложение вручную в учебной базе: не ожидайте точного секундного расписания.
Ожидаемый результат
Показаны настоящий обработчик ожидания формы, выборочное обновление и завершение собственного конечного прохода.
На что обратить внимание
При интервале меньше 1 третий параметр должен быть Истина. Этот повторный пример использует ровно 1.
Не используйте ожидание формы как точный таймер; при занятости приложения вызовы откладываются.
ОбновитьОтображениеДанных с выборочным параметром не имеет такого же смысла в обычном обработчике кнопки; в веб-клиенте обновление откладывается до окончания BSL-кода.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.