Универсальный отчет - фильтр по типу регистратора

1. JustLucky 19.01.14 20:32 Сейчас в теме
Конфигурация - Управление торговлей, редакция 10.3.

Что нужно? Простой отчет по документам "Возврат поставщику" с отборами по контрагенту и дописанному реквизиту "причина возврата".

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

Процедура УстановитьНачальныеНастройки(ДополнительныеПараметры = Неопределено) Экспорт
	
	УниверсальныйОтчет.мНазваниеОтчета = "Причины возврата поставщикам";
	УниверсальныйОтчет.мВыбиратьИмяРегистра = Истина;
	УниверсальныйОтчет.ИмяРегистра = "Закупки";
	УниверсальныйОтчет.УстановитьНачальныеНастройки(Истина);
	УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Контрагент");
	УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Регистратор");
	УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Регистратор.ПричинаВозвратаОтПоставщика");
	УниверсальныйОтчет.ДобавитьОтбор("Контрагент");
	УниверсальныйОтчет.ДобавитьОтбор("Регистратор");
	УниверсальныйОтчет.ДобавитьОтбор("Регистратор.ПричинаВозвратаОтПоставщика",Истина);
		
КонецПроцедуры // УстановитьНачальныеНастройки()
Показать


Все работает хорошо, за исключением одного. Реквизит "причина возврата" есть только в документе "возврат поставщику", поэтому если я ставлю в отборе "равен" пустому значению или конкретному значению из справочника, то показываются нужные документы. Если же я убираю отбор по причине возврата, то в отчет попадают и документы "поступление". То есть увидеть в отчете абсолютно все причины возврата никак не получится. Можно ли как-то включить в такой отчет фильтр по типа регистратора?

Заранее спасибо!
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. starjevschik 19.01.14 22:37 Сейчас в теме
(1) JustLucky,
Что нужно? Простой отчет по документам "Возврат поставщику"


 УниверсальныйОтчет.ИмяРегистра = "Закупки";


если нужен отчет по документам, зачем там регистр? Сделай отчет по документам и все дела.
4. JustLucky 19.01.14 22:52 Сейчас в теме
(3) starjevschik, я же написал в заглавном посте, что клиенту нужен отчет отчет только на основе универсального! С таким же интерфейсом. Если я сделаю через схему компоновки данных или просто вручную создам форму с полями для контрагента и причины, будет совсем не то.

(2) dimalf, нельзя в отборе выбрать тип документа-регистратора.

Отчет этот находится в УТ в разделе Отчеты - Универсальный Отчет. Там можно выбрать раздел учета, задать в пользователем непосредственно в программе все группировки, условия, но вот как задать условие на тип регистратора - никак не пойму. Запросов самих в отчетах нет, они все в "УниверсальныйОтчет", а остальные отчеты имеют такой же реквизит и в них лишь задаются настройки по умолчанию.

5. starjevschik 19.01.14 23:06 Сейчас в теме
(4) JustLucky,
я же написал в заглавном посте, что клиенту нужен отчет отчет только на основе универсального!

я прочитал. В универсальный отчет можно вписать свой запрос, это не очень сложно. Регистр должен быть незаполнен.
6. JustLucky 19.01.14 23:11 Сейчас в теме
(5) starjevschik, в каком месте вписывать то? Вносить изменения в модуле "УниверсальныйОтчет"? Или в моем отчете?
10. starjevschik 20.01.14 09:49 Сейчас в теме
(6) JustLucky, в твоем, конечно. В нем есть реквизит Универсальный отчет, перед открытием надо передать ему настройки - запрос, группировки, условия.
Посмотри, например, в УТ 10.3 как устроен какой-нибудь отчет не по регистру. Например, ВаловаяПрибыль. В модуле отчета
Процедура УстановитьНачальныеНастройки(ДополнительныеПараметры = Неопределено) Экспорт
	УниверсальныйОтчет.мНазваниеОтчета = СокрЛП(ЭтотОбъект.Метаданные().Синоним);
	УниверсальныйОтчет.мВыбиратьИмяРегистра = Ложь;
	УниверсальныйОтчет.ПостроительОтчета.Текст = ТекстЗапроса;

ну и так далее, там пояснения есть.
JustLucky; +1 Ответить
11. JustLucky 20.01.14 10:11 Сейчас в теме
(10) starjevschik, спасибо за помощь! Мне как раз такой пример и был нужен, а то я смотрел отчеты "продажи", "закупки", а там запросов в них нет. Буду разбираться.
8. Rothschild 20.01.14 06:29 Сейчас в теме
(1) JustLucky,
в исходной запрос отчета добавь вычисляемое поле следующего вида:
ВЫБОР
КОГДА ХХХХ.Регистратор ССЫЛКА Документ.УУУУ1 ТОГДА
    // Ф(УУУУ1) что-то определенного типа
КОГДА ХХХХ.Регистратор ССЫЛКА Документ.УУУУ2 ТОГДА
    // Ф(УУУУ2) что-то определенного типа
КОГДА ХХХХ.Регистратор ССЫЛКА Документ.УУУУ3 ТОГДА
    // Ф(УУУУ3) что-то определенного типа
ИНАЧЕ
    // пустое предопределенное значение определенного типа
КОНЕЦ
Показать
9. Rothschild 20.01.14 06:32 Сейчас в теме
(8)
ну и настрой вывод это поле в отчет с помощью
расширения языка запросов для построителя отчетов
;)
ЗЫ
// пустое предопределенное значение определенного типа
это выражение вроде
ЗНАЧЕНИЕ(Справочник.ЗЗЗЗ1.ПустаяСсылка)
2. dimalf 19.01.14 22:33 Сейчас в теме
Добрый день!

А Вы поставьте условие, что если тип документа - ВОЗВРАТ ПОСТАВЩИКУ, то условие с причиной включаются в текст запроса.
7. JustLucky 19.01.14 23:22 Сейчас в теме
Вряд ли это верный путь. Надо будет как-то еще включить результаты запроса в отчет, а в Универсальном отчете запросов очень много. Наверное, фильтр по типу регистра можно как-то поставить в процедуре
УстановитьНачальныеНастройки
, но тут подскажут лишь те, кто вплотную этими отчетами занимался...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот