Универсальный отчет + свой запрос = КАК?
По теме из базы знаний
- Как быстро разработать красивый отчет, используя Универсальный отчет в прикладных решениях фирмы 1С
- Анализ деятельности компании. Универсальный отчет для обычного приложения (УТ10.3, КА1, УПП и пр.)
- Учебный пример программного формирования схемы компоновки данных: Универсальный отчет по регистрам накопления
- Универсальный отчет как инструмент создания новых отчетов на основании данных системы 1С
- Работа с вариантами Универсального отчета
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
1. Про универсальный отчет
http://infostart.ru/public/84458/
http://infostart.ru/public/84519/
http://infostart.ru/public/84642/
http://infostart.ru/public/69707/ - пример динамического формирования параметров отчета
2. Потому, что универсальный отчет работает на построителе отчетов, а не на СКД
1. Про универсальный отчет
2. Потому, что универсальный отчет работает на построителе отчетов, а не на СКД
(1)
На самом деле, все не так уж и сложно. Просто берете какой-нибудь стандартный отчет, работающий на универсальном отчете (например, "Валовая Прибыль" - в модуле отчета в процедуре УстановитьНачальныеНастройки() должен быть запрос). Сохраняете его в файл. Открываете, ищите в модуле отчета процедуру УстановитьНачальныеНастройки(), там в комментариях все достаточно подробно описано. Ну и переделываете потихоньку эту процедуру по аналогии. Посмотрите, как написан запрос, свой запрос делаете по аналогии, не забывая про комментарии а-ля
и поля-отборы-условия-сортировку-итоги построителя.
Ну и так далее можно просто сверху вниз идти и переделывать эту процедуру по аналогии с тем, чтов ней уже есть. В большинстве случаев достаточно только правильно написать запрос, указать, каким объектам будут присоединяться свойства, создать список показателей и текстового представления полей. Ну и конечно же переименовать сам отчет.
Есть еще важная штуковина, связанная с выбором периода в отчете
Можно также посмотреть отчеты, которые создаются без использования запроса, например "Продажи" для сравнения. Пардон заранее - описал для УТ, но чую, что в других конфигурациях все то же самое. Вообще, можете написать, что за отчет нужен, будем коллективно накручивать рейтинг, и всем хорощо, все довольны.
(3)
Я так понимаю, разрабы поленились при переходе с 8.0 на 8.1 и так оно все и сейчас торчит (врать не буду, в некоторых новых конфигурациях оно используется). Работает же нормально ну и влезать тогда нечего. А ломать/перепахивать по ходу слишком много пришлось бы всякого разного. Как-то так.
На самом деле, все не так уж и сложно. Просто берете какой-нибудь стандартный отчет, работающий на универсальном отчете (например, "Валовая Прибыль" - в модуле отчета в процедуре УстановитьНачальныеНастройки() должен быть запрос). Сохраняете его в файл. Открываете, ищите в модуле отчета процедуру УстановитьНачальныеНастройки(), там в комментариях все достаточно подробно описано. Ну и переделываете потихоньку эту процедуру по аналогии. Посмотрите, как написан запрос, свой запрос делаете по аналогии, не забывая про комментарии а-ля
| //ПОЛЯ_СВОЙСТВА
| //ПОЛЯ_КАТЕГОРИИ
и поля-отборы-условия-сортировку-итоги построителя.
Ну и так далее можно просто сверху вниз идти и переделывать эту процедуру по аналогии с тем, чтов ней уже есть. В большинстве случаев достаточно только правильно написать запрос, указать, каким объектам будут присоединяться свойства, создать список показателей и текстового представления полей. Ну и конечно же переименовать сам отчет.
Есть еще важная штуковина, связанная с выбором периода в отчете
// Содержит значение используемого режима ввода периода.
// Тип: Число.
// Возможные значения: 0 - произвольный период, 1 - на дату, 2 - неделя, 3 - декада, 4 - месяц, 5 - квартал, 6 - полугодие, 7 - год
// Значение по умолчанию: 0
// Пример:
// УниверсальныйОтчет.мРежимВводаПериода = 1;
Можно также посмотреть отчеты, которые создаются без использования запроса, например "Продажи" для сравнения. Пардон заранее - описал для УТ, но чую, что в других конфигурациях все то же самое. Вообще, можете написать, что за отчет нужен, будем коллективно накручивать рейтинг, и всем хорощо, все довольны.
(3)
3. Следуя логии того что универ.отчет работает на простоителе отчета следует что он не использует СКД. Тогда зачем там схемы СКД?
Я так понимаю, разрабы поленились при переходе с 8.0 на 8.1 и так оно все и сейчас торчит (врать не буду, в некоторых новых конфигурациях оно используется). Работает же нормально ну и влезать тогда нечего. А ломать/перепахивать по ходу слишком много пришлось бы всякого разного. Как-то так.
1. Генератор запросов у меня не запустился - валятся ошибки на переменную УКО. Не стал разбираться.
2. Может быть конец дня, но когда я вставил произвольный запрос в шаблон универ.отчета - не выводим ничего и нет ни каких настроек.
3. Следуя логии того что универ.отчет работает на простоителе отчета следует что он не использует СКД. Тогда зачем там схемы СКД?
2. Может быть конец дня, но когда я вставил произвольный запрос в шаблон универ.отчета - не выводим ничего и нет ни каких настроек.
3. Следуя логии того что универ.отчет работает на простоителе отчета следует что он не использует СКД. Тогда зачем там схемы СКД?
Подскажите, кто нибудь реализовывал "простые" отчеты через универсальный отчет?
Под "простым" отчетом я имею совсем простой отчет :), допустим, отчет по свойствам договоров.
вот простой запрос, проще не куда)
а вот красивой его вывести не получается.
В целом надо просто по вертикали вывести договора, по горизонтали - свойства договоров, а в пересечении - значение свойств.
Но проблема в том что в запросе нет показателей и когда я делаю как описано выше, договора и свойства выводяться и значения их нет.
Как его побороть?
Под "простым" отчетом я имею совсем простой отчет :), допустим, отчет по свойствам договоров.
ВЫБРАТЬ
ЗначенияСвойствОбъектов.Объект КАК Объект,
ЗначенияСвойствОбъектов.Свойство КАК Свойство,
ЗначенияСвойствОбъектов.Значение КАК Значение
{ВЫБРАТЬ
Объект.*,
Свойство.*,
Значение.*}
ИЗ
РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
ГДЕ
ЗначенияСвойствОбъектов.Объект ССЫЛКА Справочник.ДоговорыКонтрагентов
Показатьвот простой запрос, проще не куда)
а вот красивой его вывести не получается.
В целом надо просто по вертикали вывести договора, по горизонтали - свойства договоров, а в пересечении - значение свойств.
Но проблема в том что в запросе нет показателей и когда я делаю как описано выше, договора и свойства выводяться и значения их нет.
Как его побороть?
(7) Dark.iNiTro, вывод свойств в универсальном отчете предусмотрен уже. В параметрах только надо указать для каких полей надо выводить свойства. В типовых "Продажах" кажется такое реализовано для номенклатуры.
УниверсальныйОтчет.ИспользоватьСвойстваИКатегории = Истина;
...
Если УниверсальныйОтчет.ИспользоватьСвойстваИКатегории Тогда
УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля("втИтоговаяТаблица.Контрагент", "Контрагент", "Контрагент", ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Контрагенты);
УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля("втИтоговаяТаблица.Номенклатура", "Номенклатура", "Номенклатура", ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура);
УниверсальныйОтчет.ДобавитьВТекстЗапросаСвойстваИКатегории(ТекстЗапроса);
КонецЕсли;
Показать
Так вы его побороли?
У меня сейчас аналогичная задача:
Но, к сожалению, не работает :-( Кто может помочь, почему?
У меня сейчас аналогичная задача:
Процедура УстановитьНачальныеНастройки(ДополнительныеПараметры = Неопределено) Экспорт
// Настройка общих параметров универсального отчета
// Содержит название отчета, которое будет выводиться в шапке.
// Тип: Строка.
// Пример:
// УниверсальныйОтчет.мНазваниеОтчета = "Название отчета";
УниверсальныйОтчет.мНазваниеОтчета = СокрЛП(ЭтотОбъект.Метаданные().Синоним);
// Содержит признак необходимости отображения надписи и поля выбора раздела учета в форме настройки.
// Тип: Булево.
// Значение по умолчанию: Истина.
// Пример:
// УниверсальныйОтчет.мВыбиратьИмяРегистра = Ложь;
УниверсальныйОтчет.мВыбиратьИмяРегистра = Ложь;
// Содержит имя регистра, по метаданным которого будет выполняться заполнение настроек отчета.
// Тип: Строка.
// Пример:
// УниверсальныйОтчет.ИмяРегистра = "ТоварыНаСкладах";
УниверсальныйОтчет.ИмяРегистра = "ФинансовыйПлан";
// Содержит признак необходимости вывода отрицательных значений показателей красным цветом.
// Тип: Булево.
// Значение по умолчанию: Ложь.
// Пример:
// УниверсальныйОтчет.ОтрицательноеКрасным = Истина;
// Содержит признак необходимости вывода в отчет общих итогов.
// Тип: Булево.
// Значение по умолчанию: Истина.
// Пример:
// УниверсальныйОтчет.ВыводитьОбщиеИтоги = Ложь;
// Содержит признак необходимости вывода детальных записей в отчет.
// Тип: Булево.
// Значение по умолчанию: Ложь.
// Пример:
// УниверсальныйОтчет.ВыводитьДетальныеЗаписи = Истина;
// Содержит признак необходимости отображения флага использования свойств и категорий в форме настройки.
// Тип: Булево.
// Значение по умолчанию: Истина.
// Пример:
// УниверсальныйОтчет.мВыбиратьИспользованиеСвойств = Ложь;
УниверсальныйОтчет.мВыбиратьИспользованиеСвойств = Истина;
ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЕСТЬNULL(ФинансовыйПланДвиженияОбороты.ФактОборот, 0) КАК ФактОборот,
| ФинансовыйПланОстаткиИОбороты.ПериодПлана КАК ПериодПлана,
| ПРЕДСТАВЛЕНИЕ(ФинансовыйПланОстаткиИОбороты.ПериодПлана) КАК ПериодПланаПредставление,
| ФинансовыйПланОстаткиИОбороты.Состояние КАК Состояние,
| ПРЕДСТАВЛЕНИЕ(ФинансовыйПланОстаткиИОбороты.Состояние) КАК СостояниеПредставление,
| ФинансовыйПланОстаткиИОбороты.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
| ПРЕДСТАВЛЕНИЕ(ФинансовыйПланОстаткиИОбороты.ПодразделениеОрганизации) КАК ПодразделениеОрганизацииПредставление,
| ФинансовыйПланОстаткиИОбороты.ПодразделениеНазначенияПлана КАК ПодразделениеНазначенияПлана,
| ПРЕДСТАВЛЕНИЕ(ФинансовыйПланОстаткиИОбороты.ПодразделениеНазначенияПлана) КАК ПодразделениеНазначенияПланаПредставление,
| ФинансовыйПланОстаткиИОбороты.СтатьяБюджета КАК СтатьяБюджета,
| ПРЕДСТАВЛЕНИЕ(ФинансовыйПланОстаткиИОбороты.СтатьяБюджета) КАК СтатьяБюджетаПредставление,
| ФинансовыйПланОстаткиИОбороты.ГруппаСтатьиБюджета КАК ГруппаСтатьиБюджета,
| ПРЕДСТАВЛЕНИЕ(ФинансовыйПланОстаткиИОбороты.ГруппаСтатьиБюджета) КАК ГруппаСтатьиБюджетаПредставление,
| ФинансовыйПланОстаткиИОбороты.СуммаНачальныйОстаток КАК СуммаНачальныйОстаток,
| ФинансовыйПланОстаткиИОбороты.СуммаПриход КАК СуммаПриход,
| ФинансовыйПланОстаткиИОбороты.СуммаРасход КАК СуммаРасход,
| ФинансовыйПланОстаткиИОбороты.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток,
| ФинансовыйПланОстаткиИОбороты.СуммаОборот КАК СуммаОборот,
| ФинансовыйПланОстаткиИОбороты.Регистратор КАК Регистратор,
| ПРЕДСТАВЛЕНИЕ(ФинансовыйПланОстаткиИОбороты.Регистратор) КАК РегистраторПредставление,
| ФинансовыйПланОстаткиИОбороты.Период КАК Период,
| НАЧАЛОПЕРИОДА(ФинансовыйПланОстаткиИОбороты.Период, ДЕНЬ) КАК ПериодДень,
| НАЧАЛОПЕРИОДА(ФинансовыйПланОстаткиИОбороты.Период, НЕДЕЛЯ) КАК ПериодНеделя,
| НАЧАЛОПЕРИОДА(ФинансовыйПланОстаткиИОбороты.Период, ДЕКАДА) КАК ПериодДекада,
| НАЧАЛОПЕРИОДА(ФинансовыйПланОстаткиИОбороты.Период, МЕСЯЦ) КАК ПериодМесяц,
| НАЧАЛОПЕРИОДА(ФинансовыйПланОстаткиИОбороты.Период, КВАРТАЛ) КАК ПериодКвартал,
| НАЧАЛОПЕРИОДА(ФинансовыйПланОстаткиИОбороты.Период, ПОЛУГОДИЕ) КАК ПериодПолугодие,
| НАЧАЛОПЕРИОДА(ФинансовыйПланОстаткиИОбороты.Период, ГОД) КАК ПериодГод
|{ВЫБРАТЬ
| ФактОборот,
| ПериодПлана,
| ПериодПланаПредставление,
| Состояние.*,
| СостояниеПредставление,
| ПодразделениеОрганизации.*,
| ПодразделениеОрганизацииПредставление,
| ПодразделениеНазначенияПлана.*,
| ПодразделениеНазначенияПланаПредставление,
| СтатьяБюджета.*,
| СтатьяБюджетаПредставление,
| ГруппаСтатьиБюджета.*,
| ГруппаСтатьиБюджетаПредставление,
| СуммаНачальныйОстаток,
| СуммаПриход,
| СуммаРасход,
| СуммаКонечныйОстаток,
| СуммаОборот,
| Регистратор.*,
| РегистраторПредставление,
| Период,
| ПериодДень,
| ПериодНеделя,
| ПериодДекада,
| ПериодМесяц,
| ПериодКвартал,
| ПериодПолугодие,
| ПериодГод}
|ИЗ
| РегистрНакопления.ФинансовыйПлан.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Регистратор, , ) КАК ФинансовыйПланОстаткиИОбороты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ФинансовыйПланДвижения.Обороты(&ДатаНач, &ДатаКон, Регистратор, ) КАК ФинансовыйПланДвиженияОбороты
| ПО ФинансовыйПланОстаткиИОбороты.ПодразделениеНазначенияПлана = ФинансовыйПланДвиженияОбороты.ПодразделениеНазначенияПлана
| И ФинансовыйПланОстаткиИОбороты.СтатьяБюджета = ФинансовыйПланДвиженияОбороты.СтатьяБюджета
| И ФинансовыйПланОстаткиИОбороты.ГруппаСтатьиБюджета = ФинансовыйПланДвиженияОбороты.ГруппаСтатьиБюджета
| И ФинансовыйПланОстаткиИОбороты.ПериодПлана = ФинансовыйПланДвиженияОбороты.ПериодПлана
|ИТОГИ
| СУММА(ФактОборот),
| СУММА(СуммаНачальныйОстаток),
| СУММА(СуммаПриход),
| СУММА(СуммаРасход),
| СУММА(СуммаКонечныйОстаток),
| СУММА(СуммаОборот)
|ПО
| ОБЩИЕ
|{ИТОГИ ПО
| ФактОборот,
| ПериодПлана,
| ПериодПланаПредставление,
| Состояние.*,
| СостояниеПредставление,
| ПодразделениеОрганизации.*,
| ПодразделениеОрганизацииПредставление,
| ПодразделениеНазначенияПлана.*,
| ПодразделениеНазначенияПланаПредставление,
| СтатьяБюджета.*,
| ГруппаСтатьиБюджета.*,
| ГруппаСтатьиБюджетаПредставление,
| СуммаНачальныйОстаток,
| СуммаПриход,
| СуммаРасход,
| СуммаКонечныйОстаток,
| СуммаОборот,
| Регистратор.*,
| РегистраторПредставление,
| Период,
| ПериодДень,
| ПериодНеделя,
| ПериодДекада,
| ПериодМесяц,
| ПериодКвартал,
| ПериодПолугодие,
| ПериодГод}
|АВТОУПОРЯДОЧИВАНИЕ";
УниверсальныйОтчет.ПостроительОтчета.Текст = ТекстЗапроса;
ПоказатьНо, к сожалению, не работает :-( Кто может помочь, почему?
(10) kotloff,
да ладно - посмтори типовые отчеты, которые сделаны на СКД
и для которых созданы нормальные общие формы отчета и редактирования вариантов
(у себя я правда их дорабатывал)
и у меня пользователи сами редактируют настройки отчетов, добавляют поля группировки
и все то что позволяет СКД
СКД не всегда удобен для юзеров
да ладно - посмтори типовые отчеты, которые сделаны на СКД
и для которых созданы нормальные общие формы отчета и редактирования вариантов
(у себя я правда их дорабатывал)
и у меня пользователи сами редактируют настройки отчетов, добавляют поля группировки
и все то что позволяет СКД
(11) а бывает что пользователь вообще не трогает настройки отчётов а пользуется тем что было давно настроено. Внедренцы кажется не понимают что бухгалтер человек который работает по многу лет на своём участке учёта , как работник на участке конвейера, ему каждый день нужны примерно одни и те-же данные . Сейчас столкнулись с тем что 1с зачем-то исковеркали настройки универсального отчёта, в Москве высоколобые спецы играются, а человек не может из за этого отчёт начальству получить который много лет делал.
(14) Они не исковеркали настройки, а просто удалили отчёт, который красиво передавал настройки в тот второй отчёт, про который вы пишите "исковеркали настройки". Всю работу всегда делал тот самый отчёт с не дружелюбными для пользователя настройками.
Посмею предложить решение:https://infostart.ru/public/1002984/
Посмею предложить решение:
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот