Типы данных встроенного языка

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

Программирование на платформе “1С:Предприятие 8”

Типы данных. События элементов форм.

 

Цели работы:

1. Рассмотрение основных этапов отладки: точка остановки, пошаговое выполнение команд, просмотр значений переменных и вычисление выражений.

2. Изучение ссылочных и объектных типов данных на примере справочников и документов. С помощью этих типов данных можно из встроенного языка читать значения из базы данных и записывать в нее данные.

3. Рассмотрение типов данных, использующиеся для программной работы с регистрами, — регистр накопления “Набор записей” и регистр накопления “Запись”.

4. Рассмотрение процесса проведения документов.

5. Изучение на практике понятий объекта и класса (типа данных) — эти понятия повсеместно используются при разработке в 1С.

6. Рассмотрение обработки действий пользователя программным образом. Например, при вводе цены и количество автоматически пересчитать сумму в документе.

Теоретическая часть:

Отладчик

С помощью отладчика возможно пошаговое выполнение программы и на каждом шаге возможен анализ значений переменных.

Отладчик решает следующие задачи:

- поиск ошибок в программном коде;

- просмотр значений «контрольных» переменных;

- помощь при написании программного кода.

Когда нажимам на кнопку F5, осуществляется запуск приложения в режиме отладки.

Ссылка и объект

При создании объектов конфигурации создаются новые типы данных. Например, при создании справочника и документа, создаются типы данных ДокументСсылка.ИмяДокумента, ДокументОбъект.ИмяДокумента. Эти типы данных нужны, чтобы можно было управлять объектом.

Ссылка предназначена для чтения значения. С помощью ссылки ДокументСсылка.ИмяДокумента можно сослаться на конкретный существующий объект и передать эту ссылку в какую-либо процедуру, а там этот объект будет обработан.

С помощью ДокументОбъект.ИмяДокумента можно создать новый документ, либо создать новый документ скопировав существующий или просто найти существующий документ и изменить его реквизиты или провести документ.

Объект используется для модификации значения.

Тип данных «ДокументОбъект.ИмяДокумента» используется в модуле объекта.

Типы данных регистров

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

Типы данных встроенного языка

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

Практическая часть:

Отладчик

Открыть модуль объекта РеализацииТоваровИУслуг – процедура ПередЗаписью. Отладить этот программный код. Чтобы выполнить необходимую отладку, следует указать системе, где следует остановиться, на какой строке программного кода. Для этого указать точку останова (F9).

Запустить приложение. Выбрать «Реализация товаров и услуг», нажать на кнопку «Записать». Система перебросит в конфигуратор на точку останова. При наведении указателя мыши на переменную, будет выведено ее значение.

Более удобный инструмент – Табло: меню Отладка/Табло.

Включить в это табло СуммаДокумента.

Вызвать следующий шаг (F10 или F11): при нажатии на F11 будем «проваливаться» в вызываемую процедуру, а при нажатии на F10 будем «через них шагать», т.е. они будут автоматически выполняться. При вызове следующей строки сумма должна обнулиться.

Просмотреть далее «Сумму из строки табличной части».

Первоначально значение не определено, т.к. цикл еще не начался и итератор не известен:

При нажатии на F10, «СтрокаТЧ» присвоится конкретное значение.

При следующем нажатии на F10, эти 10 000 перейдут в переменную «СуммаДокумента».

При выполнении последующих двух шагов цикл закончится:

Таким образом выполнится отладка.

При выходе из цикла, чтобы продолжить процесс отладки, нажать на F5.

Другой способ отладчика - использование диалога «вычислить выражение». Вызывается он по Shift+F9 или меню Отладка/Вычислить выражение.

Здесь записывается то выражение, которое интересует и система сразу укажет его значение.

Ввести СтрокаТЧ

В отличие от табло, можно развернуть свойства, которые присущи строке (нажать на «+»).

Путь отображается в верхней части диалога.

Можно скопировать выражение :

«СтрокаТЧ.Товар.ОсновнойПоставщик» и использовать в программном коде, например, выдать всех поставщиков номенклатуры:

Прекратить отладку (Shift+F5) или меню Отладка/Завершить. Запустить приложение, предварительно сняв точку останова. В результате будет выведено сообщение, что у двух товаров один поставщик: «Мебель-опт ООО».

Ссылка и объект

Обратиться к Документу «РеализацияТОваровИУслуг» - Модуль Объекта. Находясь в этом модуле, мы работаем с типом данных ДокументОбъект.РеализацияТоваровИУслуг и нам доступны все реквизиты, методы и свойства.

Обратиться к синтакс-помощнику, раскрыть ветку Прикладные объекты/Документы/ДокументОбъект.<Имя документа>. Все это значит, что мы работаем в контексте этого объекта. Свойства – это хранимое значение, а метод – это процедура или функция, т.е. может вернуть какое-либо значение, либо выполнить просто какое-либо действие. Например, в процедуре ПередЗаписью можно обратиться к какому-либо реквизиту.

Вызвать Метод МоментВремени, который сообщает в каком состоянии находится документ на данный момент времени.

Запустить приложение и нажать на кнопку «Записать».

Включить точку останова на Сообщить(МоментВремени()). Запустить приложение, перейти на точку останова и записать выражение «Склад».

Обратите внимание на тип данных!!! Именно с помощью ссылки можно указать на конкретный элемент справочника или на конкретный документ.

Ссылочные типы данных хранятся в базе данных.

Типы данных регистров

Сейчас интересует процесс проведения Документа «РеализацияТоваровИУслуг», событие ОбработкаПроведения. Рассмотрим, когда движение производится по табличной части. Этот код был сформирован автоматически при помощи конструктора.

Рассмотреть как работает эта часть. Поставить точку останова.

Запустить приложение. Обратиться к документу «Реализация товаров и услуг», нажать на кнопку «Провести» (проводим документ). Программа останавливается. Система обращается к движению. Открыть синтакс-помощник.

Раскрыть свойства.

Если вычислить выделенное выражение, выделив фрагмент кода, и нажать F9.

 

Обратиться к синтакс-помощнику Регистр накопления à РегистрНакопленияНаборЗаписей, раскрыть Свойства:

При нажатии на F10 перейдем внутрь цикла.

Выделенный фрагмент – это набор записей. Вызывается метод Добавить().

Этот метод добавляет новую запись и возвращает созданную запись. Она запоминается в переменную Движение.

Далее производится установка свойств этой записи:

Для регистра накопления обязательно необходимо указывать период. Обычно это дата документа. Далее заполняются все измерения и ресурсы этого регистра:

Себестоимость пока не заполняется, т.к. в будущем ее необходимо вычислить.

Таким образом, проходя по всем строкам табличной части, создаются движения в регистре продажи.

Если обратиться к Движению

то увидим, что все соответствующие значения заполнены: клиент, номенклатура, период, сумма и количество.

Выполнить вторую итерацию цикла, достигнуть конца процедуры. Обратиться к коллекции Движения

Это коллекция и можно просмотреть элементы этой коллекции, нажав на кнопку «Показать значение в отдельном окне»:

 

Аналогично можно просмотреть содержимое набора записей, Продажи.

Две записи были созданы и они попадут в регистр при проведении документа.

Типы данных встроенного языка

Рассмотрим на примере созданной печатной формы ЗаказКлиента à Команды à ПечатьСчетаНаОплату

Создается объект типа данных ТабличныйДокумент:

Просмотреть этот тип данных можно, нажав на Ctrl+F1, находясь курсором на соответствующем названии и система находит в синтакс-помощнике все, что связано с табличным документом. Нажать «Показать».

Далее по программному коду: этот табличный документ передается, устанавливаются его свойства и вызывается метод «Показать», с помощью которого и отображается табличный документ.

Рассмотрим следующую процедуру ПечатьСчетаНаОплату, которая обращается к еще одной процедуре.

Чтобы перейти к этой процедуре, нажать на F12.

 

Попадем в другой модуль:

Здесь создается новый объект Запрос:

Устанавливаются свойства, т.е. что конкретно хотим получить:

Устанавливаются определенные параметры:

и после этого запрос выполняется:

т.е. данные получаются из базы данных.

События элементов форм

Рассмотреть удобство использования созданного приложения.

Перейти в режим пользователя.

В документах есть реквизиты табличной части: количество и цена.

При создании нового элемента указываем его количество, цену. Однако, сумму приходится рассчитывать самостоятельно.

Задача: решить автоматическую возможность расчета суммы.

Для этого создать обработчики событий элементов формы, которые будут вызываться в момент изменения либо количества, либо цены.

Обратиться к системе – режим Конфигуратор. Документы à РеализацияТОваровИУслуг

Перейти на формы, которая была создана ранее, Открыть.

Удалить реквизит СуммаДокумента – он заполняется автоматически и не нужен пользователю. При удалении с формы этот реквизит остается в базе данных и он будет заполняться в процессе записи документа.

В форме есть табличная часть Товары и реквизиты табличной части:

Необходимо создать обработчики событий, связанные с изменением значений. Для этого использовать контекстное меню (правая кнопка мыши):

 

Создаем событие <ПриИзменении>

Одно событие:

Второе событие для Цены:

Отладчик поможет понять как обратиться к цене и количеству, как установить значение суммы.

Установить точку останова в конце процедуры количества:

Запустить приложение в режиме пользователя.

Изменить количество с «2» на «4» .

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

 Та коллекция, где содержатся все элементы формы, так и называется «Элементы».

Используем средства отладчика Shift+F9

Вписать «Элементы»

Развернуть Элементы:

Найти «Товары»:

Найти среди свойств «ТекущиеДанные» - это информация о текущей строке:

Развернуть это свойство:

С помощью диалогового окна вычисление выражения найдено как обратиться к текущему количеству:

Прописать соответствующий программный код:

Количество надо умножить на цену

и это будет сумма

Формула получилась длинная и трудно читаемая.

Вынести общую часть в отдельную переменную.

Аналогично создается программный код второй процедуры.

Прекратить отладку Shift+F5, убрать точку останова и перезапустить приложение.

 

Самостоятельное задание:

В модуле управляемого приложения создать объект тип данных «Массив» - для этого использовать конструктор «Новый». Например, МассивЧисел = Новый Массив.

Добавить в массив два числа, для этого использовать метод «Добавить». Например, МассивЧисел.Добавить(999).

С помощью цикла по универсальным коллекциям обойти элементы массива и сообщить их значения.

В формах документа обеспечить автоматический расчет суммы в табличной части, как произведение цены и количества. Учесть ситуацию изменения суммы – в этом случае нужно пересчитать цену.

Решение:

1. Обратиться к синтакс-помощнику. Перейти на вкладку Индекс, найти описание типа данных Массив:

Это коллекция. Её элементы обходятся циклом «Для каждого». Чтобы инициализировать, т.е. создать объект типа данных Массив нужно использовать конструктор Новый.

2. Объявить переменную типа МассивЧисел. Указать, что она будет иметь тип данных Массив.

С помощью помощника посмотреть, какие есть методы.

Добавить два числа:

Для обхода массива используется цикл «Для каждого»

Поставить точку останова на «КонецЦикла». Запустить систему.

Нажать на кнопку «Включить в табло»

Следующий обход – F10.

Вывести элементы массива.

Выйти из отладчика, снять точку останова и запустить приложение.

3. Выделить Документы/ПоступлениеТоваров. Обратиться к формам документов

Изменение количества: установить точку останова на конец процедуры, набрать «Элементы». Найти «Товары» и развернуть

Найти свойство «ТекущиеДанные», развернуть

Ввести новую переменную и написать программный код:

Такой же программный код будет и при изменении цены:

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

Создать новый обработчик:

 

Создать новую процедуру для суммы:

Здесь есть один нюанс: если количество будет равно нулю. Эту ситуацию необходимо предусмотреть.

Проделанные шаги были для поступления товаров. Те же шаги выполнить для реализации товаров, скопировав программный код.

При этом ничего работать не будет!

Мало скопировать программный код, необходимо сопоставить обработчики событий соответствующих элементов с процедурами.

Ручное сопоставление: обратиться к количеству

Сделать двойной клик, откроется палитра свойств:

в самом низу этой палитры есть События.

Нажать на кнопку выпадающего меню и выбрать «ТоварыКоличествоПриИзменении». Точно такие же действия выполнить для цены и суммы.

 

Оценивание работы:

На оценку «4» : все рассмотренные задания

На оценку «5» : самостоятельное задание

 


Дата добавления: 2020-11-15; просмотров: 160; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!