Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа 4

.pdf
Скачиваний:
7
Добавлен:
09.05.2015
Размер:
1.97 Mб
Скачать

Рис. 4.20. Обработчик события поля

Процедура ФизическоеЛицоПриИзменении создается автоматически. Она будет использоваться в качестве обработчика события в том случае, если будет указана в поле ПриИзменении. Это уже сделано при ее создании. То есть, другими словами, имя процедуры значения не имеет. Значение имеет то, что эта процедура будет указана в поле ПриИзменении окна свойств поля ввода Физическое лицо. Не каждая процедура может быть выбрана в качестве обработчика события. В частности, в нашем случае процедура должна иметь один параметр.

Приступим к написанию текста процедуры. Он будет таким:

Наименование = ФизическоеЛицо.Наименование +" ("+Подразделение.Наименование+")";

Здесь Наименование соответствует реквизиту Данные поля с именем Наименование. Мы можем обращаться к нему напрямую, записывая данные, которые отобразятся в поле

Наименование.

ФизическоеЛицо.Наименование дает нам доступ к реквизиту Наименование элемента справочника ФизическиеЛица, подобранного в поле ФизическоеЛицо. Аналогично, код Подразделение.Наименование позволяет работать с реквизитом Наименование элемента справочника Подразделения, который подобран в поле Подразделение. Здесь, опять же, мы обращаемся не к элементу управления (то есть - не к полю), а к данным, которые оно содержит и которые задаются его свойством Данные.

Знак "+" используется для конкатенации (связывания) строк. Символы, заключенные в кавычки интерпретируются системой как текст.

При наборе текста работают подсказки. Например, на рис. 4.21 вы можете видеть окно редактора кода в ходе набора текста. После того, как мы ставим точку, набрав ФизическоеЛицо, выдается справка. Нужное свойство (или метод, то есть - функцию) можно выбрать из выведенного списка нажав клавишу Enter, когда оно будет выделено,

или щелкнув по нему мышью, можно и проигнорировать подсказку, просто продолжив набор с клавиатуры.

увеличить изображение Рис. 4.21. Помощь при наборе текста модуля

Для того, чтобы получить справку по коду, можно воспользоваться функцией вызова так называемого Синтакс-помощника из окна редактирования модуля. Для того чтобы получить такую справку, нужно установить курсор в интересующий нас участок текста и нажать сочетание клавиш Ctrl + F1. Например, установим курсор на слово Процедура и нажмем Ctrl + F1. Откроется окно со справочной информацией (рис. 4.22).

увеличить изображение Рис. 4.22. Синтакс-помощник

Создадим обработчик события ПриИзменении для поля Подразделение. Он будет таким же точно, каким был текст обработчика аналогичного события для поля Физическое лицо, рис. 4.23.

увеличить изображение Рис. 4.23. Тексты процедур обработчиков событий

Это - типичная в программировании ситуация, когда один и тот же код используется в различных процедурах. Разумно будет вынести его в отдельную процедуру и вызывать эту процедуру в обработчиках событий. Создадим в модуле новую процедуру, введя с клавиатуры следующий код (код, находящийся в теле процедуры, можно добавить копированием из тела одной из других процедур, выделение, копирование, вырезание текста в редакторе модулей выполняется аналогично подобным операциям в любом текстовом редакторе):

Процедура СформироватьНаименование ()

Наименование = ФизическоеЛицо.Наименование + " ("+Подразделение.Наименование+")";

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

Для удобства можно разбивать длинные строки кода на несколько строк, мы можем это сделать, нажав Enter в нужном месте. Не следует разрывать переносом строки участки кода, заключенные в кавычки - при попытке сохранения такого кода мы получим сообщение об ошибке.

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

На рис. 4.24 вы можете видеть итоговый вариант кода модуля.

Рис. 4.24. Тексты процедур обработчиков событий

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

Создадим новый элемент справочника Сотрудники, и, заполняя его, заполним, выбором из справочника ФизическиеЛица поле Физическое лицо. Так как поле Подразделение

пока пустое, в поле Наименование отобразится текст вида Фамилия И.О. (), рис. 4.25.

Рис. 4.25. Создание элемента справочника Сотрудники

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

увеличить изображение Рис. 4.26. Созданный элемент справочника Сотрудники

Выполним еще одну модификацию формы элемента справочника Сотрудники. Можно заметить, что пользователь может свободно редактировать поле Наименование. То есть, он вполне может, после того, как поле заполнено автоматически, изменить его содержимое, нарушив желаемый шаблон заполнения. Для того, чтобы запретить пользователю менять содержимое поля, можно отредактировать свойство поля Доступность, сняв флаг, установленный по умолчанию, что сделает его недоступным для редактирования.

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

увеличить изображение Рис. 4.27. Создание обработчика события формы ПриОткрытии

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

Внесем в тело обработчика такой код:

ЭлементыФормы.Наименование.Доступность=Ложь;

Свойство формы ЭлементыФормы дает доступ к коллекции элементов управления, расположенных на форме. При наборе этого текста действуют подсказки.

На рис. 4.28 вы можете видеть готовый текст обработчика.

Рис. 4.28. Текст обработчика события формы ПриОткрытии

Испытаем созданный механизм - при создании нового элемента справочника (или при открытии для редактирования уже существующего элемента) поле Наименование оказывается заблокированным для изменений пользователем, но в нем по-прежнему можно видеть данные, вносимые программно (рис. 4.29).

Рис. 4.29. Результат изменения свойства поля в обработчике события формы ПриОткрытии