Меню


Курсы СтимулСправочникПолезные материалы1С:Предприятие 8.2РазработчикамПрактикум

1С:Предприятие 8.2 /
Разработчикам /
Практикум

Оглавление

Практикум 5. Создание отчетов

Отчет Реестр документов оказание услуги

Отчет РейтингУслуг

 

Отчет Реестр документов оказание услуги

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

1. Создайте в конфигураторе новый объект конфигурацииОтчет с именем РеестрДокументовОказаниеУслуги.

2. На закладке Основные нажмем кнопкуОткрыть схему компоновки данных.

3. В открывшемся диалоговом окне конструктора макета нажмем Готово.

4. В конструкторе схемы компоновки данных создадим Набор данных → запрос

Отчет РеестрДокументов...: ОсновнаяСхемаКомпоновкиДанных Р X Набор... Связи... Вычис... Ресур... Парам... Макеты В ложе... Настр... р... Св;: ВЕГ“ I ~1 Добавить набор данных • запрос} Добавить набор данных • объект 0 Добавить набор данных • объединение

и запустим конструктор запроса.

Отчет РеестрДокчментовОказаниеУсячги: ОсновнаяСхемаКомпоновкиДанных

5. В качестве источника данных для запроса выберем объектную (ссылочную) таблицу документов ОказаниеУслуги. Из этой таблицы выберем следующие поля (можно двойным щелчком):

гїі і Конструктор запроса х Таблицы и п... Группировка Условия Дополните ль... Объединени... Порядок Компоновка... Характерної. -.її- База данных Т аблицы Поля І+1-ДІ Справочники Е1-М] ОказаниеУ слуги 1.....- ОказаниеУ слуги. Дата Документы . ....— Ссылка

6. После этого перейдем на закладку Порядок и укажем, что результат запроса должен быть сначала упорядочен по значению поля Дата, а затем → по значению поля ОказаниеУслуги.Ссылка.

гїй Конструктор запроса П Таблицы и п... Группировка Условия Дополнитель... Объединени... Порядок Компоновка... Характерист. Поля Номер Склад Мастер Клиент 2 Все поля В- г] ОказаниеУслуги {.....- І исылка ЩШШ 1.....- ПометкаУдалі і.....- Номер і.....- Дата

7. Нажмем ОК и посмотрим, какой запрос сформировал конструктор запроса.

1 часть 2 часть ВЫБРАТЬ ОказаниеУслуги.Дата КАК Дата, ОказаниеУслуги.Номер, ОказаниеУслуги.Склад, ОказаниеУслуги.Мастер, ОказаниеУслуги.Клиент ИЗ Документ.ОказаниеУслуги КАК ОказаниеУслуги УПОРЯДОЧИТЬ ПО Дата, ОказаниеУслуги.Ссылка

Текст запроса начинается с части описания запроса (часть 1).

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

После ключевого слова ИЗ указываются источники данных → исходные таблицы запроса, содержимое которых обрабатывается в запросе. В данном случае это объектная (ссылочная) таблица Документ.ОказаниеУслуги. После ключевого слова КАК указывается псевдоним источника данных. В нашем случае это ОказаниеУслуги. В дальнейшем к этому источнику данных можно будет обращаться в тексте запроса, используя псевдоним.

Такое обращение мы видим в описании полей выборки:

ВЫБРАТЬ ОказаниеУслуги.Дата КАК Дата, ОказаниеУслуги.Номер, ОказаниеУслуги.Склад, ОказаниеУслуги.Мастер, ОказаниеУслуги.Клиент

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

После части описания запроса в нашем примере следует часть упорядочивания результатов (часть 2).

УПОРЯДОЧИТЬ по Дата, ОказаниеУслуги.Ссылка

Предложение УПОРЯДОЧИТЬ ПО позволяет сортировать строки в результате запроса. После этого ключевого предложения располагается выражение упорядочивания, которое в общем случае представляет собой перечисление полей (выражений) и порядка вывода.

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

8. Перейдем к настройке схемы компоновки данных. На закладке Настройки добавим новую группировку в структуру отчета .

Отчет РеестрДокументовОказаниеУслуги: ОсновнаяСхемаКомпоновкиДанных Наборы данных Связи наборов данных Вычисляемые поля Ресурсы Параметры Макеты Вложенные схемы Настройки ойки Настройки Выбраннь - К - К - Ь - С _і С ЬШ Новая группировка. Новая таблица Нова

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

10. На закладке Выбранные поля зададим поля, которые будут выводиться в отчет:

Отчет РеестрДокументовОказаниеУ слуги: ОсновнаяСхемаКомпоновкиДанных Наборы данных Связи наборов данных Вычисляемые поля Ресурсы Параметры Макеты Вложенные схемы Настройки В Отчет „у Детальные записи Настройки: Отчет Детальные записи СВыбранные полО Отбор

11. Теперь запустим 1С:Предприятие в режиме отладки и откроем отчет Реестр документов оказание услуги. Нажмем Сформировать и посмотрим на результат работы нашего отчета.

Отчет Реестр документов оказание услуги Действия Сформировать '2 конструктор настроек... Настройки... 1- Номер Склад Мастер Клиент Л 01.09.200812:00:00 000000005 Основной Деловой Иван Сергеевич Иванов Михаил Юрьевич 02.09.2008 0:00:00 000000007 Основной Си

Отчет РейтингУслуг

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

1. Создайте новый объект конфигурацииОтчет с именем РейтингУслуг.

2, На закладке Основные нажмите кнопку Открыть схему компоновки данных.

Отчет РейтингУсяуг _ п : 1 1 к Пгипсиию Г іуиі Данные Имя: Синоним: РейтингУ слуг Формы Макеты Комментарий: Подсистемы Праеа Интерфейсы Прочее Основная схема компоновки данных: . .. X С1 С Открыть схему компоновки данных Действия Ў Назаа Далее Закрыть Спра

3. В открывшемся диалоговом окне конструктора макета нажмем Готово.

4. В конструкторе схемы компоновки данных создадим Набор данных → запрос и запустим Конструктор запроса.

Отчет РейтингУсяуг: ОсновнаяСхемаКомпоновкиДанных Наборы дань Связи наборов данных Вычисляемые поля Ресурсы Параметры Макеты Вложенные схемы Настройки Добавить набор данных запрос] Добавить набор данных • объект 0 Добавить набор данных • объединение

Отчет РейтингУсячг: ОсновнаяСхемаКомпоновкиДанных

5. Выберем объектную (ссылочную) таблицу справочника Номенклатура и виртуальную таблицу регистра накопления Продажи.Обороты.

гїй Конструктор запроса П Таблицы и... Связи Группировка Условия Дополните... Объединен... Порядок Компоновк... Характери. -.и- База данных Т аблицы Поля Справочники Е1-Ш] Номенклатура Ш' • Клиенты Ш! ПродажиОбороты Й' - Сотрудники 0--1 Номенклатура Ё--С=1

6. Для того, чтобы исключить неоднозначность имен в запросе, переименуем таблицу Номенклатура в СпрНоменклатура (контекстное меню правой кнопкой мыши → Переименовать таблицу).

ГІІ8 Конструктор запроса х Таблицы и... Связи Группировка Условия Дополните... Объединен... Порядок Компоновк... Характери... Л База данных Т аблицы Поля Справочники тшш Добавить і і В-{ ] Клиенты Е --’1 Прода Й--С=1 Сотрудники 0--1 Номенклатура Ё--С=1 Скл

7. Выберем из таблиц поля СпрНоменклатура.Ссылка и ПродажиОбороты. ВыручкаОбо-

рот.

Т аблицы : ПродажиО бороты 0-1- Номенклатура Й I Клиент Ё -1- Мастер КоличеотвоО борот . .... В ыручкаО борот -—-- СтоимоотьО борот В { СпрНоменклатура / /.....— Ссылка — ..... - П ометкаУделения .....— П редопределенный - Зпг-- Поля I.....- СпрНоменклатур

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

гїі і Конструктор запроса х Таблицы и поля Связи Группировка Условия Дополнительно Объединения/П. Порядок Компоновка да..._ Характеристики Л N1- Т аблица 1 Все Т аблица 2 Все П. Условие связи Ні Л4 ПродажиО бороты у: РП СпрНоменклатура Ц 1— ПродажиОбороты.

9. Сбросим флаг Все у таблицы регистра и установим его у таблицы справочника.

 Таблицы и поля Связи Группировка Условия Дополнительно Обьединения/П... Порядок Компоновка да... Характеристики Иг Т аблица 1 Все аблица 2 /Все ... Условие связи 1 ПродажиОбороты п СпрНоменклатура / р1 [П ПродажиО бороты. Ном... = - СпрНоменклатура.Ссы...

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

10. Перейдем на закладку Условия и зададим условия выбора элементов из справочника Номенклатура. При задании условий выбора мы будем использовать параметры запроса.

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

СпрНоменклатура.ЭтоГруппа = ЛОЖЬ

Вторым условием должно быть то, что выбранный элемент является услугой (это Простое условие).

гвіі Конструктор запроса Таблицы и поля Связи Группировка Условия Дополнительно Объединения/Псевдон Условие СпрНоменклатура.ЗтоГ руппа = ЛОЖЬ В-Е=1 СпрНоменклатура - Ссылка - ПометкаУделения - Предопределенный В-- Родитель - ЭтоГруппа - Код - Наименование

Номер П... Условие 1 0 СпрНоменклатура.ЗтоГ руппа = ЛОЖЬ 2 - СпрНоменклагура.ВиаНоменкла... = В иаН оменклатуры

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

11. На закладке Объединения/Псевдонимы укажем, что представление элемента справочника будет иметь псевдоним Услуга, а поле регистра будет иметь псевдоним Выручка:

гїй Конструктор запроса П Таблицы и поля Связи Группировка Условия Дополнительно Обьединения/П... Порядок Компоновка да... Характеристики І 1 і Имя Без дубл. Имя ПОЛЯ Запрос 1 Запрос 1 і.....— ияш X :.....- СпрНоменклатура. Ссылка :.....І ВыручкаОборот Очи

Имя поля Запрос 1 1.....— Услуга 1.....- СпрНоменклатура. Ссылка {ЩЦГ] Выручка 5...../ П родажиО бороты. В ыручкаО борот

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

гіи Конструктор запроса Таблицы и... Связи Группировка Условия Дополните... Объединен... Порядок Компоновк... Характери... Поля Поле Сортировка + 0 1.....— Услуга Выручка Возрастание Ў I—1 ШЖ1Г5 Все поля ИШІІІІІ Возрастание 1 Убывание V Запрос Назад Далее

13. Создание запроса закончено. ОК.

14. Рассмотрим запрос, сформированный конструктором:

ВЫБРАТЬ СпрНоменклатура.Ссылка КАК Услуга, ПродажиОбороты.ВыручкаОборот КАК Выручка ИЗ Справочник.Номенклатура КАК СпрНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты ПО ПродажиОбороты.Номенклатура = СпрНоменклатура.Ссылка

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

При описании источников запроса (после ключевого слова ИЗ) использована возможность определения нескольких источников запроса:

Справочник.Номенклатура КАК СпрНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты ПО ПродажиОбороты.Номенклатура = СпрНоменклатура.Ссылка

В данном случае выбираются записи из двух источников СпрНоменклатура и ПродажиОбороты, причем ключевым предложением ЛЕВОЕ СОЕДИНЕНИЕ …¦ ПО описан способ, которым будут скомбинированы между собой записи этих двух источников.

ЛЕВОЕ СОЕДИНЕНИЕ означает, что в результат запроса надо включить комбинации записей из обоих источников, которые соответствуют указанному после ключевого слова ПО условию. Кроме этого в результат запроса надо включить еще и записи из первого (указанного слева от слова СОЕДИННИЕ) источника, для которых не найдено соответствующих условию записей из второго источника.

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

ГДЕ СпрНоменклатура.ЭтоГруппа = ЛОЖЬ И СпрНоменклатура.ВидНоменклатуры = ВидНоменклатуры

Условию отбора всегда предшествует ключевое слово ГДЕ. После него описывается само условие. Обратите внимание, что поля исходных таблиц, на которые накладывается условие, могут и не входить в список выборки (как в нашем случае). Кроме того, в нашем условии использован параметр запроса ВидНоменклатуры.

15. Теперь, когда мы закончили знакомиться с текстом запроса, продолжим формирование нашей схемы компоновки данных.

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

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

16. Перейдем на закладку Параметры.

Отчет РейтингУсяуг: ОсновнаяСхемаКомпоновкиДанных Наборы данных Связи наборов данных Вычисляемые поля Ресурсы Параметры Макеты Вложенные схемы Настройки Имя Заголовок Доступные типы Доступные значе... Д... Значение Выражение В к... Ог... ІНачалоПериода Нач

На этой закладке мы увидим три параметра, хотя в запросе мы задавали всего один - ВидНоменклатуры:

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

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

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

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

Отчет РейтингУсяуг: ОсновнаяСхемаКомпоновкиДанных Наборы данных Связи наборов данных Вычисляемые поля Ресурсы Параметры Макеты Вложенные схемы Настройки Имя Заголовок Доступные типы Доступные значе... Д... Значение Выражение В к... Ог... ІНачалоПериода Дат

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

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

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

18. Дважды кликнем в ячейке Доступные типы, соответствующей параметру НачалоПериода, нажмем кнопку выбора (…¦) и в нижней части окнаредактирования типа данных установим Состав даты в значение Дата.

Имя Заголовок Доступные типы Доступные значе... Д... Значение НачалоПериода Дата начала Дата КонецПериода ВиаНоменклатуры :; Кос Вио Редактирование типа данных П Составной тип данных 'у . т 7 і-ПЩн СтанаартныйПериод / /ф] Булево / V

19. Нажмем ОК.

Вторая особенность заключается в том, что по умолчанию время в дате установлено 00:00:00. Поэтому, если пользователь задаст период отчета с 01.03.2008 по 31.03.2008, итоги регистра будут рассчитаны с начала дня 01.03.2008 00:00:00 по начало дня 31.03.2008 00:00:00. Таким образом, данные за 31 число, отличные от начала дня, в расчет не войдут, что сильно удивит пользователя.

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

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

20. С помощью кнопки командной панели добавим новый параметр с именем ДатаОкончания.

Имя Заголовок Доступные типы Доступные значе... Д... Значение НачалоПфиода Дата начала Дата КонецПериода Конец периода Дата ВиаНоменклатуры Вин номенклату; П еречислениеСсылк... ДатаОкончания Дата окончания ЕЯ Редактирование типа данных Составной тип данны

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

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

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

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

В ячейке Выражение зададим для параметра КонецПериода следующее выражение

Отчет РейтингУсяуг: ОсновнаяСхемаКомпоновкиДанных Наборы данных Связи наборов данных Вычисляемые поля Ресурсы Параметры Макеты Вложенные схемы Настройки І Имя Заголовок Доступные типы До... д... Зн... Выражение В ключа... Огранич... НачалоПериода Дата нача

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

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

Отчет РейтингУслуг: ОсновнаяСхемаКомпоновкиДанных 9- X Наборы данных Связи наборов данных Вычисляемые поля Ресурсы] Параметры Макеты Вложенные схемы Настройки шчъ t Имя Заголовок Доступные типы Д... Д... Знамение Выражение Вк... Ог.. НачалоПериода Дата нач

24. Перейдем к формированию структуры отчета. На закладке Настройки добавим группировку и снова не укажем поле группировки.

25. На закладке Выбранные поля укажем поля Услуга и Выручка.

Отчет РейтингУсяуг: ОсновнаяСхемаКомпоновкиДанных Наборы данных Связи наборов данных Вычисляемые поля Ресурсы Параметры Макеты Вложенные схемы Настройки В Отчет „у Детальные записи Настройки: Отчет Параметры данных Детальные записи Выбранные поля Отбор Сор

26. В заключение, находясь на уровне Глобального отчета, перейдем на закладку Другие настройки и зададим заголовок отчетаРейтинг услуг.

Отчет РейтингУслчг: ОсновнаяСхемаКомпоновкиДанных Настройки: Отчет Отчет Параметры данных Выбранные поля Отбор Сортировка Условное оформление Пользовательские поля Другие настройки [_ Параметр Значение Выводить заголовок Авто Заголовок Рейтинг услуг Выводи

Запустите 1С:Предприятие в режиме отладки.

1. Запустим наш отчет Рейтинг услуг. Но перед тем, как нажать кнопкуСформировать, откроем Настройки и на закладке Параметры данных зададим период отчета с 01.09.2008 по 03.09.2008.

і/ Настройки отчета Рейтинг услуг П в--; -у его Детальные записи и і Настройки: Отчет Отчет Параметры данных Выбранные поля Отбор Сортировка Условное оформление Пользовательские поля Другие настройки Параметр Значение Дата 0 Дата начала Произвольная дата 0

2. Нажмем ОК и сформируем отчет. Результат будет выглядеть следующим образом:

Рейтинг услуг Параметры данных: Дата начала = 01.09.2008 Дата окончания = 03.10.2008 Услуга Выручка Ремонт импортного телевизора 800 Подключение воды 800 Подключение электричества 800 Ремонт отечественного телевизора 600 Диагностика Итого 3 000

Как мы видим, данные за 03.09.08 попадают в отчет. При изменении периода изменятся и содержание отчета .

Рейтинг услуг Параметры данных: Дата начала = 01.09.2008 Дата окончания = 02.09.2008 Услуга Выручка Подключение воды 800 Подключение электричества 800 Ремонт отечественного телевизора 600 Диагностика Ремонт импортного телевизора Итого 2 200


Нас находят: Таким образом в результате запроса будут присутствовать все услуги и для некоторых из них будут указаны обороты выручки Для тех услуг которые не производились в выбранном периоде не будет указано ничего, 89596, В качестве источника данных для запроса выберем объектную (ссылочную) таблицу Номенклатура и виртуальную таблицу регистра накопления Продажи Обороты, Перейдем на закладку Условия и зададим условия выбора элементов из справочника Номенклатура, как в 1с сформировать реестр документов по возрастанию дат, Добавим в нашу базу еще один отчет «Реестр документов» В отчет будут выводиться документы согласно заданных условий В качестве условий установим период и вид документов Для начала создадим новый отчет в дереве метаданных, выражение ключевого стимула


Подписка на новости RSS

Мы на Facebook