Объект СообщениеПользователю

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

&НаКлиенте

Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)

//Если не введена фамилия...

Если ПустаяСтрока(Объект.Фамилия) Тогда

СообщитьПользователю("Объект.Фамилия", "Заполните поле Фамилия", Отказ);

КонецЕсли;

//Если не введено имя...

Если ПустаяСтрока(Объект.Имя) Тогда

СообщитьПользователю("Объект.Имя", "Заполните поле Имя", Отказ);

КонецЕсли;

//Если не введено отчество...

Если ПустаяСтрока(Объект.Отчество) Тогда

СообщитьПользователю("Объект.Отчество", "Заполните поле Отчество", Отказ);

КонецЕсли;

//Если флаг Отказ не был установлен - формируем наименование

Если НЕ Отказ Тогда

Объект.Наименование=Объект.Фамилия+" "+ ВРег(Лев(Объект.Имя,1))+". "+ВРег(Лев(Объект.Отчество,1))+".";

КонецЕсли;

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

&НаКлиенте

//Процедура, формирующая и выводящая сообщение с переданными ей параметрами

Процедура СообщитьПользователю(ПутьКРеквизиту, Текст, Отказ)

Сообщение=Новый СообщениеПользователю;

Сообщение.Поле=ПутьКРеквизиту;

Сообщение.Текст=Текст;

Сообщение.Сообщить();

Отказ=Истина;

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

Поясним приведенный код. Для начала, мы создали новую клиентскую процедуру СообщитьПользователю. Эта процедура принимает три параметра. Первый – ПутьКРеквизиту содержит строковый путь к полю, к которому должно быть привязано сообщение. Второй – Текст – содержит текст сообщения. Третий – Отказ – используется для установки в значение Истина параметра Отказ процедуры ПередЗаписьюв том случае, если процедура СообщитьПользователю будет вызвана хотя бы один раз. А хотя бы однократный ее вызов означает, что одно из полей не заполнено, то есть наименование сформировать невозможно, соответственно, записать объект так же не получится.

Когда процедура вызывается, мы сначала создаем новый объект типа СообщениеПользователю. Затем его свойство Поле устанавливаем взначение параметра ПутьКРеквизиту. Этот параметр должен быть строковым и имеет, в нашем случае вид "Объект.Фамилия", "Объект.Имя", "Объект.Отчество" - это позволяет правильно "привязать" сообщение к полям формы. Свойство Текст объектаСообщениеПользователю содержит текст для вывода.

Мы, кроме того, полностью переработали процедуру ПередЗаписью. А именно, если проверка на заполнение поля указывает на то, чтополе пустое, вызывается процедура СообщитьПользователю. По окончании проверок мы проверяем, установлен ли параметр Отказ взначение Истина – если не установлен – ни одна из проверок не завершилась обнаружением пустого поля и мы можем формировать наименование. Если установлен – наименование мы не формируем – и процедура заканчивает работу, а записи объекта, естественно, не происходит – пользователь видит лишь сообщения об ошибках.

Если было сформировано несколько сообщений типа СообщениеПользователю – пользователь видит одно окно сообщения около поля, но это окно снабжено кнопками для перемещения вперед и назад – щелчок по кнопке приводит к "переходу" сообщения от одного поля с ошибкой к другому, рис. 22, 23.

Объект СообщениеПользователю - student2.ru

Рис. 22.Сообщение об ошибке, привязанное к полю Имя

Объект СообщениеПользователю - student2.ru

Рис. 23.Сообщение об ошибке, привязанное к полю Отчество

Доведем до логического завершения пример со справочником ФизическиеЛица. Для этого заполним справочник Районы и введем в информационную базу сведения о следующих физических лицах:

Фамилия Имя Отчество Дата рождения Пол Район
Иванов Иван Иванович 27.02.1984 Мужской Ленинский
Петров Петр Петрович 12.06.1985 Мужской Ленинский
Васильев Павел Петрович 17.05.1985 Мужской Ленинский
Расчетчиков Александр Иванович 12.03.1980 Мужской Октябрьский
Александров Александр Александрович 17.09.1970 Мужской Октябрьский
Бухгалтерова Василиса Владимировна 13.08.1976 Женский Уральский

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

Наши рекомендации