Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
15 дек 2024, 15:43

Получение точных данных из отчета без СКД

Автор Sasha1C, 22 ноя 2023, 17:07

0 Пользователей и 1 гость просматривают эту тему.

Sasha1C

Добрый день, при создании отчета без скд столкнулся с проблемой получения данных с учетом 2 реквизитов заданных в отчете: менеджер = справочникСсылка.Менеджеры, Контрагент = справочникссылка.Контрагент. Реквизиты задаются на форме отчета.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОказаниеУслугСервисМенеджеромОбороты.Менеджер КАК Менеджер,
| ОказаниеУслугСервисМенеджеромОбороты.ВидУслуги КАК ВидУслуги,
| ОказаниеУслугСервисМенеджеромОбороты.Контрагент КАК Контрагент,
| ЕСТЬNULL(ОказаниеУслугСервисМенеджеромОбороты.КоличествоОборот, 0) КАК КоличествоОборот,
| ОказаниеУслугСервисМенеджеромОбороты.ПлановаяСдача КАК ПлановаяСдача
|ИЗ
| РегистрНакопления.ОказаниеУслугСервисМенеджером.Обороты(, , , ) КАК ОказаниеУслугСервисМенеджеромОбороты";

Если ЗначениеЗаполнено(Контрагент)= Ложь  И ЗначениеЗаполнено(Менеджер)= Ложь Тогда

Если ЗначениеЗаполнено(Контрагент)= Истина  И ЗначениеЗаполнено(Менеджер)= Ложь Тогда


Запрос.Текст = СтрЗаменить(Запрос.Текст,", ) КАК Оказание",", Контрагент = &Контрагент) КАК Оказание");
Запрос.УстановитьПараметр("Контрагент", Контрагент);

Если ЗначениеЗаполнено(Контрагент)= Ложь И ЗначениеЗаполнено(Менеджер)= Истина Тогда

Запрос.Текст = СтрЗаменить(Запрос.Текст,", ) КАК Оказание",", Менеджер = &Менеджер) КАК Оказание");
Запрос.УстановитьПараметр("Менеджер", Менеджер);

Иначе

Запрос.Текст = СтрЗаменить(Запрос.Текст,", ) КАК Оказание",", Менеджер = &Менеджер И Контрагент = &Контрагент) КАК Оказание");
Запрос.УстановитьПараметр("Менеджер", Менеджер);
Запрос.УстановитьПараметр("Контрагент", Контрагент);

КонецЕсли;
КонецЕсли;
КонецЕсли;

РезультатЗапроса = Запрос.Выполнить();


Проблема в том, что даже при указании контрагента и менеджера не происходит отбор, а выдает всю таблицу результатов. И системных ошибок тоже не выдает, подскажите где может быть ошибка или неточности?  Также если будут предложения по оптимизации данной задачи(получение данных в разрезе контрагента или менеджер, если таковые указаны), буду очень рад. Заранее спасибо.

antoneus

Запрос.Текст = "ВЫБРАТЬ
        |    ОказаниеУслугСервисМенеджеромОбороты.Менеджер КАК Менеджер,
        |    ОказаниеУслугСервисМенеджеромОбороты.ВидУслуги КАК ВидУслуги,
        |    ОказаниеУслугСервисМенеджеромОбороты.Контрагент КАК Контрагент,
        |    ЕСТЬNULL(ОказаниеУслугСервисМенеджеромОбороты.КоличествоОборот, 0) КАК КоличествоОборот,
        |    ОказаниеУслугСервисМенеджеромОбороты.ПлановаяСдача КАК ПлановаяСдача
        |ИЗ
        |    РегистрНакопления.ОказаниеУслугСервисМенеджером.Обороты(ВЫБОР КОГДА &ОтборПоКонтрагенту ТОГДА Контрагент=&Контрагент ИНАЧЕ ИСТИНА КОНЕЦ И
ВЫБОР КОГДА &ОтборПоМенеджеру ТОГДА Менеджер=&Менеджер ИНАЧЕ ИСТИНА КОНЕЦ, , , ) КАК ОказаниеУслугСервисМенеджеромОбороты";

Запрос.УстановитьЗначение("ОтборПоКонтрагенту", ЗначениеЗаполнено(Контрагент));
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Запрос.УстановитьЗначение("ОтборПоМенеджеру", ЗначениеЗаполнено(Менеджер));
Запрос.УстановитьПараметр("Менеджер", Менеджер);

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск