- Не работает отбор в системе компоновки данных
- Особенности использования отборов в системе компоновки данных
- Главный отбор отчета
- Применение отбора в запросах
- Отбор, применяемый не в запросе
- Особенности использования отбора при работе с несколькими наборами данных
- Отбор группировок
- Тип применения отбора группировок
- Особенности отбора по полям — ресурсам
Не работает отбор в системе компоновки данных
Делаю отчет на СКД. Источник данных — запрос:
ВЫБРАТЬ
ибсВыданныеТалоныОстаткиИОбороты.Контрагент КАК Контрагент,
ибсВыданныеТалоныОстаткиИОбороты.ДоговорКонтрагента КАК Договор,
ибсВыданныеТалоныОстаткиИОбороты.Талон КАК Талон,
ибсРеквизитыДоговоровСрезПоследних.ибсРайон КАК Район,
ибсРеквизитыДоговоровСрезПоследних.ибсТипДоговора КАК ТипДоговора,
ибсВыданныеТалоныОстаткиИОбороты.КоличествоНачальныйОстаток КАК НачальныйОстаток,
ибсВыданныеТалоныОстаткиИОбороты.КоличествоПриход КАК Выдано,
ибсВыданныеТалоныОстаткиИОбороты.КоличествоРасход КАК Использовано,
ибсВыданныеТалоныОстаткиИОбороты.КоличествоКонечныйОстаток КАК КонечныйОстаток
ИЗ
РегистрНакопления.ибсВыданныеТалоны.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , ) КАК ибсВыданныеТалоныОстаткиИОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ибсРеквизитыДоговоров.СрезПоследних(&КонецПериода, ) КАК ибсРеквизитыДоговоровСрезПоследних
ПО ибсВыданныеТалоныОстаткиИОбороты.ДоговорКонтрагента = ибсРеквизитыДоговоровСрезПоследних.ДоговорКонтрагента
УПОРЯДОЧИТЬ ПО
Контрагент, Договор
В компоновке указываю ресурсы НачальныйОстаток, Выдано, Использовано, КонечныйОстаток. Создаю единственную группировку Контрагент, Договор, Талон, Договор, ТипДоговора и на закладке выбранные поля добавляю все 4 ресурса. Отчет формируется правильно, но при включении отбора по полям Район или ТипДоговора получаю пустой отчет. Что я делаю не так? Почему поля взяты из таблицы прикрепленной Левым соединением нельзя использовать в отборе?
Источник
Особенности использования отборов в системе компоновки данных
В настройках компоновки данных возможно указание главного отбора и отбора группировок. Главный отбор устанавливается для всего отчета в целом. Отбор группировок устанавливается у конкретной группировки. В данной статье описываются особенности работы системы с главным и отборами группировок.
Главный отбор отчета
Главный отбор влияет на получение данных из наборов, для вывода в отчет. Например, если в главный отбор добавить условие Номенклатура Равно «1С:Бухгалтерия 7.7 Стандартная версия», то в отчет будут выдаваться только записи, у которых поле Номенклатура имеет значение «1С:Бухгалтерия 7.7 Стандартная версия».
Применение отбора в запросах
Если возможно, условия из главного отбора помещается в текст запроса. Отбор может быть помещен в условие виртуальной таблицы, в предложение ГДЕ, в предложение ИМЕЮЩИЕ, в зависимости от того, на какое поле накладывается отбор.
В условие виртуальной таблицы отбор помещается в случае если в исходном запросе набора данных явно сказано, что отбор на данное поле нужно помещать в условие виртуальной таблицы или для набора данных указано автоматическое заполнение полей.
Пример явного указания необходимости помещения условия на поле Номенклатура в параметр виртуальной таблицы:
Сгенерированный запрос набора данных при применении отбора на поле Номенклатура может выглядеть следующим образом:
Как видно, отбор помещен в условие виртуальной таблицы.
В предложение ГДЕ условие помещается в случае если в исходном запросе набора данных явно сказано, что отбор на поле нужно помещать в предложение ГДЕ или при автоматическом заполнении. Если для набора данных указано автоматическое заполнение, то условие будет помещаться в предложение ГДЕ только в случае если отбор на поле не применилось в условии виртуальной таблицы, которая не находится в левой части соединения.
Пример. В наборе данных используется следующий запрос и используется автоматическое заполнение:
Если в отбор добавить условие на поля Номенклатура и Склад, то результирующий запрос будет выглядеть так:
Как видно, отбор на поле Номенклатура был помещен в параметры виртуальных таблиц и т.к. отбор на данное поле был помещен в таблицу, которая не находится в левом соединении (ПродажиОбороты), то отбор на это поле не был помещен предложение ГДЕ. Условие же на поле Склад было помещено как в виртуальную таблицу, так и в предложение ГДЕ, т.к. таблица УчетНоменклатурыОстатки, в условие которой помещен отбор, находится в левом соединении.
Если бы в исходном запросе было явное указание того, что условие на поле Номенклатуры нужно помещать в предложение ГДЕ, как в следующем запросе:
То отбор на данное поле был бы добавлен в предложение ГДЕ результирующего запроса вне зависимости от того, был ли отбор помещен в условие виртуальной таблицы. Для выше описанного примера результирующий запрос бы выглядел следующим образом:
В предложение ИМЕЮЩИЕ условие помещается в случае если отбор накладывается на поле, выражение которого содержит агрегатную функцию.
Например, если исходный запрос, с автоматическим заполнением, выглядит так:
То при применении отбора на поле СуммаДок результирующий запрос будет выглядеть так:
Отбор, применяемый не в запросе
В некоторых ситуациях поместить условие в текст запроса не удается. Такое может произойти в случае если в условии используются поля из нескольких наборов данных или в условии используется вычисляемое или пользовательское поле, содержащее выражения, которые не могут быть представлены на языке запросов. В этом случае выражение условие помещается в свойство Отбор сгенерированного набора данных макета компоновки данных. Если в условии использовались поля из нескольких наборов данных, то условие будет помещаться в последний по связи дочерний набор данных, поле которого используется в условии. Например, если в схеме определены наборы данных Продажи и связанный с ним набор данных Остатки и в условии используются поля из обоих наборов данных, то условие будет помещено в свойство Отбор набора данных Остатки.
Особенности использования отбора при работе с несколькими наборами данных
При использовании в схеме нескольких наборов данных, если в главном отборе накладывается условие на поле некоторого дочернего набора данных, то в сгенерированном макете компоновки данных дочерний набор данных будет связан с родительским набором данных с типом связи «Внутренняя». Родительские наборы данных набора данных, к которому применяется условие, также будут связаны со своими родительскими наборами данных с типом связи «Внутренняя». Тип связи «Внутренняя» означает, что запись родительского набора данных будет выводиться в результат отчета только в случае, если в дочернем наборе данных будут найдены связанные записи. Например, если в схеме определены наборы данных Продажи и связанный с ним набор данных Остатки и в условии используются поле из набора данных Остатки, то в сгенерированном макете компоновки данных связь между этими наборами данных будет определена с типом связи «Внутренняя». Если бы при этом набор данных Продажи был в свою очередь приемником связи для некоторого другого набора данных, то и эта связь также была бы сгенерирована с типом связи «Внутренняя».
Отбор группировок
Отбор группировок используется для фильтрации записей, выводимых в группировке. При этом отбор распространяется на саму группировку, на вложенные группировки, и не влияет на другие группировки имеющиеся в отчете.
Например. В схеме компоновки опишем набор данных, который получает остатки номенклатуры по складам.
В настройках отчета создадим следующую структуру:
В первую группировку по полю Номенклатура добавим условие Склад Равно «Основной склад». В группировку по полю Склад добавим условие Склад Не Равно «Основной склад».
Результат отчета будет выглядеть следующим образом:
Отбор: Склад Равно «Основной склад» |
Номенклатура | Количество остаток |
1С:Аспект 7.7 | 10,00 |
1С:Бухгалтерия 7.7 Базовая версия | 15,00 |
1С:Бухгалтерия 7.7 Стандартная версия | 5,00 |
1С:Бухгалтерия ПРОФ версия 7.7 | 2,00 |
1С:Торговля и Склад 7.7 Проф | 2,00 |
Windows XP Home Edition Russian CD | 14,00 |
Windows XP Home Edition Russian UPG CD | 20,00 |
Windows XP Professional Russian CD | 2,00 |
Клавиатура Apple Pro Keyboards | 7,00 |
Клавиатура Keyboard PS/2 | 11,00 |
Клавиатура Linkworld LK-601 PS/2 | 30,00 |
Клавиатура LK-601 KB-2 000 PS/2 | 17,00 |
Лазерный принтер 5250197-203 Minolta-QMS | 1,00 |
Лазерный принтер Canon LBP-810 | 2,00 |
Лазерный принтер HP LaserJet 2200 | 2,00 |
Монитор 15′ LG Studioworks 575N | 4,00 |
Монитор 19′ Hitachi CM715ET | 4,00 |
Монитор LCD 22′ M8537ZM/A | 1,00 |
Мышь 2-кноп A4Tech PS/2 | 16,00 |
Мышь GENIUS «EASY» (3 кнопки), | 35,00 |
Мышь Ice Mouse MUS-2 | 8,00 |
Мышь LOGITECH M-S48 PS/2 | 1,00 |
Сист. блок Hewlett-Packard Brio BA410 | 10,00 |
Сист. блок Hewlett-Packard Vectra VL420 | 2,00 |
Сист. блок IBM NetVista A22p | 5,00 |
Сист. блок IBM NetVista M41 | 3,00 |
Итого | 229,00 |
Отбор: Склад Не равно «Основной склад» |
Склад | Количество остаток |
Номенклатура | |
Витрина в офисе | 23,00 |
1С:Аспект 7.7 | 2,00 |
1С:Бухгалтерия 7.7 Базовая версия | 1,00 |
1С:Бухгалтерия 7.7 Стандартная версия | 1,00 |
1С:Бухгалтерия ПРОФ версия 7.7 | 1,00 |
1С:Торговля и Склад 7.7 Проф | 1,00 |
Windows XP Home Edition Russian CD | 2,00 |
Windows XP Home Edition Russian UPG CD | 5,00 |
Windows XP Professional Russian CD | 2,00 |
Клавиатура Keyboard PS/2 | 3,00 |
Лазерный принтер 5250197-203 Minolta-QMS | 1,00 |
Лазерный принтер Canon LBP-810 | 1,00 |
Мышь GENIUS «EASY» (3 кнопки), | 2,00 |
Ноутбук Rover Computers Explorer | 1,00 |
Склад отдела продаж | 58,00 |
1С:Аспект 7.7 | 1,00 |
1С:Бухгалтерия ПРОФ версия 7.7 | 1,00 |
1С:Торговля и Склад 7.7 Проф | 1,00 |
Windows XP Home Edition Russian CD | 1,00 |
Windows XP Home Edition Russian UPG CD | 4,00 |
Клавиатура Apple Pro Keyboards | 1,00 |
Клавиатура Keyboard PS/2 | 2,00 |
Клавиатура Linkworld LK-601 PS/2 | 5,00 |
Клавиатура LK-601 KB-2 000 PS/2 | 5,00 |
Монитор 17′ Philips 107S20 | 1,00 |
Монитор 19′ Hitachi CM715ET | 4,00 |
Мышь GENIUS «EASY» (3 кнопки), | 5,00 |
Мышь Ice Mouse MUS-2 | 16,00 |
Мышь LOGITECH M-S48 PS/2 | 5,00 |
Мышь OK-720 Mouse A4Tech PS/2 | 1,00 |
Ноутбук Rover Computers Navigator KT7 | 4,00 |
Сист. блок Hewlett-Packard Vectra VL420 | 1,00 |
Итого | 81,00 |
Как видно, в первой группировке выданы остатки номенклатуры по складу «Основной склад». В следующих группировках выдаются остатки номенклатуры по другим складам.
Тип применения отбора группировок
В отборах, применяемых к группировкам, возможно указание типа применения условия для выводимых записей.
Возможны три варианта типа применения:
- Без иерархии — условие применяется только к не иерархическим записям. При этом иерархические записи не фильтруются. В отчет выдаются только те иерархические записи, в которых присутствуют не иерархические записи, удовлетворяющие условию. Итог по ресурсам в иерархических записях и общий итог по группировки учитывает условие.
- Иерархия — условие применяется как к не иерархическим, как и к иерархическим записям. Итог по ресурсам в иерархических записях и общий итог по группировке отбор не учитывает.
- Только иерархия — условие применяется только к иерархическим записям. Итог по ресурсам в иерархических записях и общий итог по группировке отбор не учитывает.
В следующем примере в результат отчета выдаются четыре группировки по полю Номенклатура. При этом в первой группировке выводятся записи без отбора, а в остальных группировках выдаются записи с отбором Количество остаток больше 40, с типами применения Без иерархии, Иерархия, Только иерархия.
Без отбора |
Номенклатура | Количество остаток |
Клавиатура Keyboard PS/2 | 16,00 |
Клавиатуры | 65,00 |
Клавиатура Apple Pro Keyboards | 8,00 |
Клавиатура Linkworld LK-601 PS/2 | 35,00 |
Клавиатура LK-601 KB-2 000 PS/2 | 22,00 |
Мониторы | 14,00 |
Монитор 15′ LG Studioworks 575N | 4,00 |
Монитор 17′ Philips 107S20 | 1,00 |
Монитор 19′ Hitachi CM715ET | 8,00 |
Монитор LCD 22′ M8537ZM/A | 1,00 |
Мыши | 89,00 |
Мышь LOGITECH M-S48 PS/2 | 6,00 |
Мышь OK-720 Mouse A4Tech PS/2 | 1,00 |
Оптические мыши | 82,00 |
Мышь 2-кноп A4Tech PS/2 | 16,00 |
Мышь GENIUS «EASY» (3 кнопки), | 42,00 |
Мышь Ice Mouse MUS-2 | 24,00 |
Ноутбуки | 5,00 |
Ноутбук Rover Computers Explorer | 1,00 |
Ноутбук Rover Computers Navigator KT7 | 4,00 |
Принтеры | 7,00 |
Лазерный принтер 5250197-203 Minolta-QMS | 2,00 |
Лазерный принтер Canon LBP-810 | 3,00 |
Лазерный принтер HP LaserJet 2200 | 2,00 |
Программное обеспечение | 93,00 |
1С:Аспект 7.7 | 13,00 |
1С:Бухгалтерия 7.7 Базовая версия | 16,00 |
1С:Бухгалтерия 7.7 Стандартная версия | 6,00 |
1С:Бухгалтерия ПРОФ версия 7.7 | 4,00 |
1С:Торговля и Склад 7.7 Проф | 4,00 |
Windows XP Home Edition Russian CD | 17,00 |
Windows XP Home Edition Russian UPG CD | 29,00 |
Windows XP Professional Russian CD | 4,00 |
Системные блоки и комплектующие | 21,00 |
Сист. блок Hewlett-Packard Brio BA410 | 10,00 |
Сист. блок Hewlett-Packard Vectra VL420 | 3,00 |
Сист. блок IBM NetVista A22p | 5,00 |
Сист. блок IBM NetVista M41 | 3,00 |
Итого | 310,00 |
Без иерархии | |
Отбор: Количество остаток Больше «40» |
Номенклатура | Количество остаток |
Мыши | 42,00 |
Оптические мыши | 42,00 |
Мышь GENIUS «EASY» (3 кнопки), | 42,00 |
Итого | 42,00 |
Иерархия | |
Отбор: Количество остаток Больше «40» |
Номенклатура | Количество остаток |
Клавиатуры | 65,00 |
Мыши | 89,00 |
Оптические мыши | 82,00 |
Мышь GENIUS «EASY» (3 кнопки), | 42,00 |
Программное обеспечение | 93,00 |
Итого | 310,00 |
Только иерархия | |
Отбор: Количество остаток Больше «40» |
Номенклатура | Количество остаток |
Клавиатура Keyboard PS/2 | 16,00 |
Клавиатуры | 65,00 |
Клавиатура Apple Pro Keyboards | 8,00 |
Клавиатура Linkworld LK-601 PS/2 | 35,00 |
Клавиатура LK-601 KB-2 000 PS/2 | 22,00 |
Мыши | 89,00 |
Мышь LOGITECH M-S48 PS/2 | 6,00 |
Мышь OK-720 Mouse A4Tech PS/2 | 1,00 |
Оптические мыши | 82,00 |
Мышь 2-кноп A4Tech PS/2 | 16,00 |
Мышь GENIUS «EASY» (3 кнопки), | 42,00 |
Мышь Ice Mouse MUS-2 | 24,00 |
Программное обеспечение | 93,00 |
1С:Аспект 7.7 | 13,00 |
1С:Бухгалтерия 7.7 Базовая версия | 16,00 |
1С:Бухгалтерия 7.7 Стандартная версия | 6,00 |
1С:Бухгалтерия ПРОФ версия 7.7 | 4,00 |
1С:Торговля и Склад 7.7 Проф | 4,00 |
Windows XP Home Edition Russian CD | 17,00 |
Windows XP Home Edition Russian UPG CD | 29,00 |
Windows XP Professional Russian CD | 4,00 |
Итого | 310,00 |
Особенности отбора по полям — ресурсам
При использовании отбора на поля — ресурсы следует учитывать, что в случае если отбор на поле — ресурс был добавлен в главный отбор отчета, то этот отбор, будет помещен в текст запроса, т.е. фильтроваться будут именно детальные записи, которые получаются из запроса, а не итоги ресурса для группировок.
Например, если используется следующий запрос:
И в главный отбор добавляется условие на поле КоличествоОборот, то в результирующий запрос будет добавлено условие
Т.к. в запросе используется виртуальная таблица Обороты, которая выдает агрегированные данные в зависимости от использованных полей, то результат отчета будет зависеть от того, какие поля будут задействованы в настройках отчета. Так, если в отчете задействовано только поле Контрагент, то в результат будут выдаваться записи для контрагентов, по которым оборот превышал заданную величину, а если задействованы поля Контрагент и Номенклатура, то в результат будут выдаваться записи для сочетаний контрагентов и номенклатуры, по которым оборот превысил заданную величину.
Таким образом, если в отчете требуется получить только записи группировки, в которых значение ресурса удовлетворяет некоторому условию, то следует добавлять отбор в группировку, а не в главный отбор.
Например, для того, чтобы в отчете, в группировке номенклатуры, получить номенклатуру, с оборотом, превышающим некоторую величину, то отбор следует применять в группировке по номенклатуре.
Источник