Клиентские методы в модуле формы

Теперь перейдем к написанию кода, в котором будем формировать наименование. Для этого нам нужно понимать, что конфигурации 1С:Предприятие управляются событиями – и сейчас нас интересуют события формы.

Выделим форму в окне Элементы, откроем окно ее свойств и рассмотрим группу свойств События, рис. 18.. Наименование должно быть сформировано до того, как данные объекта будут записаны. Для достижения нашей цели нам вполне подойдет событие ПередЗаписью. Здесь же можно выполнить какие-либо пользовательские проверки полей перед формированием наименования. Хотя, если говорить о производительности решения, лучше подобные проверки производить на сервере, например, с помощью обработчика событияОбработкаПроверкиЗаполнения, который создается в модуле объекта.

Клиентские методы в модуле формы - student2.ru Рис. 18.Выбор события для выполнения запланированных действий

Нажмем на кнопку с увеличительным стеклом в поле события ПередЗаписью – автоматически будет открыт модуль формы и создан пустой обработчик события ПередЗаписью. Он имеет следующий вид:

&НаКлиенте

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

// Вставить содержимое обработчика.

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

Из директивы компиляции &НаКлиенте понятно, что процедура это клиентская, она имеет два параметра – нас сейчас интересуетпараметр Отказ – благодаря этому параметру, а именно, установив его в значение Истина, мы можем отказаться от записи объекта в том случае, если выполняется какое-либо условие, препятствующее записи. В нашем случае записи объекта могут воспрепятствовать незаполненные или неправильно заполненные поля Фамилия, Имя или Отчество. Проверку на незаполненность реквизита мы можем доверить и системе – для этого можно установить свойство Проверка заполнениядля нужных реквизитов в значение Выдавать ошибку, делается это в списке реквизитов объекта в окне редактирования объекта или в дереве конфигурации, рис. 19. Не будем включать проверку заполнения, выполним ее и еще некоторые проверки самостоятельно.

Клиентские методы в модуле формы - student2.ru

Рис. 19.Настройка проверки заполнения

Параметры и процедуры в системе 1С:Предприятие по умолчанию передаются по ссылке – передав в процедуру некую переменную, мы, на самом деле, передаем ссылку на нее, то есть – при модификации соответствующего этой переменной параметра внутри процедуры, фактически, происходит и модификация переменной. Вернемся к нашей процедуре ПередЗаписью.

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

&НаКлиенте

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

//Переменная для хранения текста сообщения пользователю

Перем ТекстСообщения;

//Запишем пустую строку в переменную

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

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

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

//Формируем строку сообщения

ТекстСообщения=ТекстСообщения+"Не заполнено поле Фамилия;";

КонецЕсли;

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

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

ТекстСообщения=ТекстСообщения+" Не заполнено поле Имя;";

КонецЕсли;

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

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

ТекстСообщения=ТекстСообщения+" Не заполнено поле Отчество;";

КонецЕсли;

//Если строка сообщения не пуста, то есть - содержит

//сообщения о незаполненных полях

Если НЕ ПустаяСтрока(ТекстСообщения) Тогда

//Выводим сообщение

Сообщить(ТекстСообщения);

//Отказываемся от записи объекта

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

//Выходим из процедуры

Возврат;

КонецЕсли;

//Если все поля заполнены, выхода из процедуры не произошло,

//формируем наименование

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

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

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

В итоге мы получаем следующие сообщения об ошибках при незаполненности полей, рис. 20.

Клиентские методы в модуле формы - student2.ru

Рис. 20.Сообщение об ошибке

После успешного выполнения процедуры ПередЗаписью, наименование выглядит следующим образом. Мы намеренно ввели отчество с маленькой буквы – как было пояснено выше, наш код готов к такому повороту событий, рис. 21.

Клиентские методы в модуле формы - student2.ru

Рис. 21.Новая запись в справочнике Физические лица

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