Вложенный отчет 1с скд
Приветствую, мои маленькие любители длинных запросов … и отчетов 1C на СКД.
Сегодня мы на готовом примере рассмотрим следующую задачу: использовать несколько схем данных в одном отчете СКД.
Стоить заметить, что данная реализация не является единственно возможной и не претендует на «истину в последней инстанции». Выбор конкретного способа определяется нюансами конкретной задачи.
Синтетический пример будет реализован в демо-конфигурации Управление торговлей, редакция 11.
- Для начала создадим внешний отчет и добавим его реквизит ИмяМакета, тип Строка. В данном реквизите мы будем хранить имя текущего активного макета. Оно нам потребуется при формировании отчета.
- Добавим форму отчета. Она необходима для выбора активного макета. Данную форму можно (и нужно) скопировать из состава БСП, ОбщиеФормы — ФормаОтчета. Так мы получим все возможности типовых отчетов СКД с минимальным затратами (хотя и потребуются некоторые доработки), но автоматически генерируемая форма также подойдет.
- Добавим 2 макета, тип СхемаКомпоновкиДанных.
Первый макет СхемаПроизводственныйКалендарь, куда выберем данные из регистра ДанныеПроизводственногоКалендаря с отбором по параметру &Дата.
Второй макет СхемаФизЛица, куда выберем данные из справочника ФизическиеЛица с отбором по полу
Как видим, ни параметры, ни поля, ни данные в этих макетах не совпадают. Укажем использование обоих параметров «Всегда» и добавим их для наглядности в пользовательские настройки.
Стоит заметить, что мы не указываем основную схему в отчете.
Заготовка отчета готова. Теперь перейдем непосредственно к коду выбора, смены и формирования макета
Для начала необходимо в процедуре формы ПриСозданииНаСервере нарисовать кнопку, заполнить список макетов и выбрать один из макетов в качестве «начального».
Вот так это выглядит на форме:
Затем пропишем обработчик для команды «ВыбратьМакет».
Думаю, из построчного комментария к листингу кода все предельно понятно. Самый интересный момент, это «подмена» пользовательских настроек настройками по умолчанию из схемы. Для этого используется объект ИсточникДоступныхНастроекКомпоновкиДанных. В результате инициализации компоновщика настроек будут заменены все пользовательские настройки, а именно отборы, группировки, выбранные поля и т.д.
Как видим, пользовательские отборы при смене макета так же изменились.
Остается лишь подменить стандартную процедуру формирования отчета. Для этого открываем модуль объекта и формируем СКД программно в процедуре ПриКомпоновкеРезультата.
Таким образом, мы получили два несвязанных макета СКД в одном внешнем отчете, между которыми пользователь может произвольно переключаться.
Приветствую, коллеги! В этой статье поговорим о вложенных схемах в СКД. Вложенные схемы удобно использовать, когда из одной выборки нужно передать значения в другую выборку.
Другими словами, у нас есть одна выборка, внутри которой также происходит формирование выборки, передавая в нее из первой нужные значения параметров.
Отработаем следующий кейс: в демонстрационной базе ERP необходимо получить отчёт, который собирает сводную выручку по менеджерам, а затем выводится информация о начислении зарплаты менеджеру за этот период.
Рис. 1 Сводная выручка менеджеров
2. Формирование выборки по регистру
Для реализации поставленной задачи нам нужно получить выборку по оборотам регистра накопления «ВыручкаИСебестоимостьПродаж», а внутри нее произвести формирование выборки по регистру «ЗарплатаКВыплате» с отбором по периоду и сотруднику из «верхней» выборки.
Сначала сформируем простой отчет по выручке, сгруппированный по ответственным менеджерам. В документах продажи для поля «Менеджер» используется пользователь базы, чтобы менеджера можно было связать с зарплатным регистром. Дополнительно выведем физическое лицо, соответствующее данному пользователю.
Рис. 2 Простой отчет по выручке
В настройках СКД делаем группировку именно по физическому лицу, добавим заголовки в поля группировки, включим параметры в пользовательские настройки; макет оформления – «Античный».
Рис. 3 Настройки СКД
Сохраним, сформируем отчет по выручке, проверим результат.
Отчет выглядит так.
Рис. 4 Отчет по выручке после нужных настроек СКД
Половина пути пройдена, произошло формирование выборки по выручке за 2016 год в разрезе ответственных менеджеров. Данный период я намеренно выбрал, чтобы проще было связать выручку с существующими начислениями зарплаты. В демонстрационной базе начисления проведены только в 2016 году. Теперь осталось получить эти начисления во вложенной схеме и связать с выборкой по выручке.
Переходим на закладку «Вложенные схемы», создаем новую, проваливаемся внутрь поля «Схема».
Рис. 5 Закладка Вложенные схемы
Видим стандартный конструктор схемы компоновки данных, создаем новый простой запрос.
Рис. 6 Конструктор схемы компоновки данных
Настройки в системе компоновки данных можно сделать мастером, установим заголовок полей, если требуется, для красоты добавим макет «Античный», нажимаем «Ок».
Рис. 7 Настройки системы компоновки данных с помощью мастера
Теперь мы получили выборку по Зарплате, но выборка сейчас по всему регистру, за весь период ведения учета и по всем сотрудникам, осталось наложить отборы на вложенный запрос. Особенность в том, что отборы на вложенный запрос в 1С накладываются в верхнем запросе в поле «Настройки», проваливаемся туда.
Рис. 8 Отборы на вложенный запрос 1С
Затираем произвольную дату, прописываем тип «Поле компоновки», выбираем поля владельца (это как раз верхняя выборка), в параметрах находим «Начало периода». Действуйте внимательно, не перепутайте с параметрами самого вложенного запроса в 1С, они там рядышком и можно легко промахнуться.
Рис. 9 Поле компоновки в системе компоновки данных в 1С
Аналогично задаем «Конец периода» в системе компоновки данных в 1С, в итоге должно получиться вот так.
Рис. 10 Заданный Конец периода в системе компоновки данных
Добавляем отбор. Напоминаю, нам нужен отбор по сотруднику из результата верхнего запроса.
Добавляем отбор, в левой части выбираем физическое лицо, в правой части затираем тип, выбираем тип «Поле компоновки» для данных, там находим поля верхней схемы (владельца) – «МенеждерФизическоеЛицо».
Рис. 11 Поле компоновки данных
Готово, настройка должна выглядеть теперь вот так, нажимаем «ОК».
Рис. 12 Результат настройки СКД
3. Вложенный отчет
Переходим в настройку отчета, кликаем на группировку по менеджеру и добавляем вложенный отчет.
Рис. 13 Добавление вложенного отчета
Рис. 14 Результат добавления вложенного отчета
Если Вы делали какие-либо настройки во вложенной схеме, они сразу перенесутся сюда. Мы только сформировали детальные записи и добавили макет, поэтому просто сохраним отчет и посмотрим результат:
Рис. 15 Перенесенные настройки вложенных схем
Как видите, требуемую информацию отчет выводит, проверьте данные документов, параметры и отборы. Осталось привести отчет в более читаемый вид. Например, выровнять ширину полей, уменьшить шрифт, это можно сделать на закладке «Условное оформление». Также можно отключить отображение параметров и отборов, они засоряют отчет и пользователю не нужны, сделать это можно на закладке «Другие настройки».
Требуемая печатная форма сформирована.
Рис. 16 Печатная форма вложенного отчета
Специалист компании «Кодерлайн»
Вас могут заинтересовать следующие статьи:
94 [PROP_CODE] => TAGS2 [TITLE] => Вас могут заинтересовать следующие семинары: ) --> 95 [PROP_CODE] => TAGS [TITLE] => Вас могут заинтересовать следующие вебинары: ) -->
Вас могут заинтересовать следующие вебинары:
У многих специалистов по внедрению и разработчиков всегда с собой есть шаблон отчета для СКД, на базе которого можно быстро разработать новый отчет. Ну а если нет, то можно взять отчет на СКД из текущей конфигурации и на его базе сделать новый.
Но если оказалось, что нужной формы для СКД под рукой все-таки нет, то как можно быстро набросать форму отчета? Все достаточно просто.
1) Добавляем управляемую форму отчета.
2) В ней добавляем три реквизита: «ДанныеРасшифровки» (строка), «НаименованиеВарианта», Результат (Табличный документ). «ДанныеРасшифровки» добавлять не обязательно, если не планируете делать расшифровку в отчете. Имена реквизитов могут отличаться.
3) Потом в свойствах формы отчета привязываете реквизиты формы к свойствам формы (как показано на рисунке). Это нужно сделать обязательно, иначе отчет по умолчанию работать не станет.
4) Выводим реквизиты отчета на форму:
Наименование варианта СКД можно вывести как надпись, чтобы было понятно, с каким вариантом настроек работает пользователь. Если предполагается использовать только один вариант, то наименование можно и не выводить.
Несколько важных моментов в настройке формы:
1) В настройку лучше вывести «Пользовательские Настройки» компоновщика настроек. Если вкратце, пользовательские настройки отвечают за «быстрые настройки» отчета. В эти настойки попадают все настройки, у которых установлена галка «Включать в пользовательские настройки»:
Пользовательские настройки являются приоритетными и перекрывают другие настройки компоновщика.
Такой вариант работы с настройками значительно удобнее, чем каждый раз изменять настройки варианта.
2) Для того, чтобы вывести команды формы отчета, нужно добавить группу с видом «Командная панель» и источником команд указать текущую форму отчета.
Тогда в форме появятся нужные команды. Можно настроить эту группу по необходимости, например, добавить другие команды по работе с отчетом.
3) Если не указать реквизит формы «Данные расшифровки», то расшифровка отчета – ни штатная, ни программная работать не будет.
В итоге простая универсальная форма отчета СКД в 1С готова. Добавляем в отчет схему компоновки данных, настраиваем основной вариант отчета СКД и работаем:
Можно, конечно, еще произвести более детальные настройки формы СКД, например, настроить вариант масштаба формы отчета и прочее. Здесь уже все зависит от потребностей пользователей и располагаемого времени.
Кирилл Карцев,
руководитель отдела внедрения ООО “Кодерлайн”
Вас могут заинтересовать следующие статьи:
94 [PROP_CODE] => TAGS2 [TITLE] => Вас могут заинтересовать следующие семинары: ) --> 95 [PROP_CODE] => TAGS [TITLE] => Вас могут заинтересовать следующие вебинары: ) -->
Вас могут заинтересовать следующие вебинары:
Задача состояла в том, чтобы создать отчет, который показывал бы оплаты по заказу покупателя. Деятельность компании подразумевает что оплаты по заказу могут производится частями. Такой отчет:
Микрозадачи, которые нужно было решить по ходу выполнения:
- объединение данных из двух запросов
- связь запросов по ключевому полю
- установка стандартного периода в отчете
- собственная шапка заголовка в отчете
- вычисляемые поля в отчете
ЗАПРОС
Первое что нужно проделать - выборку данных. Для этого создаем в СКД обычный набор данных, отбираем Заказ покупателя (основной запрос) и Платежное поручение входящее (вложенный запрос). Во вложенном запросе обязательно должно быть поле со ссылкой на сделку, по которой проходит платеж. В итоге должна получится такая выборка данных:
СВЯЗЬ ТАБЛИЦ ЗАПРОСА
Во вложенном и в основном запросе необходимо установить связь по полю - заказ покупателя. Нужно применить Левое соединение к заказу, чтобы заказы в отчете показывались все, а оплаты в зависимости от наличия.
ПЕРИОД В ОТЧЕТЕ
Для реализации отбора документов за период в конструктор запроса нужно добавить условие отбора с полем Дата и критерием Между.
На вкладке Параметры конструктора СКД нужно добавить вручную новое поле с названием "Период" с типом Стандартный период. Стандартный период будет использоваться при настройке отчета. Начальную и Конечную дату передаем как параметр в стандартный период с помощью &Период.ДатаНачала / &Период.ДатаОкончания. Отключаем из пользовательской доступности параметры ДатаНачала, ДатаОкончания.
СВОЯ ШАПКА ОТЧЕТА
Бывает так, что при разработке отчета используется слишком много полей в группировке, которые все отображаются в шапке. Это не очень удобно с точки зрения пользования. К тому же часто пользователи хотят видеть в отчете название колонок со знакомыми и понятными им названиями. Решается эта задача так.
1. На вкладке Настройки конструктора СКД назначаете имя для верхней группировки с помощью меню Установить имя.
2. На вкладке Макеты добавляете Добавить Макет заголовка группировки. Выбираете диапазон применения как в Excel и пропишите на макете свои названия колонок.
ВЫЧИСЛЯЕМЫЕ ПОЛЯ
Для математических вычислений, в нашем случае разница между суммой заказа и суммой оплаты, мы использовали механизм вычисляемые поля. На соответствующей вкладке СКД создаете новое поле с произвольным названием, а в поле Выражение прописываете формулу СуммаДокумента - СуммаДокумента1. Не забываем добавить вычисляемое поле в Ресурсы отчета, как и другие суммы, чтобы данные выводились в отчет.
СКРИНШОТ ШАБЛОНА КОДА ОТЧЕТА
ИТОГОВЫЙ КОД ОТЧЕТА
СГРУППИРОВАТЬ ПО
ЗаказПокупателя.Ссылка,
ЗаказПокупателя.Дата,
ЗаказПокупателя.Контрагент,
ЗаказПокупателя.СуммаДокумента,
ВложенныйЗапрос.Ссылка.Проведен
Схема компоновки данных представляет собой большой конструктор, состоящий из наборов данных, вычисляемых полей, описания итоговых полей (ресурсов), макетов, вариантов настроек и т.д. Схему компоновки достаточно удобно создавать в конфигураторе при помощи конструктора схемы компоновки.
Но на практике часто встречаются задачи, когда схему компоновки нужно программно создать с нуля или доработать существующую схему при помощи кода на встроенном языке, настроить вариант отчета – добавить отбор, установить условное оформление, добавить группировку и т.д. Такие задачи решаются на внедрениях при адаптации типовых конфигураций фирмы “1С” под требования конкретного заказчика.
Задача действительно очень актуальная, участники Мастер-группы по СКД задают много вопросов на эту тему :)
Также традиционно много вопросов возникает при программной работе с пользовательскими настройками отчетов:
- Почему отличаются значения параметра в настройках компоновщика и в пользовательских настройках? Которое из этих значений используется для формирования отчета?
- Как связываются между собой настройки компоновщика и пользовательские настройки?
- Как установить значение отбора или параметра, если они вынесены в пользовательские настройки?
- И многие другие…
Поэтому мы опубликовали серию видеоуроков, в которых рассказывается, как работать со схемой компоновки программно.
Общая длительность всех видеоуроков – 1 час 5 минут.
Для того, чтобы Вам было проще ориентироваться в материале, мы указали тайминг наиболее важных моментов в видео.
Видео 1 – Программное создание варианта отчета
00:37 – В каком обработчике можно расположить код для создания настроек компоновки
01:00 – Где в Синтакс-помощнике можно “подсмотреть” свойства, которые потребуются при написании кода
01:58 – Как настроить группировки отчета
02:28 – Какое свойство позволяет создавать вложенные группировки
03:11 – Как включить/выключить отдельные элементы настроек.
Видео 2 – Программное создание группировки
00:22 – Как создать структуру отчета
02:00 – Как указать поля, по которым выполняется группировка
04:10 – Как настроить выбранные поля
06:30 – Как создать автополе.
Видео 3 – Программное создание вложенной группировки
00:22 – Как создать подчиненную группировку
02:05 – Почему в отчете группировки могут выводиться несколько раз
02:40 – Как проверить наличие группировок в структуре отчета.
Видео 4 – Программное добавление отбора
00:18 – Где в Синтакс-помощнике найти типы данных, необходимые для создания отборов
00:55 – Какие свойства объекта типа ЭлементОтбораКомпоновкиДанных нужно использовать для создания отбора
01:20 – Как создать отбор при помощи программного кода.
Видео 5 – Программная установка сортировки
00:25– Где в Синтакс-помощнике найти типы данных, необходимые для включения сортировки
00:50 – Какие свойства объекта типа ЭлементПорядкаКомпоновкиДанных нужно использовать для включения сортировки
01:00 – Как установить сортировку при помощи программного кода.
Видео 6 – Программное добавление условного оформления
00:25 – Где в Синтакс-помощнике найти типы данных, необходимые для работы с условным оформлением
00:33 – Какие свойства объекта типа ЭлементУсловногоОформленияКомпоновкиДанных нужно использовать
02:08 – Как добавить условное оформление при помощи программного кода
02:31 – Как задать перечень полей, к которым будет применяться условное оформление
03:34 – Как отобрать оформляемые данные
04:15 – Как при помощи программного кода описать применяемое оформление.
Видео 7 – Программная работа с пользовательскими настройками
01:01 – Как программно установить значение параметра
02:00 – Почему значения параметров, выводимые на форму отчета, не совпадают со значениями в самом отчете
04:25 – Что делает метод ПолучитьНастройки
05:10 – Как нужно работать с пользовательскими настройками
06:17 – Для чего нужно свойство ИдентификаторПользовательскойНастройки
07:10 – Где в типовой конфигурации УТ 11 можно найти пример работы с пользовательскими настройками.
Видео 8 – Особенности использования метода ПолучитьНастройки
00:58 – Почему отличаются значения параметра в настройках компоновщика и в пользовательских настройках
01:23 – Как связываются между собой настройки компоновщика и пользовательские настройки
03:06 – Как работает метод ПолучитьНастройки и значение какого типа он возвращает
Видео 9 – Программное создание отборов в пользовательских настройках
00:34 – Чем отличается отбор в настройках компоновщика и отбор в пользовательских настройках
02:34 – Как используется свойство ИдентификаторПользовательскойНастройки
03:08 – Какой алгоритм должен использоваться для установки значения отбора в пользовательских настройках
03:42 – Как реализовать процедуру для установки значения отбора в пользовательских настройках.
Видео 10 – Программное создание схемы компоновки
00:40 – Как при компоновке отчета программно создать схему, по которой будет формироваться отчет
02:15 – Какой алгоритм должен использоваться для программного создания с нуля схемы компоновки
02:50 – Как программно создать источник данных схемы компоновки
04:00 – Как программно добавить в схему набор данных – объект
06:25 – Как программно добавить поля набора данных.
Хотите научиться грамотно создавать отчеты на СКД и дорабатывать отчеты в типовых конфигурациях?
Чтобы подробнее изучить возможности системы компоновки данных и уверенно применять механизм на практике, рекомендуем пройти курс Профессиональная разработка отчетов в 1С 8.3 на Системе Компоновки Данных (СКД)
Читайте также: