Универсальный отчет,добавление отбора
Добрый день.Чет универсальный отчет не даеться мне). Не добавляет быстрый отбор. Хоть убей может кто-сталкивался. 8.2 управление тор.пред.укр 1,2. Вот запрос на всяк пожарный.Может прикол именно в нем. Вот все,что идет в «УстановитьНачальныеНастройки»:
УниверсальныйОтчет.мНазваниеОтчета = СокрЛП(ЭтотОбъект.Метаданные().Синоним);
УниверсальныйОтчет.мВыбиратьИмяРегистра = Ложь;
УниверсальныйОтчет.ВыводитьОбщиеИтоги = ИСТИНА;
УниверсальныйОтчет.ВыводитьДетальныеЗаписи = Истина;
ТекстЗапроса = «ВЫБРАТЬ РАЗРЕШЕННЫЕ
| КлиентыПланОтгрузок.Дата КАК Дата,
| КлиентыПланОтгрузок.Менеджер КАК Менеджер,
| КлиентыПланОтгрузок.Фирма КАК Фирма,
| КлиентыПланОтгрузок.Маршрут КАК Маршрут,
| КлиентыПланОтгрузок.Количество КАК Надо,
| КлиентыПланОтгрузок.Ссылка.Наименование КАК Наименование,
| КлиентыПланОтгрузок.Ссылка.ИНН КАК ИНН,
| ВЫБОР
| КОГДА КлиентыПланОтгрузок.Дата = Номера.Дата_Загрузки
| И КлиентыПланОтгрузок.Маршрут = Номера.Маршрут
| ТОГДА КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номера.Ссылка)
| ИНАЧЕ «»0″»
| КОНЕЦ КАК Поставили,
| КлиентыПланОтгрузок.Маршрут.Премичание КАК Премичание,
| КлиентыПланОтгрузок.Ссылка КАК Ссылка
| <ВЫБРАТЬ
| Дата,
| Менеджер,
| Маршрут,
| Надо,
| Наименование,
| ИНН,
| Поставили,
| Премичание,
| Фирма,
| Ссылка.*>
|ИЗ
| Справочник.Номера КАК Номера
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Клиенты.ПланОтгрузок КАК КлиентыПланОтгрузок
| ПО Номера.Маршрут = КлиентыПланОтгрузок.Маршрут
|ГДЕ
| КлиентыПланОтгрузок.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
|
|СГРУППИРОВАТЬ ПО
| КлиентыПланОтгрузок.Дата,
| КлиентыПланОтгрузок.Менеджер,
| КлиентыПланОтгрузок.Фирма,
| КлиентыПланОтгрузок.Количество,
| КлиентыПланОтгрузок.Маршрут,
| КлиентыПланОтгрузок.Ссылка.Наименование,
| КлиентыПланОтгрузок.Ссылка.ИНН,
| Номера.Дата_Загрузки,
| Номера.Маршрут,
| КлиентыПланОтгрузок.Маршрут.Премичание,
| КлиентыПланОтгрузок.Ссылка
| <УПОРЯДОЧИТЬ ПО
| Дата>
| <ИТОГИ ПО
| Дата>»;
Источник
Не работает отбор в системе компоновки данных
Делаю отчет на СКД. Источник данных — запрос:
ВЫБРАТЬ
ибсВыданныеТалоныОстаткиИОбороты.Контрагент КАК Контрагент,
ибсВыданныеТалоныОстаткиИОбороты.ДоговорКонтрагента КАК Договор,
ибсВыданныеТалоныОстаткиИОбороты.Талон КАК Талон,
ибсРеквизитыДоговоровСрезПоследних.ибсРайон КАК Район,
ибсРеквизитыДоговоровСрезПоследних.ибсТипДоговора КАК ТипДоговора,
ибсВыданныеТалоныОстаткиИОбороты.КоличествоНачальныйОстаток КАК НачальныйОстаток,
ибсВыданныеТалоныОстаткиИОбороты.КоличествоПриход КАК Выдано,
ибсВыданныеТалоныОстаткиИОбороты.КоличествоРасход КАК Использовано,
ибсВыданныеТалоныОстаткиИОбороты.КоличествоКонечныйОстаток КАК КонечныйОстаток
ИЗ
РегистрНакопления.ибсВыданныеТалоны.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , ) КАК ибсВыданныеТалоныОстаткиИОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ибсРеквизитыДоговоров.СрезПоследних(&КонецПериода, ) КАК ибсРеквизитыДоговоровСрезПоследних
ПО ибсВыданныеТалоныОстаткиИОбороты.ДоговорКонтрагента = ибсРеквизитыДоговоровСрезПоследних.ДоговорКонтрагента
УПОРЯДОЧИТЬ ПО
Контрагент, Договор
В компоновке указываю ресурсы НачальныйОстаток, Выдано, Использовано, КонечныйОстаток. Создаю единственную группировку Контрагент, Договор, Талон, Договор, ТипДоговора и на закладке выбранные поля добавляю все 4 ресурса. Отчет формируется правильно, но при включении отбора по полям Район или ТипДоговора получаю пустой отчет. Что я делаю не так? Почему поля взяты из таблицы прикрепленной Левым соединением нельзя использовать в отборе?
Источник
Универсальный отчет, Предопределенный отбор
В универсальном отчете есть список предопределенных отборов
[1c]
// Добавление предопределенных отборов отчета.
// Необходимо вызывать для каждого добавляемого отбора.
// УниверсальныйОтчет.ДобавитьОтбор( );
УниверсальныйОтчет.ДобавитьОтбор(«Склад»);
УниверсальныйОтчет.ДобавитьОтбор(«Матрица»);
УниверсальныйОтчет.ДобавитьОтбор(«КатегорияТоваров»);
[/1c]
Как мне перед выполнением проверить если есть отбор, до добавить это условие в запрос. Сам запрос отрабатывает нормально, отбор на этапе вывода тоже отрабатывает, но вопрос в длительности. Без отбора в запросе он отрабатывает около двух — трех минут, с отбором меньше 30 сек. Причина запрос состоит из 7 запросов. Отбор в первом запросе сильно сужает выборку. Причем отбор всегда заполнен, вопрос как в коде понят чем
нужно чтото вроде понять где взять СкладНаФорме
[1c]
Если Не СкладНаФорме = Справочники.Склады.ПустаяСсылка Тогда
СтрЗаменить(ТекстЗапроса, «///ОтборПоСкладу», » и склад = &Склад»);
УниверсальныйОтчет.ПостроительОтчета.Текст = ТекстЗапроса;
УниверсальныйОтчет.ПостроительОтчета.Кактоустановитьпараметр(складнаформе);
ЭтотОбъект.КомпоновщикНастроек.Настройки.Выбор.ДоступныеПоляВыбора.Элементы
ЭтотОбъект.КомпоновщикНастроек.Настройки.ДоступныеОбъекты.Элементы
ЭтотОбъект.КомпоновщикНастроек.ФиксированныеНастройки.Выбор.ДоступныеПоляВыбора.Элементы
ЭтотОбъект.КомпоновщикНастроек.ФиксированныеНастройки.ДоступныеПоляВыбора.Элементы
ЭтотОбъект.КомпоновщикНастроек.ФиксированныеНастройки.ДоступныеПоляОтбора.Элементы
ЭтотОбъект.КомпоновщикНастроек.ФиксированныеНастройки.Отбор.ДоступныеПоляОтбора.Элементы
Источник
Не работает отбор в СКД
(15) в качестве теста добавьте вычисляемое поле МенеджерПоле
и укажите выражение Менеджер.
если отбор на МенеджерПоле сработает, значит ваше предположение верно. Тогда в выбранных полях заменить Менеджер на МенеджерПоле и т.д.
(19) по этому фрагменту коду понятно, что стандартная компоновка отключена.
Значит есть вероятность, что в программной компоновке стандартное поведение отбора отключили.
Я бы еще в настройке компоновки создал в качестве теста новый вариант с нуля чтобы флажки Авто стали на свои места и проверил формирование с отборами
Посмотрите модуль объекта для отчета.
Там может быть процедура вроде этой:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
Если ее заремить, то отчет будет вести себя стандартно.
Ха-Ха! я тоже наткнулся на подобную проблему.
Было: отчет на СКД с кучей временных таблиц и разнообразными джойнами.
Отбор по контрагенту работал выборочно. по каким-то КА работает, по другим не работает. без отбора выводит всех .
Корень зла крылся в том, что при формировании одной из промежуточных временных таблиц был юнион одной таблицы с джойном пары других таблиц. В результате джойна могли появляться NULL значения.
Заменил левый джойн на полный, для того чтобы не получалось NULL значений в ссылочных колонках и isnull( ХЗ, 0) в числовых колонках.
В итоге, по всей цепочке временных таблиц и в итоговой выборке NULL пропали и отбор СКД заработал адекватно.
По логике моего отчета Контрагент должен быть заполнен какой-либо вменяемой ссылкой, не пустым значением.
Если по вашей логике допустимы пустые значения — то их можно заполнить через isNull( HZ , Значение(Справочник.какойто.пустаяссылка))
Мораль — СКД не любит NULL в колонках , по которым выполняется отбор.
Источник
Не работает отбор в системе компоновки данных
Делаю отчет на СКД. Источник данных — запрос:
ВЫБРАТЬ
ибсВыданныеТалоныОстаткиИОбороты.Контрагент КАК Контрагент,
ибсВыданныеТалоныОстаткиИОбороты.ДоговорКонтрагента КАК Договор,
ибсВыданныеТалоныОстаткиИОбороты.Талон КАК Талон,
ибсРеквизитыДоговоровСрезПоследних.ибсРайон КАК Район,
ибсРеквизитыДоговоровСрезПоследних.ибсТипДоговора КАК ТипДоговора,
ибсВыданныеТалоныОстаткиИОбороты.КоличествоНачальныйОстаток КАК НачальныйОстаток,
ибсВыданныеТалоныОстаткиИОбороты.КоличествоПриход КАК Выдано,
ибсВыданныеТалоныОстаткиИОбороты.КоличествоРасход КАК Использовано,
ибсВыданныеТалоныОстаткиИОбороты.КоличествоКонечныйОстаток КАК КонечныйОстаток
ИЗ
РегистрНакопления.ибсВыданныеТалоны.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , ) КАК ибсВыданныеТалоныОстаткиИОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ибсРеквизитыДоговоров.СрезПоследних(&КонецПериода, ) КАК ибсРеквизитыДоговоровСрезПоследних
ПО ибсВыданныеТалоныОстаткиИОбороты.ДоговорКонтрагента = ибсРеквизитыДоговоровСрезПоследних.ДоговорКонтрагента
УПОРЯДОЧИТЬ ПО
Контрагент, Договор
В компоновке указываю ресурсы НачальныйОстаток, Выдано, Использовано, КонечныйОстаток. Создаю единственную группировку Контрагент, Договор, Талон, Договор, ТипДоговора и на закладке выбранные поля добавляю все 4 ресурса. Отчет формируется правильно, но при включении отбора по полям Район или ТипДоговора получаю пустой отчет. Что я делаю не так? Почему поля взяты из таблицы прикрепленной Левым соединением нельзя использовать в отборе?
Источник