1с как обновить реквизит управляемой формы

Главная

  • Главная
  • Статьи
      • 1С 7.7
        • 1С:ЗиК
      • 1С 8
        • Вопросы и ответы для подготовки к тестированию «1С:Профессионал» по теме «Платформа 8.3»
        • 1С:КА
        • 1С:ЗУП
        • 1С:БП
        • УТ11
        • 1С:ERP
        • Расширения конфигурации
      • 1С-Битрикс
      • 1С:Юмор
      • 1С:Рецепт
      • СКД
      • Конвертация данных
      • обновление конфигурации
      • обмен данными
      • Перенос данных
    • Промокоды
    • Outlook
    • SQL
    • Web
    • Sony Vegas
    • Прочее
  • Услуги
  • Web
  • Контакты
  • Скачать

23 Mar

Обновить данные формы:

ЭтаФорма.Прочитать();

Обновить данные списка (динамического списка) на форме:

Элементы.Список.Обновить();

Обновить содержание элементов управления:

ЭтаФорма.ОбновитьОтображениеДанных();
  • Блог пользователя Nicholas
  • Добавить комментарий

Комментарии

Аватар пользователя денис

денис (не проверено)Thu, 07/01/21

  • ответить

Аватар пользователя Александр

Александр (не проверено)Thu, 18/03/21

  • ответить

Аватар пользователя Александр

Александр (не проверено)Thu, 18/03/21

  • ответить

Аватар пользователя Nicholas

  • ответить

Аватар пользователя Прямые руки

Прямые руки (не проверено)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

  • ответить

Добавить комментарий

Реклама

The Matrix has you...

© 2010-2022, Nicholas Mikuslas. При полном или частичном использовании материалов сайта, активная ссылка на mikuslas.ru обязательна.

 +23 

   

Распечатать

Как обновить динамический список или реквизит на форме клиента?

Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закрыть форму и открыть снова — все обновится

НО если нужно обновить сразу в открытой форме, то используйте код:

Код 1C v 8.3

  &НаКлиенте
Процедура ОбработатьВыборФайла(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
Если Не Результат Тогда
 Возврат; 
КонецЕсли;
// Много кода обработки
//...
//...
//...

// ОБНОВИМ динамический список файлы
Элементы.Файлы.Обновить();

// для обновления Реквизитов
ЭтаФорма.Прочитать();

// Обновление данных
ЭтаФорма.ОбновитьОтображениеДанных();

КонецПроцедуры

Обновить() — Обновляет данные в таблице.

Прочитать() — Обновляет объект управляемой формы.

ОбновитьОтображениеДанных() — В принудительном порядке обновляет содержание элементов управления. Полезен при изменении значений реквизитов формы вне формы, в тот момент, когда форма отображается на экране.

Как обновить управляемую форму и ее элементы

Часто при изменении заголовков элементов формы(шрифтов и прочего, эти действия не применяются или применяются не сразу.

Связано это с тем что ваши действия производятся на клиенте.

Для того, чтобы вызвать перерисовку следует вызвать любую серверную процедуру (даже с пустым кодом) ии произвести эти изменения на сервере, при этом:

  • все данные передадутся с клиента на сервер;
  • вернутся обратно;
  • форма обновится;
  • изменение высоты элементов может вызвать события активизации таблиц, которое может вызывать какие-либо сложные действия: отборы и т.п (даже если ничего фактически и не менялось).

При больших объемах данных или частых вызовах, рекомендуется не использовать данный механизм или ограничивать его частоту.

Метод ОбновитьОтображениеДанных() формы вызывает обновление для полей, где есть данные (поля ввода) при этом проверется необходимость такого обновления. Поэтому не подходит для решения задачи.

Можно дурачить всех все время, — при условии, что реклама ведется правильно, а расходы на нее достаточно велики.

Допустим, мы делаем внешнюю обработку для модификации каких-то данных. Например, групповая перенумерация документов «Требование-накладная».

 У нас создана форма обработки, в которой есть реквизит формы «СписокДокументов» с типом «ТаблицаЗначений». В эту таблицу мы выводим список ссылок на отобранные для перенумерации документы.

1С. Обновление реквизита формы.

Проводим перенумерацию и обнаруживаем, что данные в форме обработки не обновились. То есть, в системе документы успешно получили новые номера, а в форме обработки по-прежнему ображаются старые данные.

Чтобы обновить данные в форме, нужно использовать функцию глобального контекста:

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

В нашем случае мы в модуле формы внешней обработки, в процедуре, выполняемой на клиенте, после завершения перенумерации добавляем код:

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

В результате выполнения этой функции обновится кэш представления ссылок указанного типа данных, и в форме обработки мы увидим обновлённые данные.

Также можно использовать метод: 

ОбновитьОтображениеДаных()

Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закрыть форму и открыть снова — все обновится но если нужно обновить сразу в открытой форме, то используйте код:

&НаКлиенте
Процедура ОбработкаДанныхКлиент() Экспорт

//Обрабатываем на сервере, например создаем записи в регистре сведений
//................
ОбработкаДанныхСервер();
//................


//Обновление динамического списка на форме

Элементы.Список.Обновить();



//Обновим реквизиты

ЭтаФорма.Прочитать();



// Обновление данных

ЭтаФорма.ОбновитьОтображениеДанных();



КонецПроцедуры   

Обновить() — Обновляет данные в таблице.

Прочитать() — Обновляет объект управляемой формы.

ОбновитьОтображениеДанных() — В принудительном порядке обновляет содержание элементов управления. Полезен при изменении значений реквизитов формы вне формы, в тот момент, когда форма отображается на экране.

You have no rights to post comments

87-150 Okolokompa Форум

(@anatol)

Сообщения: 53

Estimable Member

Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закрыть форму и открыть снова — все обновится.

НО если нужно обновить сразу в открытой форме, то используйте код:

&НаКлиенте
Процедура ОбработатьВыборФайла(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт

Если Не Результат Тогда
 Возврат; 
КонецЕсли;

// Много кода обработки
//...
//...
//...

// ОБНОВИМ динамический список файлы
Элементы.Файлы.Обновить();

// для обновления Реквизитов
ЭтаФорма.Прочитать();

// Обновление данных
ЭтаФорма.ОбновитьОтображениеДанных();

КонецПроцедуры

Обновить() — Обновляет данные в таблице.

Прочитать() — Обновляет объект управляемой формы.

ОбновитьОтображениеДанных() — В принудительном порядке обновляет содержание элементов управления. Полезен при изменении значений реквизитов формы вне формы, в тот момент, когда форма отображается на экране.

Размещено : 16/09/2020 8:25 дп

На чтение 5 мин Просмотров 2.3к. Опубликовано 05.10.2020

Область применения: управляемое приложение, мобильное приложение.

1. Платформа 1С:Предприятие по умолчанию обновляет содержимое динамических списков при выполнении пользователем стандартных команд по изменению элементов этого списка ( Записать , Провести , Пометить на удаление и т.п.) и при добавлении новых элементов. Но в ряде ниже перечисленных случаев такое обновление следует предусмотреть явно в прикладном коде.

2. Команды, которые изменяют объекты и размещаются в форме списка, должны заботиться об обновлении списка объектов после своего выполнения. Например, после изменения одного объекта рекомендуется вызывать метод ОповеститьОбИзменении :

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

ОбъектСсылка = ПараметрКоманды;
// Меняем объект
// .
ОповеститьОбИзменении(ОбъектСсылка);

При изменении нескольких объектов целесообразно обновлять список однократно, в конце операции:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

Для Каждого ОбъектСсылка Из ПараметрКоманды Цикл
// Меняем объект
// .
КонецЦикла;

3. Также должно быть обеспечено обновление данных в динамическом списке, у которого не назначена основная таблица. Такие динамические списки могут отображать данные из нескольких таблиц.

3.1. Если данные добавляются или изменяются командой, расположенной в форме динамического списка, то необходимо обновить список явно после выполнения команды.

3.2. Если данные изменяются в какой-либо другой форме (например, в форме объекта), то необходимо организовать обновление списка через оповещение. Для этого в каждой форме объекта, данные которого выводятся в динамическом списке, следует реализовать обработчик события ПослеЗаписи с использованием метода Оповестить :

Оповестить («Запись_ «, ПараметрыОповещения, ОбъектСсылка);

  • Запись_ — имя события, в котором — имя объекта, как оно задано в метаданных. Например, для документа «Расходная накладная» имя события будет «Запись_РасходнаяНакладная» .
  • ПараметрыОповещения – как правило, это параметр события ПослеЗаписи формы объекта. Состав свойств структуры может быть расширен исходя из потребностей прикладной логики.
  • ОбъектСсылка – ссылка на записываемый объект.

Затем в обработчике события Оповещение в форме динамического списка разместить код по обновлению динамического списка вида:

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

Если Врег(ИмяСобытия) = Врег(«Запись_РасходнаяНакладная»)
Или Врег(ИмяСобытия) = Врег(«Запись_НакладнаяНаПеремещение») Тогда
Элементы.СписокНакладных.Обновить();
КонецЕсли;

При этом имена событий следует проверять явным образом, чтобы исключить неоправданное обновление списка.

3.3. При изменении сразу нескольких объектов в параметре ОбъектСсылка метода Оповестить следует передавать значение Неопределено .

Оповестить(«Запись_РасходнаяНакладная», ПараметрыЗаписи, Неопределено);

Допустим, мы делаем внешнюю обработку для модификации каких-то данных. Например, групповая перенумерация документов «Требование-накладная».

У нас создана форма обработки, в которой есть реквизит формы «СписокДокументов» с типом «ТаблицаЗначений». В эту таблицу мы выводим список ссылок на отобранные для перенумерации документы.

Проводим перенумерацию и обнаруживаем, что данные в форме обработки не обновились. То есть, в системе документы успешно получили новые номера, а в форме обработки по-прежнему ображаются старые данные.

Чтобы обновить данные в форме, нужно использовать функцию глобального контекста:

В нашем случае мы в модуле формы внешней обработки, в процедуре, выполняемой на клиенте, после завершения перенумерации добавляем код:

В результате выполнения этой функции обновится кэш представления ссылок указанного типа данных, и в форме обработки мы увидим обновлённые данные.

Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закрыть форму и открыть снова — все обновится

НО если нужно обновить сразу в открытой форме, то используйте код:

Обновить()Обновляет данные в таблице.

Прочитать()Обновляет объект управляемой формы.

ОбновитьОтображениеДанных()В принудительном порядке обновляет содержание элементов управления. Полезен при изменении значений реквизитов формы вне формы, в тот момент, когда форма отображается на экране.

Похожие FAQ

Еще в этой же категории

Как на управляемой форме разместить список регистра сведений с отбором? 15
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация) 1. Создание реквизита: Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом » ДинамическийСписок» В поле » Основная табли Поле выбора

Заполнение списка значений в элементе поле выбора на форме 10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип — Произвольный, Использование — Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Как установить параметр динамического списка? 9
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Форма

Программное создание таблицы значений с условным оформлением 6
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Форма

  • Распечатать

Оцените статью:

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1

(0 голосов, среднее: 0 из 5)

Поделитесь с друзьями!

Понравилась статья? Поделить с друзьями:
  • 1с как обратиться к реквизиту формы отчета
  • 1с как перебрать все реквизиты справочника
  • 1с как получить программно реквизиты формы
  • 1с макеты печатных форм добавить реквизиты
  • 1с метаданные проверить наличие реквизитах