Отчет Переченьуслуг Отчет Перечень услуг будет содержать информацию о том, какие услуги и по какой цене оказывает ООО «На все руки мастер». На его примере мы познакомимся с возможностью получения последних значений из периодического регистра сведений и вывода иерархических справочников. Создадим новый объект конфигурации Отчет. Назовем его ПереченьУслуг и запустим конструктор схемы компоновки данных. Создадим новый Набор данных запрос и вызовем конструктор запроса. Выберем объектную (ссылочную) таблицу справочника Номенклатура и виртуальную таблицу регистра сведений Цены.СрезПоследних. Для того чтобы исключить неоднозначность имен в запросе, переименуем таблицу Номенклатура в СпрНоменклатура. Вызовем диалог ввода параметров виртуальной таблицы ЦеныСрезПоследних и укажем, что период будет передан в параметре ДатаОтчета (рис. 5.42). Рис. 5.42. Параметры виртуальной таблицы Затем выберем из таблиц следующие поля: СпрНоменклатура.Родитель; СпрНоменклатура.Ссылка; ЦеныСрезПоследних.Цена (рис. 5.43). Рис. 5.43. Выбранные поля Перейдем на закладку Связи, сбросим флаг Все у таблицы регистра и установим его у таблицы справочника. На закладке Условия зададим условие выбора элементов справочника Номенклатура - выбираемые элементы должны соответствовать виду номенклатуры, переданному в параметре запроса ВидНоменклатуры (рис. 5.44). Рис. 5.44. Условия выбора элементов На закладке Объединения/Псевдонимы укажем, что поле Родитель будет иметь псевдоним ГруппаУслуг, а поле Ссылка – Услуга (рис. 5.45). Рис. 5.45. Объединения/Псевдонимы Перейдем на закладку Группировка и укажем, что группировка будет производиться по полю СпрНоменклатура.Родитель Значения суммируемых полей задавать не станем (рис. 5.46). Рис.5.46. Поля группировки На этом создание запроса завершено, нажмем OK. Теперь рассмотрим текст запроса, сформированный конструктором (листинг 5.13). Листинг 5.13. Текст запроса ВЫБРАТЬ СпрНоменклатура.Родитель КАК ГруппаУслуг, СпрНоменклатура.Ссылка КАК Услуга, ЦеныСрезПоследних.Цена ИЗ Справочник.Номенклатура КАК СпрНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних(&ДатаОтчета, ) КАК ЦеныСрезПоследних ПО ЦеныСрезПоследних.Номенклатура = СпрНоменклатура.Ссылка ГДЕ СпрНоменклатура.ВидНоменклатуры = &ВидНоменклатуры СГРУППИРОВАТЬ ПО СпрНоменклатура.Родитель, СпрНоменклатура.Ссылка, ЦеныСрезПоследних.Цена Практически все конструкции, использованные в этом запросе, нам уже известны. Перейдем к редактированию схемы компоновки данных. На закладке Ресурсы нажатием кнопки >> выберем единственный доступный ресурс Цена. На закладке Параметры зададим значение параметра ВидНоменклатуры как Перечисление.ВидыНоменклатуры.Услуга. Кроме этого снимем ограничение доступности для параметра ДатаОтчета и зададим ему заголовок – Дата отчета. В поле Доступные типы зададим состав даты – Дата. Для параметра Период, наоборот, установим ограничение доступности (рис. 5.47). Рис. 5.47. Параметры схемы компоновки Приступим к созданию структуры отчета. Перейдем на закладку Настройки и создадим группировку по полю ГруппаУслуг, указав тип группировки Иерархия. Внутри этой группировки создадим еще одну группировку без указания группового поля. Она будет содержать детальные записи отчета (рис. 5.48). Рис. 5.48. Структура и выделенные поля отчета Перейдем на закладку Выбранные поля и укажем, что в отчет будут выводиться поля Услуга и Цена (рис. 5.49). Рис. 5.49. Структура отчета И в заключение настроим внешний вид отчета на закладке Другие настройки. Так как наш отчет будет представлять собой просто список оказываемых услуг, в котором интересны цены на конкретные услуги, выводить значения ресурса Цена для каждой из группировок и для всего отчета в целом не имеет смысла. Чтобы запретить вывод общих итогов в отчете, установим параметр Расположение общих итогов по вертикали в значение Нет. Затем перейдем к настройкам конкретной группировки – ГруппаУслуг. Для параметра Расположение итогов этой группировки укажем значение Нет. Вернемся к настройкам всего отчета в целом. Для параметра Расположение полей группировок укажем значение Отдельно и только в итогах (так наш отчет будет лучше «читаться»). Напоследок зададим заголовок отчета – Перечень услуг. Теперь запустим 1С:Предприятие в режиме отладки и прежде всего откроем периодический регистр Цены. Добавим в него еще одно значение для услуги Диагностика: новая цена услуги на 01.04.2004 – 350 (рис. 5.50). Это позволит нам протестировать отчет. Рис. 5.50. Записи регистра «Цены» Теперь выполним отчет Перечень услуг по состоянию на 31.03.2004 (рис. 5.51). Рис. 5.51 Результат выполнения отчета Наш отчет правильно отражает цену услуги Диагностика на 31.03.2004 – 200 руб. Еще раз выполним отчет, но теперь уже на другую дату - 01.04.2004 (рис. 5.52). Рис. 5.52. Результат выполнения отчета Как видите, показана новая цена услуги Диагностика — 350 руб. Таким образом, на примере этого отчета мы показали, как система компоновки данных получает последние значения из периодического регистра сведений и как вывести группировки по иерархии справочника. Отчет Рейтинг клиентов Отчет Рейтинг клиентов будет показывать, каков доход от оказания услуг каждому из клиентов за все время работы ООО «На все руки мастер». На его примере мы продемонстрируем возможность использования диаграммы для отображения результата запроса. Диаграмма Диаграмма является элементом управления, предназначенным для размещения в таблицах и формах диаграмм и графиков различного вида системы 1С:Предприятие. Логически диаграмма является совокупностью точек, серий и значений серий в точке (рис. 5.53). Рис. 5.53. Пример диаграммы Как правило, в качестве точек используются моменты или объекты, для которых мы получаем значения характеристик, а в качестве серий – характеристики, значения которых нас интересуют. Например, диаграмма продаж видов номенклатуры по месяцам будет состоять из точек – месяцев, серий – видов номенклатуры и значений – оборотов продаж. Диаграмма как объект встроенного языка имеет три области, которые позволяют управлять оформлением диаграммы: область построения, область заголовка и область легенды (рис.5.54). Рис. 5.54. Области диаграммы Диаграмма может быть вставлена в структуру отчета как отдельный элемент. В следующем отчете мы будем использовать диаграмму в структуре настроек схемы компоновки данных. Создание отчета Рейтинг клиентов Создадим в конфигураторе новый объект конфигурации Отчет. Назовем его РейтингКлиентов, откроем его основную схему компоновки данных. Создадим набор данных – запрос, вызовем конструктор запроса и выберем виртуальную таблицу регистра накопления Продажи.Обороты и из нее одно поле – ПродажиОбороты.Клиент. Затем добавим новое поле (значок Добавить в командной панели над списком полей) и при помощи построителя выражений определим его как разность между выручкой и стоимостью (рис. 5.55). Рис. 5.55. Редактор произвольного выражения поля В результате список выбранных полей будет иметь следующий вид (рис. 5.56): Рис. 5.56. Выбранные поля На закладке Объединения/Псевдонимы укажем, что вычисляемое поле будет иметь псевдоним Доход (рис. 5.57). Рис. 5.57. Объединения/Псевдонимы На закладке Порядок укажем, что строки результата нужно упорядочивать по убыванию значения поля Доход. Нажмем OK и посмотрим, какой текст сформировал конструктор запроса (листинг 5.14). Листинг 5.14. Текст запроса ВЫБРАТЬ ПродажиОбороты.Клиент, ПродажиОбороты.ВыручкаОборот – ПродажиОбороты.СтоимостьОборот КАК Доход ИЗ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты УПОРЯДОЧИТЬ ПО Доход УБЫВ По сравнению с предыдущими отчетами текст запроса довольно прост. Единственным интересным местом, на которое следует обратить внимание, является поле Доход, являющееся результатом вычисления выражения (листинг 5.15). Листинг 5.15. Вычисляемое поле ПродажиОбороты.ВыручкаОборот – ПродажиОбороты.СтоимостьОборот КАК Доход Теперь добавим поле Доход в ресурсы схемы компоновки и перейдем на закладку Настройки для того, чтобы создать структуру отчета. В отличие от всех предыдущих отчетов, структура которых содержала группировки, в этот раз добавим в структуру отчета диаграмму (рис. 5.58). Рис. 5.58. Структура отчета В точки диаграммы добавим группировку по полю Клиент. Серии диаграммы оставим без изменений. Теперь перейдем на закладку Выбранные поля и выберем поле Доход для вывода в отчет. Структура отчета должна принять следующий вид (рис. 5.59): Рис. 5.59. Структура отчета и настройки диаграммы На закладке Другие настройки зададим заголовок отчета – Рейтинг клиентов, а также выберем тип диаграммы – Круговая объемная. Запустим 1С:Предприятие в режиме отладки и откроем отчет Рейтинг клиентов (рис. 5.60). Рис. 5.60. Круговая объемная диаграмма в отчете Обратите внимание, что при наведении курсора на сектор диаграммы появляется подсказка. Откроем настройки отчета и изменим тип диаграммы на Измерительная. Заново сформируем отчет (рис. 5.61). Рис. 5.61. Измерительная диаграмма в отчете На примере этого отчета мы продемонстрировали, как можно использовать различные виды диаграмм для визуализации данных отчета. Универсальный отчет На примере создания универсального отчета мы узнаем, как система компоновки данных может взаимодействовать со сводной таблицей. Создадим в конфигураторе новый объект конфигурации Отчет. Присвоим ему имя Универсальный. Откроем его основную схему компоновки данных и создадим новый набор данных – запрос. Вызовем конструктор запроса и выберем виртуальную таблицу регистра накопления Продажи.Обороты. Из этой таблицы выберем все поля (рис. 5.62). Рис. 5.62. Выбранные поля На закладке Группировка с помощью кнопок >> выберем все поля, доступные для группировки, а все ресурсы добавим в Суммируемые поля (рис. 5.63). Рис. 5.63. Поля группировки и ресурсы Нажмем OK и посмотрим на текст, сформированный конструктором запроса (листинг 5.16). Листинг 5.16. Текст запроса ВЫБРАТЬ ПродажиОбороты.Номенклатура, ПродажиОбороты.Клиент, ПродажиОбороты.Мастер, СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот, СУММА(ПродажиОбороты.ВыручкаОборот) КАК ВыручкаОборот, СУММА(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьОборот ИЗ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты СГРУППИРОВАТЬ ПО ПродажиОбороты.Клиент, ПродажиОбороты.Мастер, ПродажиОбороты.Номенклатура Закончим создание схемы компоновки данных тем, что на закладке конструктора схемы компоновки Ресурсы выберем все доступные ресурсы (нажмем >>). На этом работа со схемой компоновки данных завершена, закроем ее и вернемся к окну редактирования объекта конфигурации Отчет Универсальный. Перейдем на закладку Формы и создадим основную форму отчета, нажав на кнопку просмотра у табличного поля Основная форма отчета. Так как основная форма пока отсутствует, система вызовет конструктор форм. Согласимся с тем, что система предлагает по умолчанию, и сразу нажмем Готово. На экране откроется основная форма отчета. Как видите, система уже вставила за нас поле табличного документа и дала ему имя Результат (рис. 5.64). Рис.5.64. Редактирование формы отчета Мы собираемся вставить в это поле сводную таблицу. Но ячейки поля табличного документа Результат сейчас находятся в режиме Только просмотр. Для того чтобы вставить сводную таблицу, нужно снять этот режим, поэтому щелкнем на поле табличного документа и выполним команды главного меню Таблица Вид Только просмотр. Теперь мы можем редактировать табличное поле. Установим курсор в верхнюю левую ячейку поля табличного документа и выполним Таблица Встроенные таблицы Вставить сводную таблицу. Система добавит в табличное поле сводную таблицу и откроет окно полей сводной таблицы (рис. 5.65). Рис. 5.65. Сводная таблица Для того чтобы в сводную таблицу вывести данные, нам потребуется написать несколько строк в модуле формы. Откроем модуль формы отчета и добавим в текст переменную, которая нам понадобится (листинг 5.17). Листинг 5.17. Объявление переменной Перем ИсточникСводнойТаблицы; После этого создадим обработчик события формы отчета При открытии и добавим в него следующий текст (листинг 5.18): Листинг 5.18. Обработчик события формы отчета При открытии Процедура ПриОткрытии() ИсточникСводнойТаблицы = Новый ИсточникДанныхСводнойТаблицыКомпоновкиДанных; ИсточникСводнойТаблицы.УстановитьСхему(СхемаКомпоновкиДанных); ЭлементыФормы.Результат.ВстроенныеТаблицы.СводнаяТаблица1.ИсточникДанных = ИсточникСводнойТаблицы; ИсточникСводнойТаблицы.УстановитьНастройки(КомпоновщикНастроек.Настройки); КонецПроцедуры Этим текстом мы устанавливаем сводной таблице в качестве источника данных схему компоновки данных и устанавливаем ей настройки компоновщика настроек Запустим 1С:Предприятие в режиме отладки и откроем отчет Универсальный. На экране появится форма отчета и окно выбора полей сводной таблицы (рис. 5.66). Рис. 5.66. Отчет Универсальный Поместим значение ресурса ВыручкаОборот в данные, измерение Номенклатура – в строки, а измерение Мастер – в колонки. Отчет примет следующий вид (рис. 5.67): Рис. 5.67. Теперь в окне выбора полей сводной таблицы раскроем группу Номенклатура и добавим значение (Без иерархии) в строки, а измерение Клиент добавим в колонки. Отчет изменит свой вид (рис. 5.68). Рис. 5.68. Результат выполнения отчета Таким образом, используя данные схемы компоновки данных, мы предоставили пользователю альтернативную возможность самостоятельно формировать отчет по регистру ОказанныеУслуги. Отчет Универсальный2 На примере создания второго универсального отчета мы рассмотрим способы непосредственного управления настройками системы компоновки и возможность формирования макетов на основе вариантов стандартного оформления. Для более легкого понимания мы будем использовать практически тот же самый запрос по регистру накопления Продажи. Таким образом, можно сказать, что в этом отчете мы просто покажем другой вариант управления настройками системы компоновки. Создадим новый объект конфигурации Отчет с именем Универсальный2. Откроем его основную схему компоновки данных, создадим новый набор данных – запрос и запустим конструктор запроса. Выберем все поля из виртуальной таблицы регистра накопления Продажи.Обороты и нажмем OK. На закладке Ресурсы конструктора схемы компоновки данных нажмем >> и убедимся, что система подобрала три ресурса: ВыручкаОборот, КоличествоОборот и СтоимостьОборот. На закладке Настройки создадим новую группировку Детальные записи (не выбирая поле группировки). Теперь на закладке Формы окна редактирования отчета Универсальный2 с помощью конструктора создадим основную форму отчета и отредактируем ее. Растянем форму и расположим в ней две надписи с именами Поля и Порядок и с заголовками Поля: и Порядок: соответственно (рис. 5.69). Рис. 5.69. Редактирование формы отчета Результат выполнения отчета Под каждой надписью расположим табличное поле с именами ТабличноеПолеПоля и ТабличноеПолеПорядка, в обоих случаях не забудем установить флаг Вставить командную панель Это позволит нам добавить командные панели, источниками действий которых будут назначены созданные нами табличные поля (рис. 5.70). Рис. 5.70. Форма отчета Универсальный2 Теперь для табличного поля ТабличноеПолеПоля ОтчетОбъект.КомпоновщикНастроек.Настройки.Выбор (рис. 5.71). зададим источник данных как Рис. 5.71. Зададим источник данных для табличного поля Аналогично табличному полю ТабличноеПолеПорядок ОтчетОбъект.КомпоновщикНастроек.Настройки.Порядок. укажем источник данных Совершив описанные действия, мы связали элементы управления, расположенные в форме с настройками системы компоновки нашего отчета, – Выбор и Порядок. Выбор позволяет управлять списком полей, которые войдут в результат отчета, а Порядок задает порядок вывода строк результата. Командные панели понадобятся пользователю для настройки значений этих полей. Используя свойства командных панелей Автозаполнение и Источник действий, мы получили автоматическое формирование команд, основанное на типе данных, содержащихся в каждом из табличных полей. УЗНАЙ БОЛЬШЕ! О связи элементов управления и данных, можно прочитать в разделе Данные и элементы управления. Следует сказать, что в системе 1С:Предприятие 8 имеется небольшой набор уже готовых макетов оформления для использования системой компоновки данных. Они содержатся в объекте БиблиотекаМакетовОформленияКомпоновкиДанных. Поместим еще одну надпись с именем Оформление и заголовком Оформление, а под ним расположим поле выбора с именем ПолеВыбораОформление (рис. 5.72) без подписи. Рис. 5.72. Редактирование формы отчета В свойствах нашего поля выбора откроем окно Строки списка выбора и заполним его именами макетов из библиотеки макетов оформления компоновки данных (см. рис. 5.73). Рис. 5.73. Заполнение списка значений поля выбора Для того чтобы наше поле выбора изменяло применяемый макет оформления системы компоновки, создадим обработчик При изменении поля выбора (листинг 5.19). Листинг 5.19. Обработчик события поля выбора При изменении Процедура ПолеВыбораОформлениеПриИзменении(Элемент) ПараметрыВывода = КомпоновщикНастроек.Настройки.ПараметрыВывода; ПараметрМакетОформления = ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("МакетОформления")); ПараметрМакетОформления.Использование = Истина; ПараметрМакетОформления.Значение = ПолеВыбораОформление; КонецПроцедуры Этим текстом для параметра компоновки данных МакетОформления мы указываем имя макета, которым должен оформляться отчет, и устанавливаем признак использования макета оформления. Запустим 1С:Предприятие в режиме отладки и откроем отчет Универсальный2. В выбранные поля добавим следующие поля: Мастер; Номенклатура; Номенклатура.ВидНоменклатуры; ВыручкаОборот. Зададим порядок сортировки: Мастер по возрастанию; Номенклатура.ВидНоменклатуры по убыванию; Номенклатура по возрастанию. Выберем оформление, например Зеленый, и нажмем Сформировать. Результат будет выглядеть следующим образом (рис. 5.74): Рис. 5.74. Результат выполнения отчета Теперь изменим условия формирования отчета. Выберем поля Клиент, Номенклатура и ВыручкаОборот. Порядок сортировки будет по возрастанию значения поля Клиент, а вариант оформления – Море. Выполним отчет (рис. 5.75). Рис. 5.75. Результат выполнения отчета Таким образом, на примере этого отчета вы познакомились с возможностью задания условий для системы компоновки и одним из способов формирования макета отчета на основе выбора пользователя. Что нового мы узнали для чего предназначен объект встроенного языка Запрос для чего предназначена система компоновки данных для чего предназначена схема компоновки данных для чего предназначены настройки компоновки данных для чего предназначен объект встроенного языка КомпоновщикНастроек в чем отличие между реальными, виртуальными и ссылочными таблицами из каких частей состоит текст запроса, какие из них являются обязательными каковы основные синтаксические конструкции языка запросов что является источником данных запроса что такое псевдонимы в языке запросов что такое параметры запроса что такое параметры виртуальной таблицы что такое левое соединение как использовать конструктор запроса как выбрать данные в некотором периоде для отчета как упорядочить данные в отчете как использовать в отчете данные нескольких таблиц как использовать группировки в структуре отчета как получить последние значения регистра сведений как вывести в отчет иерархические данные как управлять выводом итогов по группировкам и общих итогов как создать отчет, содержащий диаграмму как использовать параметры в системе компоновки данных как дополнить данные отчета всеми датами в группировке по периоду как вывести данные в сводную таблицу как использовать варианты стандартного оформления отчетов