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

1. Создайте новый регистр накопления Продажи, вид регистра: Обороты. Расширенное представление списка: Движения по регистру Продажи. Регистр будет отображаться в подсистемах Бухгалтерия, Учет материалов и Оказание услуг.

2. Измерения регистра: Номенклатура, тип СправочникСсылка.Номенклатура; Клиент, тип СправочникСсылка.Клиенты; Мастер, тип СправочникСсылка.Сотрудники. Ресурсы: Количество, тип Число, длина 15, точность 3; Выручка, тип Число, длина 15, точность 2.

3. В командном интерфейсе подсистем Бухгалтерия, Учет материалов и Оказание услуг сделайте доступной ссылку на регистр накопления Продажи в группе Панель навигации.См. также.

4. В окне редактирования документа ОказаниеУслуги на закладке Движения отметьте регистр Продажи.

5. В Модуле объекта документа ОказниеУслуги откройте процедуру ОбработкаПроведения. Добавьте туда в нужные места два фрагмента:

Движения.Продажи.Записывать = Истина;

и

Движение = Движения.Продажи.Добавить();

Движение.Период = Дата;

Движение.Номенклатура=ТекСтрокаПереченьНоменклатуры.Номенклатура;

Движение.Клиент = Клиент;

Движение.Мастер = Мастер

Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество;

Движение.Выручка = ТекСтрокаПереченьНоменклатуры.Сумма;

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

7. В режиме «1С: Предприятие» перепроведите все документы Оказание услуги. Проверьте движения этих документов в регистрах. Движения в регистре Продажи должны быть примерно такими (рис. 12.1).

Рис. 12.1

 

 

13. Табличная модель платформы «1С: Предприятие»

 

13.1. Табличная модель данных

 

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

К достоинствам табличной модели можно отнести тот факт, что построение модели предметной области по существу совпадает с проектированием структуры БД.

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

Инструментом отбора и анализа данных является язык запросов SQL. В «1С: Предприятии» табличная модель данных используется явно только при создании и редактировании запросов. В инструменте Конструктор запроса разработчик может использовать иерархический список объектов табличной модели данных.

Для каждой моделируемой разработчиком сущности создается как минимум одна таблица БД. Архитектура платформы и инструментарий не позволяют обращаться к таблицам и их полям непосредственно по именам, подобно традиционным СУБД. Разработчик 1С не знает имен таблиц и полей, как они представлены в БД. Вместо этого он использует наименования, соответствующие моделируемым объектам. Тем не менее, на уровне БД им соответствуют таблицы.

В «1С: Предприятии» различают два типа таблиц.

Реальные таблицы соответствуют моделируемым объектам (сущностям) и хранятся в базе данных. Реквизиты объектов соответствуют полям таблиц.

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

 

Поля таблиц могут иметь простой или составной тип данных. Составной тип данных позволяет хранить для разных записей значения различных типов.

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

13.2. Виды таблиц базы данных

Таблица констант – реальная таблица, имеет название «Константы». Для новых констант автоматически создаются новые поля, так как константы могут иметь различные типы данных, а отобразить это в таблице БД можно только при помощи новых полей. Эта таблица имеет только одну запись – значения констант.

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

Код (строка, число) – уникальный код элемента справочника и записи в таблице;

Наименование (строка) – наименование элемента справочника;

Представление (строка)

ПометкаУдаления (булево)

Предопределенный (булево) – признак предопределенного элемента справочника;

ЭтоГруппа (булево) – признак группы;

Родитель (СправочникСсылка) – ссылка на родительский элемент справочника;

Владелец (СправочникСсылка) – ссылка на элемент справочника-владельца, который является главным по отношению к этому элементу подчиненного справочника;

Ссылка (СправочникСсылка) – ссылка на текущую запись справочника;

Реквизиты (тип реквизита) – переменный список полей реквизитов элемента справочника;

ТабличныеЧасти (РезультатЗапроса)

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

Таблицы документов – реальные таблицы. Каждый документ представляется отдельной таблицей. Имя таблицы соответствует имени документа «Документ.ИмяДокумента».

Таблицы журналов документов – виртуальные таблицы. Каждый журнал представлен отдельной таблицей. Имя таблицы соответствует имени журнала. В состав полей таблиц входят поля документов и поля граф журнала.

Таблицы регистров сведений – реальные таблицы. Каждый регистр представляется отдельной таблицей. Имя таблицы соответствует имени регистра «РегистрСведений.ИмяРегистра».

Регистры сведений имеют две виртуальные таблицы.

Таблица среза последних записей. Предназначена для получения наиболее близких в прошлом записей регистра на указанную дату включительно. Содержит только активные записи. Эта таблица имеет следующую структуру:

Период (дата)

Регистратор (ДокументСсылка)

НомерСтроки (число)

Активность (булево)

Измерения (тип измерения)

Ресурсы (тип ресурса)

Реквизиты (тип реквизита)

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

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

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

Регистры накопления имеют три виртуальные таблицы.

Таблица остатков хранит сведения об остатках регистра. Содержит только активные записи. Существует только для регистров остатков. Структура:

Измерения (тип измерения)

РесурсОстаток (число)

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

Таблица оборотов хранит сведения об оборотах регистра за период. Содержит только активные записи. Существует для регистров оборотов. Структура:

Период (дата)

Регистратор (ДокументСсылка)

Измерения (тип измерения)

РесурсОборот (число)

РесурсПриход (число)

РесурсРасход (число)

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

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

Период (дата)

Регистратор (ДокументСсылка)

Номерстроки (число)

Измерения (тип измерения)

РесурсОборот (число)

РесурсПриход (число)

РесурсРасход (число)

РесурсНачальныйОстаток (число)

РесурсКонечныйОстаток (число)

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

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

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

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

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

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

 

Таблицы регистров расчета – реальные таблицы. Каждый регистр представляется отдельной таблицей. Имя таблицы соответствует имени регистра «РегистрРасчета.ИмяРегистра».

13.3. Создание запроса и использование его результатов

 

Аналогом SQL в «1С:Предприятии» является язык запросов. Синтаксис и основные конструкции языка почти идентичны стандарту ANSI SQL 92. Возможна запись в русскоязычной и англоязычной нотациях.

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

1. Создать объект запроса.

2. Разработать запрос. (Это можно делать вручную в редакторе кода или при помощи специального инструмента – Конструктора запросов)

3. Задать параметры запроса

4. Исполнить запрос

5. Обработать результаты запроса

6. Отобразить результаты запроса

 

 

Рис.13.1. Алгоритм выполнения запроса

 

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

НекоторыйЗапрос = Новый Запрос(текст);

Текст запроса также можно задавать не в конструкторе, но и при помощи свойства

Запрос.Текст = “ВЫБРАТЬ …..”;

Параметры запроса задаются методом

Запрос.УстановитьПараметр(Имя, Значение);

Выполнение запроса осуществляется методом

Запрос.Выполнить();

Результаты запроса необходимо представить пользователю или использовать в программном коде для дальнейшей работы. Метод Выполнить() возвращает коллекцию РезультатЗапроса, которая содержит набор записей запроса. Структура записей определяется свойством Колонки

Обращаться к коллекции можно так:

РезультатЗапроса[1][1]

РезультатЗапроса.Колонки[1]

Также возможно обращение по именам колонок. При этом согласование типа данных ложится на разработчика.

Перебор записей результата запроса осуществляется при помощи объекта Выборка:

Выборка = РезультатЗапроса.Выбрать();

и его метода

Выборка.Следующий();

Перебор может быть организован в цикле:

Пока Выборка.Следующий() Цикл

КонецЦикла;

13.4. Структура и описание запроса

 

Текст запроса состоит из следующих логических частей:

<Описание запроса>

[<Объединение запросов>]

[<Упорядочивание результатов>]

[АВТОУПОРЯДОЧИВАНИЕ]

[<Описание итогов>]

 

Описание запроса является единственной обязательной частью запроса. Описание запроса определяется следующей конструкцией

ВЫБРАТЬ [РАЗРЕШЕННЫЕ] [РАЗЛИЧНЫЕ] [ПЕРВЫЕ <Количество>] <Список полей выборки>

[ИЗ <Список источников>]

[ГДЕ <Условие отбора>]

[СГРУППИРОВАТЬ ПО <Поля группировки>]

[ИМЕЮЩИЕ <Условие отбора>]

[ДЛЯ ИЗМЕНЕНИЯ [<Список таблиц верхнего уровня>]]

Команда ВЫБРАТЬ обеспечивает отбор данных в соответствии с заданным критерием. После нее приводится перечень имен полей, по которым требуется выполнить поиск. Поля разделяются запятой (рис.13.2).

Рис.13.2

 

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

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

Ключевое слово РАЗРЕШЕННЫЕ означает, что запрос выберет только те записи, на которые у текущего пользователя есть права.

Ключевое слово РАЗЛИЧНЫЕ позволяет оставить в результате запроса только отличающиеся строки (рис.13.3).

Рис.13.3

 

Конструкция ПЕРВЫЕ <Количество> позволяет задать предельное количество строк в результате запроса.

В запросе можно использовать дополнительные условия отбора. Для этого применяется оператор ГДЕ, после которого можно задавать ограничения на отбираемые поля.

В дополнительных условиях можно применять не только запрашиваемые поля, но и любые другие из данной таблицы. Допускается использование арифметических операторов сравнения, логических операторов AND, OR, NOT. В качестве параметров можно вводить числа, строки, даты, логические переменные (рис.13.4).

 

Рис.13.4

 

Если источником данных является табличная часть объекта, то обращение к реквизитам самого объекта может происходить только по ссылке. Табличным частям и полям могут назначаться псевдонимы. Для этого используется ключевое слово КАК. Псевдонимы обязательно использовать при обращении к полям табличной части (рис.13.5).

 

Рис.13.5

 

13.5. Взаимосвязь таблиц

Механизм соединения таблиц, участвующих в запросе, позволяет дополнительно ограничивать состав данных, получаемых в результате выполнения запроса. Если в операторе ИЗ перечислить несколько таблиц, а в операторе ВЫБРАТЬ задать некоторые поля из этих таблиц, то результатом будут все возможные сочетания значений полей таблиц. Для ограничения выборки используют операторы соединения таблиц.

Различают четыре вида соединения:

· [ВНУТРЕННЕЕ] СОЕДИНЕНИЕ

· ЛЕВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ

· ПРАВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ

· ПОЛНОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ

Рассмотрим различие вариантов соединения на следующем примере. Пусть есть две таблицы:

Таблица 1

Номенкл. Номер1
Ручка
Карандаш
Вилка

 

Таблица 2

ЕдИзм Номер2
Шт
Гр
Кг
банка

 

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

Таблица1.Номер1=Таблица2.Номер2

В качестве полей запроса определим две колонки: «Номенкл.» из первой таблицы и «ЕдИзм» из второй таблицы.

В соответствии с условием можно выделить записи, для которых условие выполняется (рис.13.6):

Рис.13.6

 

Записи, неудовлетворяющие условию соединения (Рис.13.7):

 

Теперь рассмотрим варианты соединения:

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

Ручка Шт.
Ручка банка
Вилка Гр.

Левое внешнее соединение:в результат выполнения запроса войдут данные из записей, для которых выполняется условие соединения и «не вошедшие» из Таблицы 1.

Ручка Шт.
Ручка банка
Вилка Гр.
Карандаш Null

Правое внешнее соединениеобратно левому.

Ручка Шт.
Ручка банка
Вилка Гр.
Null Кг.
     

Полное внешнее соединение.В результат запроса войдут как записи, для которых выполнялось условие соединения, так и записи, полученные из «не вошедших» данных из обеих таблиц.

 

Ручка Шт.
Ручка банка
Вилка Гр.
Карандаш Null
Null Кг.

 

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

Пример внутреннего соединения показан на рис.13.6.

Рис. 13.6

Примеры внутренних соединений показаны на рис. 13.7.

 

// Показать курсы всех валют, которые хранятся в регистре

// сведений КурсыВалют.

// Возможно, что для некоторой валюты не будет найдено

// соответствующей записи в регистре сведений, но она также

// должна попасть в отчет.

| ВЫБРАТЬ Спр.Наименование, Рег.Курс

| ИЗ Справочник.Валюты КАК Спр

| ЛЕВОЕ СОЕДИНЕНИЕ

| РегистрСведений.КурсыВалют.СрезПоследних() КАК Рег

| ПО Спр.Ссылка = Рег.Валюта

// Или то же самое можно сделать так:

| ВЫБРАТЬ Спр.Наименование, Рег.Курс

| ИЗ РегистрСведений.КурсыВалют.СрезПоследних() КАК Рег

| ПРАВОЕ СОЕДИНЕНИЕ

| Справочник.Валюты КАК Спр

| ПО Спр.Ссылка = Рег.Валюта

Рис.13.7

 

13.6. Упорядочивание

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

УПОРЯДОЧИТЬ ПО СписокПолей

Для каждого поля из списка можно указать порядок сортировки: ВОЗР, УБЫВ, ИЕРАРХИЯ. Если порядок не указан, то сортировка происходит по возрастанию.

Последний порядок (ИЕРАРХИЯ) работает только для таблиц с иерархией, например таблиц иерархических справочников. Упорядочивание происходит сначала по первому полю списка, затем в рамках уже существующей сортировки упорядочивание по второму полю и т.д. (рис. 13.8).

 

| ВЫБРАТЬ Наименование КАК Товар

| ИЗ Справочник.Номенклатура

| УПОРЯДОЧИТЬ ПО Товар ИЕРАРХИЯ

Рис.13.8

 

Ключевое слово ПЕРВЫЕ ограничивает выборку несколькими первыми записями. Часто это слово используется в комбинации с упорядочиванием (рис.13.9).

// Найти 3 самых дорогих товара

| ВЫБРАТЬ ПЕРВЫЕ 3 Наименование КАК Товар, ЦенаПродажи КАК Цена

| ИЗ Справочник.Номенклатура

| УПОРЯДОЧИТЬ ПО Цена УБЫВ

Рис.13.9

 

13.7. Группировка и итоги

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

СГРУППИРОВАТЬ ПО СписокПолей

Порядок следования полей в списке определяет и порядок вложенности (иерархию) групп. Для получения обобщенных данных по группам применяются агрегатные функции СУММА, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, КОЛИЧЕСТВО. Эти функции можно использовать и в операторе ВЫБРАТЬ, но при этом в список полей группировки нужно добавлять все поля из ВЫБРАТЬ, не охваченные агрегатными функциями. Ключевое слово АВТОУПОРЯДОЧИВАНИЕ позволяет включить режим автоматического формирования полей для упорядочивания результата запроса (рис. 13.10).

Рис.13.10

 

В группировке можно указывать дополнительные условия отбора по полям группировки и агрегатным функциям. Для этого используется оператор ИМЕЮЩИЕ. Он применяется только с группировками. Он существенно замедляет работу сервера по выполнению запроса (рис.13.11).

 

// Выбрать товары, которых продали не менее 100 штук

| ВЫБРАТЬ Номенклатура,

| СУММА(Количество) КАК Продано

| ИЗ Документ.ПродажаТоваров.Товары

| СГРУППИРОВАТЬ ПО Номенклатура

| ИМЕЮЩИЕ Сумма(Количество) >= 100

Рис.13.11

 

Логическим завершением группировки является получение общих итогов по полям запроса. Для этого применяется оператор

ИТОГИ СписокПолейСАгрегатнымиФункциями ПО СписокПолей

В списке полей можно использовать оператор ОБЩИЕ (рис.13.12).

 

 

// Итоги по группировкам

// Объем продаж по каждой комбинации контрагента и номенклатуры

| ВЫБРАТЬ Контрагент, Номенклатура, Сумма

| ИЗ РегистрНакопления.Продажи

| ИТОГИ СУММА(Сумма)

| ПО Контрагент, Номенклатура

| АВТОУПОРЯДОЧИВАНИЕ

Рис.13.12

 

13.8. Параметры

 

Для включения в текст запроса переменных значений непосредственно перед выполнением используется механизм параметров. Параметр – это аналог переменной любого языка программирования в языке запроса. Каждый параметр в тексте запроса обозначается знаком &, например &Параметр1. Параметры могут использоваться в операторе ГДЕ для сравнения с полями запроса. Заполнение значений параметров выполняется средствами встроенного языка перед выполнением запроса (рис.13.13).

 

// Использование параметров и ключевого слова МЕЖДУ

Запрос = Новый Запрос ("

| ВЫБРАТЬ Наименование КАК Товар,

| ЦенаПокупки

| ИЗ Справочник.Номенклатура

| ГДЕ ЦенаПокупки МЕЖДУ &МинЦена И &МаксЦена");

Запрос.УстановитьПараметр("МинЦена", 100);

Запрос.УстановитьПараметр("МаксЦена", 1000);

РЗ = Запрос.Выполнить();

Рис.13.13

 

 

14. Система компоновки данных

 

Система компоновки данных предназначена для создания произвольных отчетов в системе «1С: Предприятие» и состоит из нескольких основных частей.

Исходные данные для компоновки отчета содержит в себе схема компоновки данных. Это наборы данных и методы работы с ними (рис. 14.1).

Рис.14.1. Общая схема работы с системой компоновки данных

 

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

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

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

При формировании и исполнении отчета происходит последовательная передача данных от одного объекта системы компоновки данных к другому, до получения конечного результата – документа, показанного пользователю.

Алгоритм взаимодействия этих объектов выглядит следующим образом:

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

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

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

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

Эту последовательность работы можно представить в виде следующей схемы

Рис. 14.2. Схема работы системы компоновки








Дата добавления: 2016-02-16; просмотров: 825;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.098 сек.