3. Использование функций и передача параметров в функцию.
Лабораторная работа 7
Программирование на платформе “1С:Предприятие 8”
События, процедуры и функции
Цели работы:
1. Предназначение процедур и возможности их использования.
2. Определение методов, их вызов.
3. Использование функций и передача параметров в функцию.
4. Изучение контекста использования переменной, описанной в рамках модуля и внутри процедуры.
5. Рассмотрение события модуля управляемого приложения. С помощью них можно выполнять произвольные действия при начале и завершении работы приложения.
6. Рассмотрение события: “Перед записью”, “Обработка проверки заполнения” и “Обработка проведения” для документа.
7. Рассмотрение цикла по универсальным коллекциям — “Для каждого…”. В частности с помощью этого цикла можно обойти все строки табличной части документа.
Практическая часть:
1. Описание процедуры.
Сначала идет ключевое слово Процедура, затем название процедуры и скобки (являются обязательными), в которых указываются параметры. Завершается процедура ключевым словом КонецПроцедуры. Точка с запятой в конце не ставится. Между началом и концом процедуры находится её тело.
Задание 1
Создать две процедуры:
- УсловныеОператоры() – процедура проверки числа на значение;
- ЦиклическиеОператоры() – процедура подсчета квадратов чисел.
Проверить на отсутствие синтаксических ошибок (Ctrl+F7).
Вызвать созданные процедуры, указав их имя.
Проверить на отсутствие синтаксических ошибок. Запустить приложение.
Из одной процедуры могут вызываться другие процедуры. Их уровень вложенности является неограниченным.
Задание 2
Создать процедуру КвадратыЧисел. И вызвать эту процедуру из процедуры ЦиклическиеОператоры.
2. Работа с параметрами
Благодаря параметрам достигается универсальность процедуры.
Например, процедура КвадратыЧисел считает квадраты из одного жестко заданного диапазона.
Задание 3
Задать два параметра: НачальноеЗначение и КонечноеЗначение. При вызове процедуры указать эти параметры, например, подсчет квадратов чисел от 10 до 15.
3. Функции
У функции ключевых параметров может и не быть. В отличие от процедуры функция возвращает значение. Для этого используется ключевое слово Возврат.
Задание 4
Разработать функцию, которая подсчитывает квадраты чисел в указанном диапазоне. Указать Возврат, который вернет сумму квадратов. Для этого после объявлении функции ввести переменную СуммаКвадратов.
В качестве возвращаемого значения выступает СуммаКвадратов.
4. Навигация по процедурам
Навигация осуществляется кнопкой.
При этом откроется окно:
Попасть внутрь процедуры возможно, если встать на ее имя вызова и нажать кнопку F12. Чтобы вернуться назад, необходимо нажать Ctrl- (минус).
5. Переменные модуля.
Чтобы переменная была доступна в пределах всего модуля, ее необходимо описать в разделе описания переменных.
6. События
События существуют не только для модуля управляемого приложения, но и для всех модулей системы. С помощью событий возможно вмешаться в работу системы, чтобы выполнить определенные действия, которые требует задача. Технически события – это те же самые процедуры с определенным набором параметров. Каждое событие имеет определенное имя. Чтобы посмотреть, какие события можно создать, можно раскрыть список процедур, либо нажать на кнопку вызова процедур.
Создать событие ПередНачаломРаботыСистемы, кликнув по нему клавишей мыши.
События начинаются со слова «Перед» или «При». Событие Перед выполняется перед выполнением действия, например, ПередЗаписьюДокумента, когда запись документа еще не состоялась. Событие При, когда действие уже завершено, например, ПриЗаписиДокумента, когда документ уже помещен в базу данных. В событии Перед возможно отказаться от действия. При этом необходимо указать параметр Отказ.
Если указать Отказ=Истина, то данное событие не будет выполнено.
Задание 5
Сотрудникам запрещено выключать 1С ранее 18.00, т.е. пока не закончен рабочий день. Выбрать событие ПередЗавершениемРаботыСистемы.
Необходимо получить текущее время с помощью ТекущаяДата(). Привести это значение к концу дня: КонецДня(ТекущаяДата()) и отнять соответствующее количество секунд, затем прибавить 1 сек.
7. Основные события для документа. Как их можно вызвать и создать.
Задание 6
Обратимся к документу РеализацияТоваровИУслуг.
На закладке Прочее можно обратиться к модулю объекта.
Вызвать список процедур и функций, где видно, что есть ряд событий.
Наиболее популярными событиями являются ОбработкаПроверкиЗаполнения, с помощью которого можно проверить правильность заполнения реквизитов документа. И, если они заполнены неправильно, то выдаем пользователю сообщение.
Следующее по популярности событием является ПередЗаписью. В этом событии возможно дозаполнить реквизиты документа.
Следующее событие ОбработкаПроведения. В этом событии обеспечивается проведение документа по регистрам.
Аналогичные события есть и у справочников.
Здесь есть события ПередЗаписью, ОбработкаПроверкиЗаполнения.
8. Цикл по универсальным коллекциям.
Цикл по универсальным коллекциям - это упорядоченное хранилище элементов одинаковой структуры. Количество элементов этой коллекции неограниченно. Наиболее ярким примером коллекции является табличная часть документа. С помощью цикла можно перебрать все строки документа.
Задание 7
Получить итоговую сумму по документу «Реализация товаров и услуг».
Необходимо получить сумму и загрузить в реквизит СуммаДокумента.
Необходимо дозаполнить реквизит значением. Сделать это еще до того, как документ будет записан в базу данных. Вызвать событие ПередЗаписью.
В этом событии необходимо перебрать строки. При этом используется цикл «Для каждого». Далее указывается переменная, в которую будет помещаться очередная строка из коллекции «СтрокаТЧ», - указать «ИЗ» и описать коллекцию «Товары»:
Запустить систему. Войти в документ РеализацияТоваровИУслуг, очистить поле Сумма документа, а затем нажать на кнопку Записать. Поле «Сумма документа» рассчитается.
Задание 8
Усложнить задачу. Добавить стол обеденный. Количество «2». Цена «3000», Сумма «6000». Нажать на кнопку «Записать».
В режиме «Конфигуратор» изначально обнулить сумму документа. В противном случае сумма будет накапливаться с предыдущим значением.
Задание 9
При записи документа «Реализация товаров» сохранить общую сумму документа в реквизит «Сумма документа». Также необходимо выполнить проверку, что в документе «Реализация товаров» выбран контрагент, у которого указан флаг «Клиент».
· Для проверки корректности заполнения реквизитов использовать событие ОбработкаПроверкиЗаполнения.
· Чтобы получить значение реквизита обращаться через точку. Например, Сообщить(Контрагент.ЭтоКлиент)
1) Создать новый реквизит «СуммаДокумента». Тип данных: «Число», точность «2».
Если обратиться к форме документа, то там отсутствует «Сумма документа», т.к. форма была создана до процедуры.
Потому этот реквизит необходимо перенести.
Запустить систему и еще раз записать Реализацию товаров.
Создать нового контрагента:
Оценивание работы:
На оценку «4» : задания 1..8
На оценку «5» : задания 1..8 + задание 9