Механизм и конструктор языка запросов в программном обеспечении для учета ресурсов предприятия. Учебное пособие
.pdf
В первом способе мы получаем доступ к колонке как к свойству через точку, во втором - используя оператор квадратные скобки и указывая в них номер индекса колонки. Первый способ более предпочтителен, так как делает код гораздо лучше читаемым и наглядным.
Обход строк
Это можно осуществлять с помощью операторов цикла Для каждого...Цикл и Для…Цикл. Осуществим обход уже заполненной таблицы и тем, и другим способом:
С помощью данного метода мы обходим все строки Таблицы значений. Переменная Стр принимает значения всех строк таблицы в порядке обхода. Тип данной переменной - Строка таблицы значений, поэтому мы можем спокойно обращаться к -ко лонкам данной строки, используя точку или квадратные скобки. Покажем, как осуществить обход, используя оператор Для…Цикл.
В данном цикле нам необходимо получить индексы всех строк, для этого мы осуществляем обход, начиная с нуля и заканчивая значением, которое возвращает метод Количество за минусом единицы.
11
Работа с таблицами значений на форме
Табличное поле - это элемент, предназначенный для взаимодействия пользователя с таблицами значений, табличными частями документов и справочников, и списками документов и справочников. Посредством Табличного поля пользователь может добавлять, изменять, удалять и совершать другие действия со строками, если Табличное поле привязано к Таблице значений, или с объектами, если Табличное поле привязано, к Списку документов.
Создадим новую обработку, форму для обработки и добавим на форму Табличное поле. Для этого перейдем Форма – Вставить элемент управления. И в открывшемся списке выберем пункт Табличное поле.
В типе значения оставим Таблица значений, установим флажок Вставить командную панель, и нажмем кнопку ОК.
После этого выделим область на форме, которую займет наша Таблица значений: наведем крестик на нужный нам угол, который будет верхней левой точкой таблицы, нажмите левую кнопку мыши, и, не отпуская, ведем прямоугольник в нужный правый нижний угол. Все, таблица добавилась.
Помимо этого создалась Таблица значений, которая называется Табличное поле1, она является реквизитом формы и привязывается к элементу через свойство Данные.
12
Данное Табличное поле абсолютно пустое, в нем пока нет ни одной колонки. Для того чтобы добавить колонки, необходимо нажать правую кнопку мышки на поле таблицы и выбрать Добавить колонку. Колонка появилась в форме, дадим ей название Дата выплаты и укажем тип данных для нее Дата.
Добавим также колонки: ФИО (тип строка), Автомобиль (Тип ссылка на справочник Автомобили), Количество часов (тип число), Цена часа (тип число) и Сумма (тип число), получим.
Мы создали табличное поле и заполнили его значениями.
13
1.3. Табличные части справочников и документов
Часто бывает, что объект метаданных должен хранить некий список однотипной информации, размер которой изначально может быть не известен. Например, у справочника Контрагенты это может быть список ответственных лиц контрагента, а у документа Приход товара это список товаров, который поступили в организацию. Для того чтобы осуществить учет однотипной информации и необходимы табличный части.
Наиболее часто перечисление какой-то однотипной информации реализуется в документах. Например, у нас может быть приход различного товара на склады или продажа разного товара контрагентам. Создать табличную часть документа можно двумя способами. Первый - в конструкторе документа: на закладке данные, во втором окне для табличных частей, где и нужно добавлять новую табличную часть при помощи кнопки Добавить табличную часть. Второй способ: непосредственно в окне редактирования метаданных. Для этого нужно мышкой выделить ветвь дерева документа, вызвать контекстное меню и выполнить единственную команду Добавить.
У справочников 1С также могут существовать табличные части, механизм создания которых аналогичен механизму создания табличных частей документов (используя конструктор справочника и через окно дерева метаданных).
Само по себе создание табличной части не имеет смысла, поскольку информация должна храниться в разрезе колонок(реквизитов). Создать колонку можно двумя способами(как в случае справочников, так и в случае документов). Первый способ, используя конструктор документа. Второй способ - посредством окна метаданных (нужно выделить мышкой табличную часть).
14
Можно создавать несколько табличных частей и неограниченное количество реквизитов в ней. Так данная табличная часть выглядит на форме.
Получение данных табличных частей
Добавим в табличную часть Комплектация новый реквизит
– Количество (Тип число), и создадим кнопку на форме, при нажатии на которую у всех строк табличной части реквизит Количество примет значение, равное единице.
После добавления реквизита сделаем так, чтобы он был виден в табличном поле на форме. Для этого откроем форму элемента справочника в Меню – Форма – Размещение данных.
15
В дереве данных раскроем ветку Комплектация и в списке под Комплектацией найдем нужный реквизит– Количество. Установим флажок напротив него. Нажмем кнопку ОК и поле Количество появится на форме.
Добавим в командную панель табличного поля подменю Заполнить. И в этом подменю создадим кнопку Заполнить количество. В обработчике нажатия данной кнопки будет следующий код:
В данном коде к табличной части справочника или документа в модуле формы можно обращаться просто по имени нужной табличной части. Сначала мы узнаем, есть ли данные в табличной части, и если нет, то есть количество строк равно нулю, то выходим из процедуры. После мы просим ввести интерактивно число, и если оно введено, осуществляем обход строк табличной части с помощь оператора цикла Для каждого…Цикл. Внутри цикла присваиваем реквизиту Количество каждой строки табличной части число, которое пользователь интерактивно ввел.
16
Итак, мы научились получать и записывать данные в табличные части документов и справочников.
Загрузка в табличную часть и выгрузка из табличной части Загрузить
Рассмотрим метод табличной части– Загрузить. С помощью данного метода можно загрузить таблицу значений в -таб личную часть справочника или документа. Причем уже имеющиеся строки табличной части удаляются. Отметим, что колонки по названиям и по типам значений у таблицы и у табличной части должны совпадать.
Разместим на форме табличное поле с колонками -Ком плектующие и Количество.
При нажатии на кнопку Выполнить будем записывать таблицу значений, которая привязана к табличному полю, в табличную часть выбранного автомобиля. В обработчике кнопки Выполнить напишем следующий код:
17
В данном коде проверяется, есть ли данные в реквизите Автомобиль. После, когда мы в этом уверены, получаем объект элемента данного справочника, получаем табличную часть элемента и загружаем в нее таблицу значений, после чего записываем наш объект.
Выгрузить
Для выгрузки данных из табличной части в таблицу значений будем использовать метод Выгрузить табличные части.
Рассмотрим синтаксис данного метода:
Выгрузить(<Строки>, <Колонки>) Выгрузить (<ПараметрыОтбора>, <Колонки>)
Данный синтаксис очень похож на синтаксис метода Скопировать для таблиц значений и действует аналогично. Доработаем обработку: создадим кнопку Загрузить табличную часть, при нажатии на которую табличная часть из реквизита формы Автомобиль будет загружена в табличное поле на форме.
18
В обработчике нажатия на кнопку напишем следующий
код:
Мы показали как обращаться к табличным частям справочников и документов, работать с ними и производить все нужные манипуляции над ними.
2. Получение данных
Под термином получение данных из базы, будем понимать получение любого Набора элементов справочников, документов, записей регистров сведений, накопления и регистров бухгалтерии. Рассмотрим получение выборки данных для документов и справочников. Данные можно получать двумя способами– используя методы менеджеров объектов и с помощью запросов.
2.1. Понятие выборки
Выборка - это специализированный способ перебора чеголибо. В языке программирования 1С существует много видов выборки. Рассмотрим два из них - это выборка документов и выборка справочников.
19
Выборка справочников
Выборка справочников - это объект, который представляет собой специализированный способ перебора элементов справочника. Выборка является динамическим объектом, то есть она не получает все элементы справочника сразу, а получает их порциями, что позволяет достаточно быстро обходить справочники, состоящие из большого количества элементов. Данный объект возвращается двумя методами менеджера справочника - это Выбрать и Выбрать иерархически.
Выбрать
Метод Выбрать объекта «Справочник менеджер» формирует некоторую выборку данных по заданным условиям. Этот метод является функцией и возвращает объект Выборка справочника. Рассмотрим синтаксис данного метода:
Выбрать(<Родитель>, <Владелец>, <Отбор>, <Порядок>) Все параметры данного метода являются необязательными. «Родитель» - применим для иерархических справочников.
Если он указан, то будут выбираться только те элементы справочника, у которых в свойстве Родитель стоит данный элемент. Если параметр не заполнен, то выберутся все элементы справочника. Чтобы выбрать элементы только верхнего уровня, необходимо указать в качестве Родителя пустую ссылку.
«Владелец» необходим, если мы работаем с подчиненным справочником. Когда мы его укажем, то будет осуществлена выборка всех элементов, которые подчинены данному владельцу.
«Отбор» - данный параметр представляет собой структуру, в которой мы можем задать критерий, по которому будет произведена выборка данных. Ключом элемента структуры будет название поля, по которому будет действовать отбор, а значение структуры – непосредственно то значение, по которому должен будет произвестись отбор. Структура должна содержать только один элемент, то есть отбор можно осуществить только по одному реквизиту. В качестве полей для отбора могут быть заданы
20
