Объектно-ориентированный язык: Программируем работу кнопок
В этом разделе мы научимся программировать работу кнопок и снова найдем значительные аналогии с другими объектно-ориентированными языками (например, с Visual Basic).
Снова откроем нашу “Учебную информационную базу” в конфигураторе 1С и созданную в предыдущем разделе форму “Первой обработки”.
Рассмотрим окно формы подробнее.
В нижней части окна имеются три закладки:Окно формы по умолчанию открывается на закладке “Диалог”:
Перейдем на закладку “Модуль”:
На этой закладке будут записаны коды подпрограмм формы. Нетрудно видеть, что здесь уже была создана по умолчанию одна подпрограмма “КнопкаВыполнитьНажатие”. Как следует из ее названия, это подпрограмма обработки события “Нажатие” кнопки “Выполнить”, которая также была создана по умолчанию на нашей форме. Пока эта подпрограмма пуста, но позднее ее можно будет заполнить необходимым кодом.
Вернемся на закладку “Диалог” и рассмотрим свойства кнопок “Выполнить” и “Закрыть”, созданных по умолчанию (напомним, что окно свойств объекта можно открыть, в частности, через контекстное меню (Курсор мыши поместить на объект – Правая кнопка мыши – Свойства). В будущем необходимо открывать окна свойств объектов, не задумываясь).
Вначале откроем окно свойств кнопки “Выполнить”:
Рассмотрим поля данного окна по порядку.
Мы видим, что данное окно имеет два раздела: “Основные” (свойства) и “Представление”.
В разделе “Основные”, в частности, указывается имя кнопки – “ОсновныеДействияФормыВыполнить”; тип объекта – “Действие” (в выпадающем списке данного поля можно видеть и другие возможные типы – “Разделитель” и “Подменю”); кнопка доступна; действие, которое выполняет кнопка – “КнопкаВыполнитьНажатие” (вспомним, что подпрограмму с таким именем мы видели на закладке “Модуль”. Галочка в чекбоксе “Кнопка по умолчанию” свидетельствует о том, что эта кнопка будет отрабатываться по нажатию комбинации клавиш Ctrl+Enter.
В разделе “Представление” указан текст кнопки на форме “Выполнить”; тексты подсказки и пояснения; отображение кнопки “Надпись” (в выпадающем списке данного поля доступны и другие возможные отображения кнопки – “Картинка” и “Надпись и картинка”). Картинки, относящейся к данной кнопке, не имеется. Сочетание горячих клавиш не задано.
Упражнения: 1) Изучите самостоятельно свойства кнопки “Закрыть”, опишите подробно их значения и сравните их со свойствами кнопки “Выполнить”. Определите, что общего и в чем отличия свойств этих кнопок.
2) Внесите различные изменения в свойства кнопок “Выполнить” и “Закрыть” и посмотрите, как эти изменения отразятся в программе 1С (напомним, что для просмотра формы в программе 1С необходимо нажать в конфигураторе клавишу F5). По окончании упражнения восстановите первоначальные значения свойств кнопок.
Итак, приступим к программированию кнопок.
Вначале научимся программным способом изменять свойства кнопок.
Сделаем так, чтобы после щелчка по кнопке “Кнопка1” она стала недоступной (это бывает полезно, когда необходимо запретить повторное нажатие на данную кнопку).
Открываем свойства кнопки “Кнопка1”:
Здесь нам понадобится новый раздел свойств кнопки, который носит название “События”. В данном случае, имеется только одно обрабатываемое кнопкой событие “Нажатие”. А нам и необходимо, чтобы после нажатия кнопки (т.е. после наступления события “Нажатие”) выполнялись некоторые действия...
Введем в поле “Нажатие” наименование новой процедуры “Кноп1”:
Теперь закроем окно свойств кнопки “Кнопка1” и перейдем на закладку “Модуль”. Можно увидеть, что на закладке “Модуль” появилась новая процедура с именем “Кноп1” (пока она также является пустой):
Далее нужно вставить в данную процедуру код, который меняет доступность кнопки.
Откроем “Синтакс-помощник” конфигуратора и в поле поиска на закладке “Индекс” Синтакс-помощника введем слово “Доступность”:
В окне результатов поиска нужно выбрать соответствующий раздел (Интерфейсные объекты / Элементы управления / Кнопка / Свойства / Доступность):
Текст, который выдает нам “Синтакс-помощник” в результате поиска:
Кнопка (Button)Из текста подсказки следует, что параметр <значение> имеет тип “Булево”, то есть “Истина” или “Ложь” (Истина – объект доступен; Ложь – объект недоступен).
Обратиться к свойству “Доступность” объекта “Кнопка” в “1С:Предприятие 8” можно следующим образом:
ЭтаФорма.ЭлементыФормы.<имя_объекта>.Доступность = <значение>;
Примечание: Допустимо и следующее выражение:
ЭлементыФормы.<имя_объекта>.Доступность = <значение>;
Хотелось бы отметить, что в Синтакс-помощнике версии 7.7 было указано, что “доступ к методу возможен только в контексте Модуля формы через атрибут Форма”. Соответственно, корректное обращение к параметру “Доступность” было таким: Форма.<имя_объекта>.Доступность(<значение>). В версии 8.0 не указывалось, что обращение должно быть выполнено через атрибут “ЭлементыФормы”. Надеемся, что этот недостаток будет устранен в последующих версиях.
Попробуем записать в процедуру “Кноп1” следующий код:
Процедура Кноп1(Элемент)Примечание: В конце каждого оператора 1С нужно обязательно ставить знак “точка с запятой”.
Убедимся, что в программе 1С процедура работает корректно (напоминаем, что это можно сделать, нажав в конфигураторе клавишу F5).
Далее напишем процедуру, которая при нажатии кнопки 2 делает кнопку 1 доступной. Для этого в свойствах кнопки 2 в поле “Нажатие” вносим имя новой процедуры “Кноп2”:
Пустая процедура Кноп2 появляется на закладке “Модуль” формы обработки.
Процедура Кноп2(Элемент)Проверим корректность работы процедуры в программе 1С.
Теперь сделаем так, чтобы кнопка 3 включала и выключала доступность кнопки 1. Для этого придется создать новую процедуру “Кноп3” в поле “Нажатие” окна свойств кнопки 3.
Для изменения доступности кнопки 1 используем переменную Д, которая будет принимать только два значения – 1 (Истина) и 0 (Ложь). При каждом следующем нажатии кнопки 3 значение атрибута доступности кнопки 1 будет меняться с 1 на 0 и с 0 на 1:
Процедура Кноп3(Элемент)Проверяем в 1С, что все работает.
Упражнение: Для закрепления материала выполните приведенные в данном разделе упражнения с атрибутом видимости кнопок.
Примечание: Если мы точно не знаем, как правильно описать тот или иной элемент формы, можно воспользоваться контекстной подсказкой, которая позволяет выбрать нужный элемент, метод или свойство.
Делается это следующим образом:
1) Записываем в модуле формы корневой элемент “ЭтаФорма”.
2) После того, как мы ставим точку после слова “ЭтаФорма”, на экране появляется контекстная подсказка допустимых элементов, методов и свойств:
3) Из списка контекстной подсказки выбираем подходящее значение. Мы видим, что имен кнопок в данном списке нет, но самое подходящее для нас – это “ЭлементыФормы” – понятие, которое включает в себя, в частности, и кнопки:
Выбираем параметр “ЭлементыФормы”.
4) Снова ставим точку:
5) Появился новая контекстная подсказка, в которой уже содержатся имена искомых кнопок (К1, К2 и К3). Выбираем нужное имя элемента (в данном случае, К1).
6) Нам необходимо еще найти атрибут кнопки “Доступность”. Снова ставим точку и просматриваем следующую контекстную подсказку:
7) Ставим знак “=”, и редактор модулей показывает нам еще одну контекстную подсказку:
Из этой контекстной подсказки можно выбрать значения “Истина” или “Ложь” (в данном случае, выбираем значение “Ложь”).
Для завершения оператора осталось только поставить знак “;” в конце строки:
Используя контекстные подсказки редактора модулей и метод “Сообщить”, можно дополнить процедуру обработки нажатия кнопки 1 так, чтобы в программе 1С выводить в область “Служебные сообщения” параметры этой кнопки:
Процедура Кноп1(Элемент)Итоги: В настоящем разделе мы рассмотрели простые процедуры управления атрибутами кнопок. Можно было видеть, что принципы построения этих процедур аналогичны принципам программирования на других объектно-ориентированных языках.