- СКД-как реализовать отбор по полю-ресурсу
- Как заставить СКД правильно отбирать по ресурсам при ОБЪЕДИНЕНИИ наборов
- Особенности использования отборов в системе компоновки данных
- Главный отбор отчета
- Применение отбора в запросах
- Отбор, применяемый не в запросе
- Особенности использования отбора при работе с несколькими наборами данных
- Отбор группировок
- Тип применения отбора группировок
- Особенности отбора по полям — ресурсам
СКД-как реализовать отбор по полю-ресурсу
Привет
нужен отчет на СКД на базе нижеприведенного запроса — по РегистрНакопления.Продажи по всем измерениям кроме Номенклатуры
ВЫБРАТЬ РАЗРЕШЕННЫЕ
НАЧАЛОПЕРИОДА(ПродажиОбороты.ЗаказПокупателя.Дата, МЕСЯЦ) КАК МесяцПродаж,
ПродажиОбороты.Контрагент КАК Контрагент,
ПродажиОбороты.ЗаказПокупателя КАК ЗаказПокупателя,
ПродажиОбороты.КоличествоОборот КАК КоличествоОборот,
ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот,
1 КАК КвоЗаказов
<ВЫБРАТЬ
МесяцПродаж,
Контрагент.*,
ЗаказПокупателя.*,
Номенклатура.*,
КоличествоОборот,
СтоимостьОборот,
КвоЗаказов КАК КвоЗаказов>
ИЗ
РегистрНакопления.Продажи.Обороты(, ,, ЗаказПокупателя В
(ВЫБРАТЬ РАЗЛИЧНЫЕ
Продажи.ЗаказПокупателя
ИЗ
РегистрНакопления.Продажи КАК Продажи
ГДЕ
Продажи.ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя
И Продажи.ЗаказПокупателя.Дата МЕЖДУ &НачалоПериода И &КонецПериода) ) КАК ПродажиОбороты
<ГДЕ
ПродажиОбороты.Контрагент.*,
ПродажиОбороты.ЗаказПокупателя.*,
ПродажиОбороты.КоличествоОборот,
ПродажиОбороты.СтоимостьОборот>
в отчет надо вывести такие группировки
-Контрагент
-МесяцПродаж
-ЗаказПокупателя
Собственно отчет на СКД сделал, он работает.
Но заказчику захотелось, чтобы был отбор по ресурсу КвоЗаказов в разрезе группировок МесяцПродаж и Контрагент (к примеру: выбрать только контрагентов,у которых за месяц продаж было более 100 заказов).
Подскажите пож-та как реализовать такое на СКД, чтобы был отбор по ресурсу, но не по детальным записям, а по вышестоящим итогам группировок.
Спасибо
Источник
Как заставить СКД правильно отбирать по ресурсам при ОБЪЕДИНЕНИИ наборов
Дано — СКД с объединением двух наборов данных, например вот такая https://yadi.sk/d/0hqGXPlq37vHht (заведется в любой конфигурации, включая пустую).
Если просто добавить поле «Ресурс» в отборы, то СКД воткнет отбор в предложение ГДЕ в каждом наборе по отдельности. А хочется, чтобы отбор на ресурсы накладывался уже после объединения.
Итого, вопрос: Есть ли у СКД возможность как-то так ее заставить, чтобы отбор на ресурс накладывался уже после объединения?
То есть, например, если выполнить этот отчет без отборов, то будет две строчки (так и надо).
Если наложить отбор «Ресурс >= 2», то будет только одна строчка — из второго набора. Данные первого набора будут отфильтрованы начисто, т.к. первый набор состоит из идентичных строчек, значение ресурса в которых по отдельности меньше 2. Хочется в этом случае тоже видеть две строчки потому, что итог по первому набору таки больше двух.
Происходит это все на 8.3.6.2299 в любом режиме.
Что пробовал:
1. Включить ограничение использования в наборе, но не включать в объединении — это все равно что вообще удалить ресурс из полей отбора.
2. Пользовательское поле — это все равно, что ни чего не делать, отбор накладывается перед объединением.
3. Вычисляемое поле — результат нулевой разного сорта. Чаще всего оно не компонуется, т.к. не может найти поле.
(0) Можно, установить отбор через условное оформление.
Так же можно сперва сформировать ТЗ, а потом поместить его в СКД, в качестве источника данных 😉
(1) отбор через условное оформление. это как?
хочется оставить объединение наборов, т.к. в реальном отчете там их чуток поболе, чем два и объединение с одной стороны упрощает сопровождение отчета, в с другой — если пользователь исключит поля каких-то наборов, то этих наборов и в объединении не будет
1. Имеем СКД с набором данных — запрос.
2. Далее пользователь настраивает компоновщик настроек, в котором имеется отбор, например по наименованию.
3. А Надо , что бы этот отбор применялся лишь к первой таблице.
Можно снять флажок «Автозаполнение» и воспользоваться расширением языка запросов для компоновки данных (это то что в фигурных скобках).
С фигурными скобками пробовал — не помогало. А вот снятие галочки — помогло. Спасибо большое.
(6) (8) это другой вопрос и, как сделать это, я знаю. ЭТо как раз делается путем добавления поля в отборы компоновки — в первой таблице надо добавить, во второй — не добавлять. Автора под вопроса подкосила галочка «Автозаполнение» — ее надо выключить для этого. Или назвать как-то поле отбора по-другому, но тогда пользователю кукушечку снесет.
Вопрос в топике совсем другой.
(11) например бывает так, что данные собираются из базы и внешнего источника, тогда не обойтись без нескольких наборов.
кстати, пример не совсем корректный, я бы в первом наборе добавил «Б», а во втором — «а».
Источник
Особенности использования отборов в системе компоновки данных
В настройках компоновки данных возможно указание главного отбора и отбора группировок. Главный отбор устанавливается для всего отчета в целом. Отбор группировок устанавливается у конкретной группировки. В данной статье описываются особенности работы системы с главным и отборами группировок.
Главный отбор отчета
Главный отбор влияет на получение данных из наборов, для вывода в отчет. Например, если в главный отбор добавить условие Номенклатура Равно «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 |
Особенности отбора по полям — ресурсам
При использовании отбора на поля — ресурсы следует учитывать, что в случае если отбор на поле — ресурс был добавлен в главный отбор отчета, то этот отбор, будет помещен в текст запроса, т.е. фильтроваться будут именно детальные записи, которые получаются из запроса, а не итоги ресурса для группировок.
Например, если используется следующий запрос:
И в главный отбор добавляется условие на поле КоличествоОборот, то в результирующий запрос будет добавлено условие
Т.к. в запросе используется виртуальная таблица Обороты, которая выдает агрегированные данные в зависимости от использованных полей, то результат отчета будет зависеть от того, какие поля будут задействованы в настройках отчета. Так, если в отчете задействовано только поле Контрагент, то в результат будут выдаваться записи для контрагентов, по которым оборот превышал заданную величину, а если задействованы поля Контрагент и Номенклатура, то в результат будут выдаваться записи для сочетаний контрагентов и номенклатуры, по которым оборот превысил заданную величину.
Таким образом, если в отчете требуется получить только записи группировки, в которых значение ресурса удовлетворяет некоторому условию, то следует добавлять отбор в группировку, а не в главный отбор.
Например, для того, чтобы в отчете, в группировке номенклатуры, получить номенклатуру, с оборотом, превышающим некоторую величину, то отбор следует применять в группировке по номенклатуре.
Источник