Понадобилось при разработке управляемой формы уведомить пользователя не только сообщением о ошибке, а и указать на поле где содержит ошибка? Для этих целей подойдет объект СообщениеПользователю.
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Обрати внимание!";
если на клиенте
Сообщение.Поле = "Объект.Контрагент";
Сообщение.Сообщить();
или
Сообщение.Поле = "Контрагент";
Сообщение.ПутьКДанным= "Объект";
Сообщение.Сообщить();
если на сервере
Сообщение.Поле = "Контрагент";
Сообщение.УстановитьДанные(РеквизитФормыВЗначение("Объект"));
Сообщение.Сообщить();
или
Сообщение.Поле = "Контрагент";
Сообщение.ПутьКДанным = "Объект"; // нюанс в том, что на сервере очень часто не известно, что такое "Объект" поэтому лучше использовать .УстановитьДанные()
Сообщение.Сообщить();
А вот пример где нужно указать на поле в Табличной части
Объект.Запасы – Табличная часть
Номенклатура – поле, на которое хочу установить активность
Индекс - в данном случаи нужно обращаться по индексу, а не по Номеру строки
Для Каждого Строка Из Объект.Запасы Цикл
Сообщение = Новый СообщениеПользователю;
Индекс = Объект.Запасы.Индекс(Строка);
Сообщение.Текст = "Пользователь, обрати внимание "+Строка.Номенклатура+" на это поле";
Сообщение.Поле = "Объект.Запасы["+Индекс+"-1].Номенклатура";
Сообщение.Сообщить();
КонецЦикла;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Обрати внимание!";
если на клиенте
Сообщение.Поле = "Объект.Контрагент";
Сообщение.Сообщить();
или
Сообщение.Поле = "Контрагент";
Сообщение.ПутьКДанным= "Объект";
Сообщение.Сообщить();
если на сервере
Сообщение.Поле = "Контрагент";
Сообщение.УстановитьДанные(РеквизитФормыВЗначение("Объект"));
Сообщение.Сообщить();
или
Сообщение.Поле = "Контрагент";
Сообщение.ПутьКДанным = "Объект"; // нюанс в том, что на сервере очень часто не известно, что такое "Объект" поэтому лучше использовать .УстановитьДанные()
Сообщение.Сообщить();
А вот пример где нужно указать на поле в Табличной части
Объект.Запасы – Табличная часть
Номенклатура – поле, на которое хочу установить активность
Индекс - в данном случаи нужно обращаться по индексу, а не по Номеру строки
Для Каждого Строка Из Объект.Запасы Цикл
Сообщение = Новый СообщениеПользователю;
Индекс = Объект.Запасы.Индекс(Строка);
Сообщение.Текст = "Пользователь, обрати внимание "+Строка.Номенклатура+" на это поле";
Сообщение.Поле = "Объект.Запасы["+Индекс+"-1].Номенклатура";
Сообщение.Сообщить();
КонецЦикла;
Комментариев нет:
Отправить комментарий