- Главная
- Статьи
- 1С
- 1С 7.7
- 1С:ЗиК
- 1С 8
- Вопросы и ответы для подготовки к тестированию «1С:Профессионал» по теме «Платформа 8.3»
- 1С:КА
- 1С:ЗУП
- 1С:БП
- УТ11
- 1С:ERP
- Расширения конфигурации
- 1С-Битрикс
- 1С:Юмор
- 1С:Рецепт
- СКД
- Конвертация данных
- обновление конфигурации
- обмен данными
- Перенос данных
- 1С 7.7
- Промокоды
- Outlook
- SQL
- Web
- Sony Vegas
- Прочее
- 1С
- Услуги
- Web
- Контакты
- Скачать
23 Mar
Обновить данные формы:
ЭтаФорма.Прочитать();
Обновить данные списка (динамического списка) на форме:
Элементы.Список.Обновить();
Обновить содержание элементов управления:
ЭтаФорма.ОбновитьОтображениеДанных();
- Блог пользователя Nicholas
- Добавить комментарий
Комментарии
денис (не проверено)Thu, 07/01/21
- ответить
Александр (не проверено)Thu, 18/03/21
- ответить
Александр (не проверено)Thu, 18/03/21
- ответить
- ответить
Прямые руки (не проверено)Wed, 28/04/21
- ответить
Андрей (не проверено)Fri, 07/05/21
- ответить
Гость (не проверено)Fri, 21/05/21
- ответить
Вячеслав (не проверено)Tue, 25/05/21
- ответить
Андрей (не проверено)Tue, 01/06/21
- ответить
Александр (не проверено)Thu, 28/10/21
- ответить
Алексей (не проверено)Thu, 28/10/21
у меня в УНФ только вот так
у меня в УНФ только вот так заработало, видимо слишком много изменений в разных процедурах обновлялось
//Сохраним изменения
ЭтаФорма.Записать();
ПоказатьЗначение(,Объект.Ссылка);
- ответить
Марина (не проверено)Thu, 10/11/22
Супер! Супер! Супер! Спасибо!
Супер! Супер! Супер! Спасибо! Надо было в обработке заполнения поменять открытый объект и потом перечитать его форму
- ответить
Сергей (не проверено)Thu, 02/02/23
- ответить
Добавить комментарий
Реклама
© 2010-2022, Nicholas Mikuslas. При полном или частичном использовании материалов сайта, активная ссылка на mikuslas.ru обязательна.
УправляемаяФорма (ManagedForm)
ОбновитьОтображениеДанных (RefreshDataRepresentation)
Синтаксис:
ОбновитьОтображениеДанных(<ОбновлятьЭлементы>)
Параметры:
<ОбновлятьЭлементы> (необязательный)
Тип: ГруппаФормы; ТаблицаФормы; ПолеФормы; Массив.
Если параметр задан, то установка значений (и обновление) будет выполняться только для тех элементов, которые заданы в параметре. Если в качестве значения передан пустой массив, то ни для каких элементов формы установка значений выполнена не будет.
После вызова метода признак необходимости установки значений и обновления для элементов формы сбрасывается: если после вызова метода никакие данные формы не меняются, то ни для никаких элементов, кроме указанных, текст обновлен не будет.
Если параметр имеет значение типа Массив, то элементами массива могут быть только значения типа ГруппаФормы, ТаблицаФормы, ПолеФормы.
Если массив содержит значение другого типа, то будет выдано исключение о неверном типе параметра.
Вызов метода ОбновитьОтображениеДанных с параметром <ОбновлятьЭлементы> имеет смысл только внутри обработчика ВнешнееСобытие, обработчиков ожидания формы и обработчика ОбработкаОповещения.
В обработчиках других событий вызов этого метода с параметром аналогичен вызову без параметра (при необходимости данные будут установлены всем элементам управления).
Описание:
В принудительном порядке обновляет содержание элементов управления.
Полезен при изменении значений реквизитов формы вне формы, в тот момент, когда форма отображается на экране.
Доступность:
Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент).
Примечание:
В веб-клиенте обновление элементов управления происходит не сразу, а после окончания выполнения кода на встроенном языке.
Может это поможет?
+23
Как обновить динамический список или реквизит на форме клиента?
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закрыть форму и открыть снова — все обновится
НО если нужно обновить сразу в открытой форме, то используйте код:
Код 1C v 8.3
&НаКлиенте
Процедура ОбработатьВыборФайла(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
Если Не Результат Тогда
Возврат;
КонецЕсли;
// Много кода обработки
//...
//...
//...
// ОБНОВИМ динамический список файлы
Элементы.Файлы.Обновить();
// для обновления Реквизитов
ЭтаФорма.Прочитать();
// Обновление данных
ЭтаФорма.ОбновитьОтображениеДанных();
КонецПроцедуры
Обновить() — Обновляет данные в таблице.
Прочитать() — Обновляет объект управляемой формы.
ОбновитьОтображениеДанных() — В принудительном порядке обновляет содержание элементов управления. Полезен при изменении значений реквизитов формы вне формы, в тот момент, когда форма отображается на экране.
Как обновить управляемую форму и ее элементы
Часто при изменении заголовков элементов формы(шрифтов и прочего, эти действия не применяются или применяются не сразу.
Связано это с тем что ваши действия производятся на клиенте.
Для того, чтобы вызвать перерисовку следует вызвать любую серверную процедуру (даже с пустым кодом) ии произвести эти изменения на сервере, при этом:
- все данные передадутся с клиента на сервер;
- вернутся обратно;
- форма обновится;
- изменение высоты элементов может вызвать события активизации таблиц, которое может вызывать какие-либо сложные действия: отборы и т.п (даже если ничего фактически и не менялось).
При больших объемах данных или частых вызовах, рекомендуется не использовать данный механизм или ограничивать его частоту.
Метод ОбновитьОтображениеДанных() формы вызывает обновление для полей, где есть данные (поля ввода) при этом проверется необходимость такого обновления. Поэтому не подходит для решения задачи.
Можно дурачить всех все время, — при условии, что реклама ведется правильно, а расходы на нее достаточно велики.
Допустим, мы делаем внешнюю обработку для модификации каких-то данных. Например, групповая перенумерация документов «Требование-накладная».
У нас создана форма обработки, в которой есть реквизит формы «СписокДокументов» с типом «ТаблицаЗначений». В эту таблицу мы выводим список ссылок на отобранные для перенумерации документы.
Проводим перенумерацию и обнаруживаем, что данные в форме обработки не обновились. То есть, в системе документы успешно получили новые номера, а в форме обработки по-прежнему ображаются старые данные.
Чтобы обновить данные в форме, нужно использовать функцию глобального контекста:
ОповеститьОбИзменении(<Ссылка>)
В нашем случае мы в модуле формы внешней обработки, в процедуре, выполняемой на клиенте, после завершения перенумерации добавляем код:
ОповеститьОбИзменении(Тип("ДокументСсылка.ТребованиеНакладная"));
В результате выполнения этой функции обновится кэш представления ссылок указанного типа данных, и в форме обработки мы увидим обновлённые данные.
Также можно использовать метод:
ОбновитьОтображениеДаных()
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закрыть форму и открыть снова — все обновится но если нужно обновить сразу в открытой форме, то используйте код:
&НаКлиенте
Процедура ОбработкаДанныхКлиент() Экспорт
//Обрабатываем на сервере, например создаем записи в регистре сведений
//................
ОбработкаДанныхСервер();
//................
//Обновление динамического списка на форме
Элементы.Список.Обновить();
//Обновим реквизиты
ЭтаФорма.Прочитать();
// Обновление данных
ЭтаФорма.ОбновитьОтображениеДанных();
КонецПроцедуры
Обновить() — Обновляет данные в таблице.
Прочитать() — Обновляет объект управляемой формы.
ОбновитьОтображениеДанных() — В принудительном порядке обновляет содержание элементов управления. Полезен при изменении значений реквизитов формы вне формы, в тот момент, когда форма отображается на экране.
You have no rights to post comments
На чтение 4 мин Просмотров 6.9к. Опубликовано 27.12.2017
Платформа 1С:Предприятие позволяет программно добавлять и изменять элементы управляемой формы. Разберемся для чего это может потребоваться.
Программная модификация формы может потребоваться в нескольких случаях:
- При доработке типовых конфигураций для облегчения процедуры последующего обновления. В этом случае будет изменен только модуль формы. Модули намного проще обновлять, чем форму.
- При реализации некоторых общих алгоритмов. Например, в подсистеме БСП «Запрет редактирования реквизитов объектов» для всех подключенных к подсистеме объектов предусмотрено программное создание кнопки для включения возможности редактирования реквизитов.
- При реализации некоторых специфических алгоритмов. Например, в справочнике Номенклатура создаются поля для редактирования дополнительных реквизитов.
В управляемой форме можно программно добавить, изменить и удалить:
- реквизиты;
- локальные команды;
- элементы.
Все указанные операции возможны только на сервере.
Программное изменение формы имеет ограничения:
- Удалить можно только программно добавленные реквизиты/команды/элементы. Нельзя программно удалить объекты, созданные в конфигураторе.
- Нельзя назначить реквизит основным.
Содержание
- Изменение команд формы
- Изменение реквизитов формы
- Изменение элементов формы
Изменение команд формы
Для управления составом команд у объекта УправляемаяФорма есть коллекция Команды. У коллекции есть несколько методов:
-
Добавить(<ИмяКоманды>)
-
Количество()
-
Найти(<ИмяКоманды>)
-
Удалить(<Команда>)
Коллекция Команды доступна как на клиенте, так и на сервере. Изменять коллекцию (методы Добавить() и Удалить()) можно только на сервере. Искать и получать количество элементов (методы Найти() и Количество()) можно как на клиенте, так и на сервере.
В качестве примера работы с командами формы создадим новую команду ИсторияИзменений с заголовком «История изменений…», которая будет вызвать обработчик ОтобразитьИсторию(). Создание выполняется при открытии формы.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Команда = Команды.Добавить(«ИсторияИзменений»);
Команда.Действие = «Подключаемый_ОтобразитьИсторию»;
Команда.Заголовок = «История изменений…»;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОтобразитьИсторию(Команда)
// действия команды
КонецПроцедуры
Обработчик команды должен располагаться в форме и иметь директиву компиляции &НаКлиенте.
Изменение реквизитов формы
Чтение состава реквизитов формы выполняется функцией ПолучитьРеквизиты(<Путь>), возвращающей массив типа РеквизитФормы. Параметр функции указывает путь к родительскому реквизиту (в виде строки). Если параметр опущен или указана пустая строка, возвращаются реквизиты верхнего уровня.
Изменение реквизитов выполняется методом ИзменитьРеквизиты(<ДобавляемыеРеквизиты>, <УдаляемыеРеквизиты>) объекта УправляемаяФорма. В параметр ДобавляемыеРеквизиты передается массив с элементами типа РеквизитФормы. В параметр УдаляемыеРеквизиты передается массив строк, описывающих пути к удаляемым реквизитам.
Внимание!
Процесс изменения состава реквизитов является достаточно ресурсоемким. Фактически выполняется пересоздание формы. В связи с этим работа с реквизитами формы выполняется в пакетном режиме.
Создадим новый реквизит формы с именем Покупатель:
// Описание добавляемых реквизитов
ДобавляемыеРеквизиты = Новый Массив;
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(«Покупатель», Новый ОписаниеТипов(«СправочникСсылка.Контрагенты»), , «Клиент»));// Изменения состава реквизитов
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
Изменение элементов формы
Для управления составом элементов у объекта УправляемаяФорма есть коллекция Элементы. У коллекции есть несколько методов:
-
Вставить(<Имя>, <ТипЭлемента>, <Родитель>, <Элемент>)
-
Добавить(<Имя>, <ТипЭлемента>, <Родитель>)
-
Количество()
-
Найти(<Имя>)
-
Переместить(<Элемент>, <Родитель>, <МестоРасположения>)
-
Удалить(<Элемент>)
Коллекция Элементы доступна как на клиенте, так и на сервере. Изменять коллекцию (методы Вставить(), Добавить(), Переместить() и Удалить()) можно только на сервере. Искать и получать количество элементов (методы Найти() и Количество()) можно как на клиенте, так и на сервере. Элементами коллекции могут быть:
- ГруппаФормы;
- ТаблицаФормы;
- ПолеФормы;
- КнопкаФормы.
Элементам формы можно программно назначить обработчики событий. Для этих целей предназначен метод УстановитьДействие(<ИмяСобытия>, <Действие>).
Рассмотрим несколько наиболее распространенных на практике примеров работы с командами, реквизитами и элементами формы.
Добавление команды и связанной с ней кнопки:
// Создание команды
Команда = Команды.Добавить(«ИсторияИзменений»);
Команда.Действие = «Подключаемый_ОтобразитьИсторию»; // В форме должна быть процедура с указанным наименованием
Команда.Заголовок = «История изменений…»;
// Создание кнопки и связь ее с командой
Элемент = Элементы.Добавить(«ИсторияИзменений», Тип(«КнопкаФормы»));
Элемент.ИмяКоманды = «ИсторияИзменений»;
Добавление реквизита и связанного с ним поля ввода:
// Описание добавляемых реквизитов
ДобавляемыеРеквизиты = Новый Массив;
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(«Покупатель», Новый ОписаниеТипов(«СправочникСсылка.Контрагенты»), , «Клиент»));
// Изменение состава реквизитов
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
// Создание поля ввода и связь с реквизитом
Элемент = Элементы.Добавить(«Покупатель», Тип(«ПолеФормы»));
Элемент.Вид = ВидПоляФормы.ПолеВвода;
Элемент.ПутьКДанным = «Покупатель»;
Назначение элементу формы обработчика события:
ЭлементПокупатель.УстановитьДействие(«ПриИзменении», «Подключаемый_ПокупательПриИзменении»);
&НаКлиенте
Процедура Подключаемый_ПокупательПриИзменении(Элемент)
// Действия события
КонецПроцедуры
Внимание!
Процедурам, которые устанавливаются в качестве обработчиков событий из кода с помощью метода УстановитьДействие(), рекомендуется задавать префикс Подключаемый_.
Внимание!
Скачать обработку с примерами программного поиска и изменения реквизитов, команд и элементов управляемой формы можно ЗДЕСЬ.