1с универсальная консоль отчетов
Отчеты на СКД в типовых решениях частенько сделаны очень сложно. Чтобы понять, почему они выдают какой-то результат, необходимо взять запросы наборов данных или схему компоновки данных целиком и "перебраться" с ними в консоли запросов или консоли отчетов СКД, указав значения всех параметров. Но беда в том, что готового запроса или схемы компоновки в конфигураторе нет, т.к. сложные отчеты собираются программно по кусочкам, а параметров много и к тому же часть параметров устанавливается функциями общих модулей, модулей менеджеров и т.п.
Я предлагаю набор функций, которые через режим отладки помогут быстро "перебраться" в консоли запросов или отчетов. Эти функции находятся в расширении в общем модуле ОтладкаСКД.
Подключаем расширение, перезапускаемся, появляется подсистема "Отладка СКД"
На примере демо-базы Бухгалтерии возьмем отчет "Задолженность покупателей по срокам долга". В этом отчете запрос набора данных собирается каждый раз в зависимости от количества интервалов, заданных в настройках, при этом значения параметров в запросе очень много.
Посмотрим наименования наборов данных в схеме компоновки данных:
-"ОсновнойНабор"(запрос);
- "ПросроченнаяЗадолженность" (таблица значений);
- "ДанныеПервичныхДокументов" (запрос).
I Шаги для перехода к отладке отчета в консоле запросов
- Определим, где ставить точку остановки, используя замер производительности.
- В указанной точке вызовем функцию для получения структуры запроса одного из набора данных с параметрами.
- Перейдём в консоль запросов и выполним запрос.
1. Определяем место точки остановки отладки в Конфигураторе
В конфигураторе в разделе "Отладка" подключаемся к серверному сеансу для отладки. Будем "ловить" место, где, в конечном итоге, выполняется отчет. Не забываем в разделе "Автоматическое подключение" подключится к фоновым заданиям, т. к. отчеты на СКД "любят" выполняться фоновыми заданиями.
Включаем "Замер производительности" и нажимаем "Сформировать" в отчете. Отключаем "Замер производительности", смотрим и ищем нужное место
В итоге видим, что реальное выполнение отчета происходит в общем модуле "Бухгалтерские отчеты" , переходим туда и ставим точку остановки именно там, как можно ближе к методу КомпоновщикаМакета.Выполнить, чтобы не пропустить какие-либо промежуточные процедуры и функции, которые могут изменить настройки.
2. Получаем запрос с установленными параметрами в виде XML
Для того, чтобы получить в итоге конечный запрос, необходимо иметь "Схему компоновки данных" и "Компоновщик настроек данных" (точнее Настройки компоновщика). Внимательно посмотрев текст модуля в месте точки остановки, видим эти переменные. Включаем Табло отладки и пишем:
ОтладкаСКД.ЗапросВСтрокуXML(ОтладкаСКД.ПолучитьЗапросНабора(СхемаКомпоновкиДанных,КомпоновщикНастроек,"ОсновнойНабор"))
Видим, что в 1-ой записи получили запрос набора данных "ОсновнойНабор" (тип "Запрос"), а во 2-ой тот же запрос набора данных "ОсновнойНабор" (тип "Запрос") в XML.
Копируем строку XML и запускаем консоль запросов
3. В "Консоле запросов" выполняем запрос
Вставляем скопированную строку XML в текст запроса (хотя это не совсем текст запроса, но это трюк консоли) и нажимаем в "Еще" "Заполнить из XML"
И о чудо ! Строка ХМL превратилась в текст запроса и в параметры с установленными значениями.
Если всё это делать "руками", то установка значений параметров займёт много времени с одной стороны, а с другой можно легко пропустить какое-либо значение в параметрах, например в списках, что приведёт к неверному (другому) результату запроса.
Запрос выполнился, всё работает, дальше уже разбираемся с запросом.
II Шаги для перехода отлаживать отчет в консоли отчетов СКД
- Определим, где ставить точку остановки, используя замер производительности.
- В указанной точке вызовем функцию для получения схемы компоновки в XML и настроек компоновщика в XML.
- Перейдём в консоль отчетов СКД и добавим там отчет, вариант отчета.
1.Определим, где ставить точку остановки, используя замер производительности
Этот шаг ничем не отличается от ранее описанного для работы с консолью запросов
2.Получение схемы компоновки данных и настроек компоновщика в XML
Поставив точки остановки и остановившись при выполнении отчета, пишем в "Табло отладки"
Получаем 2 строки XML:
- Схема компоновки данных
- Настройки компоновщика (вариант отчета)
Копируем эти строки в 2 файла. Создаём здесь в конфигураторе 2 текстовых файла и сохраняем например "СхемаСКД.txt" и "НастройкиСКД.txt"
3. Консоль отчетов СКД и добавим там отчет, вариант отчета.
Открывает стандартную консоль отчетов СКД с ИТС
Добавляем "Вариант отчета" и кнопку "Ещё-Загрузить настройки", выбираем файл ""НастройкиСКД.txt"
Всё готов отчет, все параметры и настройки заданы.
. Конкретно в этом отчете есть дополнительный набор в виде таблицы значений, поэтому отчет не выполнится. Но это уже нюансы этого отчета. Чуть ниже сделана небольшая доработка, чтобы можно было в консоли отчетов СКД работать и с внешними наборами данных (таблицами значений)
08.01.2019 Добавлена возможность в консоли отчетов СКД загружать данные внешних наборов данных, используемых в схеме СКД
Отчет не заработает, если ему не передать таблицу значений в качестве внешнего набора данных. Имя этого набора "Просроченная задолженность" (на скриншотах выше это можно увидеть). К сожалению в консоли отчетов СКД от 1С нет стандартной возможности передать эти внешние наборы, поэтому пришлось немного её доработать. Добавлена новая кнопка "Внешние наборы данных" (доработанная консоль в расширении).
Как это делаем по шагам:
1. Отладкой находим место, где эти таблицы внешних наборов собираются и передаются на выполнение.
В том же модуле БухгалтерскиеОтчетыВызовСервера, где мы нашли метод выполнения макета компоновки, чуть ниже находим строку, в которой передаются внешние наборы данных на выполнение процессору компоновки, ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, и переменную ВнешниеНаборыДанных, эта структура в которой содержатся таблицы для внешних наборов
2. Выгружаем эти таблицы в XML
С помощью функции ОтладкаСКД.ВнешниеНаборыДанныхВXML , конвертируем переменную ВнешниеНаборыДанных в XML. Сохраняем эту строку в текстовый файл, например ВнешниеНаборыСКД.txt
3. Загружаем внешние наборы данных в консоль , выполняем отчет.
Теперь возвращаемся в консоль отчетов СКД из расширения и вызываем пункт "Внешние наборы данных" и выбираем файл ВнешниеНаборыСКД.txt
Видно, что загрузился из файла один внешний набор ПросроченнаяЗадолженность (планирую также добавить редактор таблиц значений для работы с внешними набора данных).
Закрываем окно и нажимаем НАКОНЕЦ "Сформировать" и отчет формируется.
16.01.2019 Добавлена в расширение для отладки отчетов функция, которая позволяет во время отладки в Конфигураторе выгрузить отлаживаемый отчет во внешний отчет (в файл) со всеми настройками в момент точки остановки:
ОтладкаСКД.Клиент.СгенерироватьВнешнийОтчет(ПолныйПутьКОтчету = Неопределено, ДанныеСКД)
. Внимание: Данная функция работает только для сеанса "Толстый клиент"
Например, чтобы выгрузить отчет в файл внешнего отчета необходимо в отладке вычислить выражение:
Далее отчет можно запускать как отдельный внешний отчет.
ИТОГ: С помощью функций расширения "ОтладкаСКД" можно быстро начать отлаживать довольно сложные отчеты СКД в различных консолях или просто разобраться в ситуации прямо в отладке.
На текущий момент перечень функций в расширении:
Функция ПолучитьМакетаКД - Возвращает макет выполнения компоновки данных
Функция ПолучитьЗапросНабора - Возвращает запрос с текстом запроса и значениями параметров из компоновщика
Функция ПолучитьЗапросыНаборов - Возвращает структура запросов всех наборов данных с примененными настройками и значениям параметров компоновщика
Функция ПолучитьРезультатЗапросаНабора - Возвращает результат запроса набора данных с примененными настройками и параметрами компоновщика
Функция ПолучитьРезультатыЗапросовНаборов - Возвращает структуру результатов запросов всех наборов данных схемы компоновки данных с примененными настройками компоновщика
Функция ТабДокВXML - Возвращает результат выполнения СКД в табличный документ в XML, далее табличный документы можно получить обработкой "Табличный документ(Отладка СКД)", включенной в расширение
Функция ПолучитьТабДок - Возвращает результат выполнения СКД в табличный документ
Функция ПолучитьТЗ - Возвращает результат выполнения СКД в таблицу значений
Функция ПолучитьДЗ - Возвращает результат выполнения СКД в дерево значений
ВнешниеНаборыДанныхВXML - возвращает таблицы для внешних наборов данных в XML
СгенерироватьВнешнийОтчет(ПолныйПутьКОтчету, ДанныеСКД) - выгружает во внешний отчет отлаживаемый отчет со всеми настройками.
включены вспомогательные функции из БСП также (в БСП они в общем модуле ОбщегоНазначения) для конфигураций без БСП:
Функция ЗначениеВСтрокуXML
Функция ЗначениеИзСтрокиXML
Функция ЗапросВСтрокуXML
Ещё чуть-чуть доработана "Консоль запросов", добавлено при создании параметров поддержка типов "Массив", "Список значений", "Стандартный период". Без этого может выдавать ошибку по кнопку "Заполнить из XML" при определенных параметрах компоновщика.
also Разное Отзывов (2) В закладки
- Берем консоль отчетов;
- В консоли нажимаем “Добавить СКД” и заходим в конструктор схемы компоновки данных:
Берем консоль отчетов; В консоли нажимаем “Добавить СКД” и заходим в конструктор схемы компоновки данных: Редактируем схему и формируем отчет в консоли: После тестирования отчета в консоли, нажимаем Инструменты–>Экспорт отчетов во внешний отчет; Далее выбираем один из шаблонов, например ШаблонТиповогоОтчета, и нажимаем Экспорт: Выбираем файл и сохраняем в него наш отчет. Вуаля! Отчет на СКД готов… И никакого конфигуратора.
IronDemon Разработки Ваш отзыв В закладки
О разработке
Внешний отчет “Консоль отчетов” основан на системе компоновки данных и использует большинство ее возможностей (c) 1С.
В начале освоения системы компоновки данных не понятно, во что превращается запрос написанный в ней. Особенно это касается параметров. Включив “Выводить текст запроса” мы увидим привычный запрос.
Возможность увидеть время выполнение запроса + вывод в табличный документ положительно влияет на качество кода
also Разработки Отзывов (22) В закладки
О разработке
На данный момент, пожалуй лучшая консоль СКД и не только. Огромнейший функционал. Автором проделана просто невероятная работа! Позволяет в режиме предприятия создать отчет на СКД и экспортировать его во внешний отчет с выбором шаблона.
В предыдущей статье мы рассмотрели, как использовать "Консоль отчетов" для получения отчета без исправления алгоритмов в конфигурации. Надо отметить, что с помощью "консоли отчетов" можно как выводить "откорректированные" отчеты, так и расширять набор отчетов новыми отчетами. Очень часто клиенты просят сделать какой-нибудь отчет, и всегда возникает вопрос как его включить в систему. Если его включать через конфигуратор, то необходимо всегда помнить о будущих обновлениях системы и возможности "случайно затереть" нужный отчет. Поэтому при заказе программистам отчет, посоветуйтесь с ним предварительно. Возможно, лучше его сразу включить в консоль запросов. Тогда проблема обновления конфигурации не будет стоять так остро. Конечно, если фирма "1С" поменяет структуру хранения информации в базе данных, то и отчет из консоли отчетов может перестать работать, но опыт работы показывает, что структура базы данных меняется уже не часто.
Давайте добавим пару простеньких отчетов в нашу консоль отчетов.
Допустим, нам нужен под рукой отчет, в котором бы отражалась информация о сотрудниках, их днях рождения, датах приема и увольнения, тарифных окладах, тарифных окладах со всеми надбавками, а также последние подразделения и должности сотрудников.
Откроем нашу Консоль отчетов.
И добавим новый отчет. Назовем его "Даты рождения/приема/увольнения". Обращаем внимание, что в программе уже есть отчеты, которые могут предоставить такие данные. Мы делаем это, чтобы показать саму ИДЕЮ, что систему можно расширять отчетами, не внося изменений в конфигуратор.
После добавления отчета, откроется форма проектирования отчета.
Мы уже подготовили вспомогательный файл алгоритмов формирования отчета. Вы можете его загрузить с нашего сайта "даты приема-увольнения.xml". Запомните, куда вы его сохранили и теперь нажмите пиктограмму загрузки файла алгоритмов отчета внизу формы конструктора.
После загрузки файла достаточно нажать кнопку "ОК" и наш отчет готов к работе.
Нажмем "Сформировать" и посмотрим, что получилось
Очень хорошо. Теперь давайте поэкспериментируем с отчетом
Щелкнем мышкой на "ФИО, дата рождения, дата приема.." и справа щелкнем по закладке "Поля группировки". Либо дважды щелкнем на "ФИО, Подразделение, должность". Здесь отмечены все поля, которые выведены в нашем отчете. Снимем галочки со всех полей, кроме "ФИО, подразделение, должность" и нажмем "Сформировать".
Мы получили список последних подразделений и должностей наших сотрудников. Но здесь присутствуют все сотрудники и работающие и уволенные. Давайте оставим только работающих сотрудников.
Для этого воспользуемся закладкой "Отбор" у отчета. Т.е. сначала щелкнем по "Отчет", а потом выберем закладку "Отбор".
Работающие сотрудники - это сотрудники у которых дата увольнения не заполнена. Поставим галочку в отборе. Давайте еще и только женщин отберем. В строчке "Пол"-"Равно" выберем "женский" и нажмем "Сформировать".
Вроде все правильно, но давайте для контроля вернем в отчет колонку "Дата увольнения".
Щелкаем на "ФИО, Подразделение, должность" и на закладку "Поля группировки". Ставим галочку на "Дата увольнения". Либо дважды щелкнем на "ФИО, Подразделение, должность".
И нажимаем "Сформировать".
И действительно, к нас в списке работающие женщины.
Давайте теперь посмотрим кто из женщин уволился в 2014 году.
Здесь только одна трудность - как указать, что дата увольнения больше 01/01/2014 и меньше 01/01/2015.
Мы уже знаем, чтобы уточнить отборы, надо щелкнуть на "Отчет" и на закладку "Отбор"
Теперь в "Дата увольнения" выберем "Больше или равно" и установим 01/00/2014
Теперь нажмем мышкой на "Дата увольнения" в табличке "Доступные поля" и ПЕРЕТАЩИМ ее в табличку отборов.
Осталось у перетащенной даты увольнения установить Меньше или равно и дату 01/01/2015. Жмем "Сформировать" и наслаждаемся результатом.
Таким образом, манипулируя выводимыми данными и значениями отборов, можно получить различную полезную информацию.
Давайте закрепим результат. Добавим еще один отчет в нашу консоль.
Добавим новый отчет и назовем его "Лицевые счета сотрудников"
Скачиваем файл алгоритмов отчета "Лицевые счета сотрудников.xml" и загружаем его в отчет. Сохраняем отчет.
Обратите внимание, что в отборах заранее проставлено "Дата увольнения" - "Не заполнено", т.е. отчет выведен для Работающих на данный момент сотрудников.
Сразу стоит обратить внимание, что в отборах присутствует поле "Банк". Значит, можно отобрать информацию по конкретному банку. Либо, если указать для Банка в качестве отбора "Не заполнено", то можно вывести информацию о сотрудниках, для которых не заполнен банк в лицевых счетах.
Если мы уберем галочки с полей "Дата приема" и "Дата увольнения", то получим тот же отчет, но в котором будет информация только о физлице, банке и лицевом счете.
Пробуйте, экспериментируйте. Желаем хорошей работы.
С уважением, фирма "Афалина"
P.s. Все отчеты, описанные в предыдущей и текущей статье можно загрузить в консоль отчетов, если скачать файл по ссылке с нашего сайта и загрузить его в консоль отчетов (в консоли отчетов необходимо выбрать «Файл»-«Открыть» и выбрать файл описания отчетов)
Доработанная стандартная "Консоль отчетов" с возможностью обработки объектов выборки. Результаты выборки СКД (системы компоновки данных) выгружаются в дерево объектов под именем переменной "ДеревоОбъектов" и доступны для вызываемого обработчика или нескольких обработчиков. Все коды обработок и настройки храниться в файле *.dcf, в том же файле в котором и храниться сама настройка СКД
ОБНОВЛЕНИЯ:
Новое в версии 1.0:
1. Усовершенствован анализ сделанных обработкой изменений, теперь в отчет выводятся:
в) Регистры сведений
г) Регистры накопления
д) Регистры рассчетов
2. Добавлены настройки анализа. Есть 3 варианта анализа:
а) Принимать решение о принятии сделанных обработкой изменений
б) Сразу принимать изменения и выводить отчет о анализе
в) только проанализировать действия обработки (удобно при тестировании обработки. )
3. Появилась возможность отключить типовой контроль при записи объектов.
4. Добавлены алгоритмы. Процедуры используемые при выполнении обработки теперь можно выносить в отдельный алгоритм. Так же отработанные алгоритмы легко переносить в алгоритмы конфигурации "Конвертация данных 2.0"
5. В анализ добавлена колонка "Уникальный идентификатор", что дает возможность отката!
6. Исправлены ошибки.
Новое без версии:
1. Добавлены параметры(любого типа), которые можно использовать в обработчиках. (получить параметр можно функцией ПолучитьПараметр())
2. Добавлен анализ сделанных обработкой изменений
ОПИСАНИЕ:
Изменена стандартная консоль отчетов. Довольно таки свежая, по этому требует релиз предприятия не ниже 8.1.11 (на сколько я помню)
В обработке добавлено 3 блока кода (в процедуру ПриОткрытии, описание переменных и блок с нужными процедурами) и форма (вызывается через "Обработки объектов отчета" > "Настройка обработки объектов" ) с помощью которой можно создавать/редактировать/удалять обработки (можно и несколько обработок написать на одну компоновку данных), выполнение которых потом можно вызвать сразу из меню "Обработки объектов отчета".
На форме настройки обработок отчета есть поле с деревом отчета в котором мы выбираем для какого отчета мы настраиваем обработки, "доступные поля": это поля доступные для использования в обработке. И панель с закладками: где закладки это и есть обработки и наконец в текстовом поле на закладке сам текст обработки
Типовая форма не изменена изменен только ее модуль.
ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ:
ПЛЮСЫ:
+ Обновление консоли на новый типовой релиз возможно двумя кликами мыши.
+ Для выборки используется вся мощь механизма СКД (системы компоновки данных), для тех кто не изучил еще, лично мой совет изучать. и отчеты будет легче писать
+ Результат выборки можно посмотреть перед применением обработки.
+ Обработки можно собирать в группы, например обработки для ЗУП которые хранить в одном файле .dcf, и Вы уже не порастеряете их, лично я терял постоянно. рассеяный я. а забыть где лежит весь сборник которым ты периодически пользуешься довольно таки сложно.
+ Код абсолютно открыт и доступен всем!
ПО РАЗВИТИЮ ПРОЕКТА:
Собираюсь доработать:
0. Куча мелких и не очень мелких исправлений и доработок.
1. Привинтить контекстные подсказки.
2. Сделать возможность перетаскивания из окна доступные поля.
3. Привинтить возможность сохранения/использования шаблонов кода например тот же код по перебору значений дерева
можно поместить в шаблон
3.1 Выгрузка шаблонов во внешний файл (например xml)
3.1.1 Создание единой базы шаблонов
4. Создание единых базы обработок для данной консоли, например:
5. Создание создания расписания запуска обработок как задач.
Для щедрых людей которым помогла обработка:
Яндекс деньги № 41001241519720 , не откажусь :)
Данная статья направлена больше не для программистов, а для конечных пользователей программ 1С. Иногда возникают ситуации, когда необходимо получить какой-либо отчет, которого нет в конфигурации. Не всегда имеется возможность воспользоваться услугами программиста, в этом случае в любой типовой конфигурации есть отчет «Косоль отчетов». Единственный минус данной возможности - не каждый пользователь сможет без затруднений пользоваться данным отчетом, необходим определенный уровень знаний и навыков работы, а также представление о структуре конфигурации. С помощью данного отчета возможно создавать самостоятельно без запуска Конфигуратора (в пользовательском режиме) отчеты любой сложности и с любым оформлением. Таким образом, появляется возможность без измения прикладного решения и без привлечения разработчиков создавать новые отчеты. Внешний вид консоли приведен на Рис. 1.
Последняя версия консоли отчетов в типовых прикладных решениях базируется на системе компоновки данных. Принцип данного отчета - создание новых отчетов с нуля. Основа для создания любого отчета – это запрос к базе данных, с помощью которого выполняется выборка информации по определенным условиям, как правило в сочетании с протейшей обработкой получаемых данных: сгруппировать, отсортировать, вычислить значения и т.д. Знание языка запросов в данном случае необязательно, поскольку текст запроса от простого до самого сложного возможно составить с помощью конструктора запросов. Конструктор запросов конструирует запрос исключительно визуальными средствами. С помощью кнопок "Далее>" и "
Для того чтобы приступить к созданию запроса не требуется глубоких знаний конфигурирования, достаточно знать структуру регистров, в которых хранится требуемая информация. Двигаясь по закладкам констуртора запросов задаются таблицы источники данных, группировки, условия, псевдонимы для полей, упорядочивание. После того как запрос готов необходимо настроить внешний вид отчета, выбрать тип отчета, оформление, назначить параметры запроса. Вариант вывода отчета в виде списка представлен на Рис. 3.
Таким образом, после освоения консоли отчетов пользователь обладает безграничными возможностями в получении любой информации в любых разрезах, он независим от разработчика, вся работа производится в пользовательском режиме, а следовательно экономится время и средства, а также ускоряется принятие управленческих решений.
Читайте также: