Установить Соответствие Объекта И Формы

Печать (Ctrl+P)

Командный интерфейс

Описание процедуры УстановитьСоответствиеОбъектаИФормы() и функции ПолучитьСоответствиеОбъектаИФормы( ) находится в разделе Глобальный контекст/ процедуры и функции работы с универсальными объектами синтаксис – помощника электронной документации платформы :

Процедура УстановитьСоответствиеОбъектаИФормы() устанавливает соответствие управляемой формы и объектов вида СообщениеПользователю для последующей правильной привязки сообщений к элементам управления формы. Для того, чтобы сообщение использовало данные соответствия объекта и формы, у него необходимо заполнить свойство ИдентификаторНазначения. Соответствие может быть получено методом ПолучитьСоответствиеОбъектаИФормы(). Получать соответствие можно до тех пор, пока существует объект, для которого оно зарегистрированно.

Синтаксис:

 УстановитьСоответствиеОбъектаИФормы(<Объект>,  <ИдентификаторФормыИИмяРеквизита>)  

Параметры:

  • <Объект> (обязательный) – Прикладной объект ( например СправочникОбъект.<Имя справочника>; ДокументОбъект.<Имя документа> и т. д.), преобразованный из универсального объекта в значение, для которого необходимо установить соответствие с именем реквизита формы.
  • <ИдентификаторФормыИИмяРеквизита> (обязательный ) – Структура , которая содержит идентификатор формы и имя реквизита элемента управления, для которых выполняется установка соответствия. Структура, передаваемая в параметр, может содержать два элемента с именами ключей:
    • “ИдентификаторФормы” – уникальный идентификатор формы (тип УникальныйИдентификатор);
    • “ИмяРеквизита” (“AttributeName”) – имя реквизита в форме (тип Строка). Этот элемент может не указываться.

Ниже описывается, как установить соответствие, если объект создается из данных формы программно.

Связь между объектом и формой может быть задана явно, путем вызова метода, или неявно. Для явной установки соответствия используется метод УстановитьСоответствиеОбъектаИФормы(). В качестве второго параметра в метод передается информация о том, в какой форме отображается объект (свойство ИдентификаторФормы) и в каком реквизите указанной формы хранится объект данных (свойство Реквизит) для последующей установки правильного соответствия сообщений и элементов управления формы:

Параметры = Новый Структура;
Параметры.Вставить("ИдентификаторФормы", УникальныйИдентификатор);
Параметры.Вставить("Реквизит", "Объект");
УстановитьСоответствиеОбъектаИФормы(Объект, Параметры);

Установленное соответствие будет существовать до тех пор, пока существует объект, для которого установлено соответствие.

Для того чтобы сообщение использовало данные соответствия объекта и имени реквизита, необходимо связать сообщение с данными через метод УстановитьДанные() объекта СообщениеПользователю.

ОбъектСправочник = СсылкаСправочник.ПолучитьОбъект();
Параметры = Новый Структура;
Параметры.Вставить("ИдентификаторФормы", ИдентификаторФормы);
Параметры.Вставить("Реквизит", "Объект");
УстановитьСоответствиеОбъектаИФормы(ОбъектСправочник, Параметры);
ОбъектСправочник.ПроверитьЗаполнение();

Нужно понимать, что в методе УстановитьСоответствиеОбъектаИФормы() указывается имя реквизита для той формы, которая будет открыта по умолчанию для отображения элемента используемого справочника (в примере ОбъектСправочник). Тогда сообщения, которые создаются в обработчике проверки заполнения (ОбъектСправочник.ПроверитьЗаполнение()), будут корректно привязаны к реквизитам новой формы. Если свойство ИндентификаторФормы структуры Параметры (в примере выше) содержит уникальный идентификатор, который не соответствует ни одному экземпляру формы, то для отображения сообщения будет создана и открыта новая форма.

Получить соответствие можно методом ПолучитьСоответствиеОбъектаИФормы(). Получить соответствие можно до тех пор, пока существует объект, для которого оно установлено.

ОписаниеСоответствия = ПолучитьСоответствиеОбъектаИФормы(Объект);

Если для переданного объекта существует соответствие с реквизитом, имя реквизита будет возвращено как результат работы функции. Кроме того, соответствие может быть установлено формой при использовании метода РеквизитФормыВЗначение(). В большинстве случаев рекомендуется использовать именно этот способ.

// Код в модуле документа.
&НаСервере
Процедура ОбработкаПроведения()
    ...
    Сообщение = Новый СообщениеПользователю();
    Сообщение.Текст = "В строке 10 табличной части " + "Номенклатура не хватает " + НедостающееКоличество + " " + ЕдиницаИзмеренияНоменклатуры;
    Сообщение.Поле = "Номенклатура[9].Количество";
    Сообщение.УстановитьДанные(ЭтотОбъект);
    Сообщение.Сообщить();
    // Сообщение будет показано в форме и привязано к
    // элементу управления, связанному с полем
    // Количество в 10 й строке табличной части
    // Номенклатура.
    ...
КонецПроцедуры;

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

Если в поле ввода, с которым связано сообщение, находится некорректное значение, то в веб-клиенте можно перейти в окно сообщений. В других клиентских приложениях такой переход выполнить невозможно.

См. также:

Previous Article
Next Article

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.