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

Механизм и конструктор языка запросов в программном обеспечении для учета ресурсов предприятия. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
892 Кб
Скачать

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

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

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

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

21

«Следующий», с помощью которого осуществляется переход на следующий элемент выборки. Данный метод является функцией и возвращает значение Истина, если элемент выбран, и Ложь - в том случае, когда достигнут конец выборки. Если нам необходим просто первый элемент выборки, достаточно написать так:

ВыборкаСкладов = Справочники.Склады.Выбрать(); ВыборкаСкладов.Следующий() ;

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

Если бы нам надо было получить наименование элемента справочника или код, то мы тоже легко смогли бы это сделать:

Наименование = ВыборкаСкладов.Наименование; Код = ВыборкаСкладов.Код;

У выборки справочника есть еще один метод– «ПолучитьОбъект». С помощью данного метода мы получаем объект элемента справочника:

ВыборкаСкладов.ПолучитьОбъект();

Разберем подробно метод Выбрать. Добавим в него два реквизита, это реквизит Склад автозапчастей (тип булево, неиндексируемый) и реквизит Время начала работы склада (тип дата, состав даты - время, индексируемый). Изменим также и форму, получим.

22

Допишем код

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

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

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

Сохраним обработку и перезапустим ее и увидим, что вышли только элементы справочника. Далее сделаем выборки для конкретного Родителя. Для этого разместим на форме поле ввода

23

для справочника Склады и поставим у него признак Выбор групп и элементов.

Доработаем предыдущий код следующий образом:

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

Далее разберем работу с отбором. Создадим отбор складов по Времени начала работы склада. Сделаем данный реквизит справочника индексируемым, поэтому он должен отбираться как надо. Поскольку нам необходимо сделать отбор по времени, добавим на форму поле ввода Время (Тип Дата, состав даты - Время).

24

И доработаем код следующим образом:

В нем выборка осуществляется для всех объектов, включая группы, причем сначала выводится группа, а потом элементы, которые входят в группу.

Теперь рассмотрим последний параметр выборок - это Порядок. Выведем все наши элементы, упорядочив их по Времени начала работы склада. Измените код следующим образом:

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

Выборка документов

Выборка документов – это объект, который представляет специализированный способ перебора документов.

Объект Выборка документов возвращается методом -Вы брать менеджера документа. Метод имеет следующий синтаксис:

Выбрать(<ДатаНачала>, <ДатаОкончания>, <Отбор>, <Порядок>)

25

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

Второй и третий параметр (Отбор и Порядок) имеют точно такой же смысл, как и при работе по выборке справочников - они работают только в отношении реквизита Дата и индексированных реквизитов. Точно так же нужно указывать только один реквизит.

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

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

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

26

Рис. 13

Данный элемент создает два реквизита формы – Кон Периода и Нач периода. Данные реквизиты мы и будем использовать в выборке.

Изменим код выборки следующим образом:

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

2.2. Работа с запросами

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

Табличный способ доступа к данным

Запросы реализуют табличный способ доступа к данным, которые хранятся в базе данных. Это означает, что все данные

27

представляются в виде совокупности связанных между собой

таблиц, к которым можно

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

и к нескольким таблицам

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

с данными позволяет получать сложные выборки данных, сгруп-

пированные и отсортированные определенным образом. Для этих

выборок могут быть рассчитаны общие и промежуточные итоги,

наложены ограничения на количество или состав записей и пр.

 

 

 

Язык запросов

 

 

 

Для того чтобы разработчик имел возможность использо-

вать

запросы

для

реализации

собственных

алгоритмов,

в платформе реализован язык запросов. Этот язык основан на SQL, но при этом содержит значительное количество расширений, ориентированных на отражение специфики финансово-

экономических задач и на максимальное сокращение усилий по разработке прикладных решений. Можно перечислить наиболее существенные возможности, реализуемые языком запросов.

Обращение к полям через точку(«.»). Если поля какой-либо таблицы имеют ссылочный тип(хранят ссылки на объекты другой таблицы), разработчик может в тексте запроса ссылаться на них через«.», при этом количество уровней вложенности таких ссылок система не ограничивает.

Обращение к вложенным таблицам (табличным частям документов и элементов справочников)

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

28

Реализация товаров (содержащему табличную часть Товары с составом отгружаемых товаров), мы можем считать табличную часть как отдельную таблицу:

Но также мы можем считать заголовочную запись документа, в которой значением поля Товары будут все записи вложенной таблицы, подчиненные этому объекту (документу):

Автоматическое упорядочивание

Для выбора наиболее правильного(«естественного») порядка вывода информации на экран или в отчет разработчику в большинстве случаев достаточно задать режим автоматического упорядочивания.

Многомерное и многоуровневое формирование итогов

Итоги

и подитоги

формируются с учетом группировки

и иерархии,

обход уровней

может выполняться в произвольном

29

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

Поддержка виртуальных таблиц

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

Стандартные SQL операции

В языке запросов поддерживаются стандартные дляSQL операции, такие, как объединение (Union), соединение (Join) и т. д.

30

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]