Меню

1с скд не работает отбор по ресурсу

СКД-как реализовать отбор по полю-ресурсу

Привет
нужен отчет на СКД на базе нижеприведенного запроса — по РегистрНакопления.Продажи по всем измерениям кроме Номенклатуры

ВЫБРАТЬ РАЗРЕШЕННЫЕ
НАЧАЛОПЕРИОДА(ПродажиОбороты.ЗаказПокупателя.Дата, МЕСЯЦ) КАК МесяцПродаж,
ПродажиОбороты.Контрагент КАК Контрагент,
ПродажиОбороты.ЗаказПокупателя КАК ЗаказПокупателя,
ПродажиОбороты.КоличествоОборот КАК КоличествоОборот,
ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот,
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 Стандартная версия».

Применение отбора в запросах

Если возможно, условия из главного отбора помещается в текст запроса. Отбор может быть помещен в условие виртуальной таблицы, в предложение ГДЕ, в предложение ИМЕЮЩИЕ, в зависимости от того, на какое поле накладывается отбор.

В условие виртуальной таблицы отбор помещается в случае если в исходном запросе набора данных явно сказано, что отбор на данное поле нужно помещать в условие виртуальной таблицы или для набора данных указано автоматическое заполнение полей.

Пример явного указания необходимости помещения условия на поле Номенклатура в параметр виртуальной таблицы:

Сгенерированный запрос набора данных при применении отбора на поле Номенклатура может выглядеть следующим образом:

Как видно, отбор помещен в условие виртуальной таблицы.

В предложение ГДЕ условие помещается в случае если в исходном запросе набора данных явно сказано, что отбор на поле нужно помещать в предложение ГДЕ или при автоматическом заполнении. Если для набора данных указано автоматическое заполнение, то условие будет помещаться в предложение ГДЕ только в случае если отбор на поле не применилось в условии виртуальной таблицы, которая не находится в левой части соединения.

Пример. В наборе данных используется следующий запрос и используется автоматическое заполнение:

Если в отбор добавить условие на поля Номенклатура и Склад, то результирующий запрос будет выглядеть так:

Как видно, отбор на поле Номенклатура был помещен в параметры виртуальных таблиц и т.к. отбор на данное поле был помещен в таблицу, которая не находится в левом соединении (ПродажиОбороты), то отбор на это поле не был помещен предложение ГДЕ. Условие же на поле Склад было помещено как в виртуальную таблицу, так и в предложение ГДЕ, т.к. таблица УчетНоменклатурыОстатки, в условие которой помещен отбор, находится в левом соединении.

Если бы в исходном запросе было явное указание того, что условие на поле Номенклатуры нужно помещать в предложение ГДЕ, как в следующем запросе:

То отбор на данное поле был бы добавлен в предложение ГДЕ результирующего запроса вне зависимости от того, был ли отбор помещен в условие виртуальной таблицы. Для выше описанного примера результирующий запрос бы выглядел следующим образом:

В предложение ИМЕЮЩИЕ условие помещается в случае если отбор накладывается на поле, выражение которого содержит агрегатную функцию.

Например, если исходный запрос, с автоматическим заполнением, выглядит так:

То при применении отбора на поле СуммаДок результирующий запрос будет выглядеть так:

Отбор, применяемый не в запросе

В некоторых ситуациях поместить условие в текст запроса не удается. Такое может произойти в случае если в условии используются поля из нескольких наборов данных или в условии используется вычисляемое или пользовательское поле, содержащее выражения, которые не могут быть представлены на языке запросов. В этом случае выражение условие помещается в свойство Отбор сгенерированного набора данных макета компоновки данных. Если в условии использовались поля из нескольких наборов данных, то условие будет помещаться в последний по связи дочерний набор данных, поле которого используется в условии. Например, если в схеме определены наборы данных Продажи и связанный с ним набор данных Остатки и в условии используются поля из обоих наборов данных, то условие будет помещено в свойство Отбор набора данных Остатки.

Особенности использования отбора при работе с несколькими наборами данных

При использовании в схеме нескольких наборов данных, если в главном отборе накладывается условие на поле некоторого дочернего набора данных, то в сгенерированном макете компоновки данных дочерний набор данных будет связан с родительским набором данных с типом связи «Внутренняя». Родительские наборы данных набора данных, к которому применяется условие, также будут связаны со своими родительскими наборами данных с типом связи «Внутренняя». Тип связи «Внутренняя» означает, что запись родительского набора данных будет выводиться в результат отчета только в случае, если в дочернем наборе данных будут найдены связанные записи. Например, если в схеме определены наборы данных Продажи и связанный с ним набор данных Остатки и в условии используются поле из набора данных Остатки, то в сгенерированном макете компоновки данных связь между этими наборами данных будет определена с типом связи «Внутренняя». Если бы при этом набор данных Продажи был в свою очередь приемником связи для некоторого другого набора данных, то и эта связь также была бы сгенерирована с типом связи «Внутренняя».

Читайте также:  Не работает 2 цилиндр приора что может быть

Отбор группировок

Отбор группировок используется для фильтрации записей, выводимых в группировке. При этом отбор распространяется на саму группировку, на вложенные группировки, и не влияет на другие группировки имеющиеся в отчете.

Например. В схеме компоновки опишем набор данных, который получает остатки номенклатуры по складам.

В настройках отчета создадим следующую структуру:

В первую группировку по полю Номенклатура добавим условие Склад Равно «Основной склад». В группировку по полю Склад добавим условие Склад Не Равно «Основной склад».

Результат отчета будет выглядеть следующим образом:

Отбор: Склад Равно «Основной склад»
Номенклатура Количество остаток
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

Особенности отбора по полям — ресурсам

При использовании отбора на поля — ресурсы следует учитывать, что в случае если отбор на поле — ресурс был добавлен в главный отбор отчета, то этот отбор, будет помещен в текст запроса, т.е. фильтроваться будут именно детальные записи, которые получаются из запроса, а не итоги ресурса для группировок.

Например, если используется следующий запрос:

И в главный отбор добавляется условие на поле КоличествоОборот, то в результирующий запрос будет добавлено условие

Т.к. в запросе используется виртуальная таблица Обороты, которая выдает агрегированные данные в зависимости от использованных полей, то результат отчета будет зависеть от того, какие поля будут задействованы в настройках отчета. Так, если в отчете задействовано только поле Контрагент, то в результат будут выдаваться записи для контрагентов, по которым оборот превышал заданную величину, а если задействованы поля Контрагент и Номенклатура, то в результат будут выдаваться записи для сочетаний контрагентов и номенклатуры, по которым оборот превысил заданную величину.

Таким образом, если в отчете требуется получить только записи группировки, в которых значение ресурса удовлетворяет некоторому условию, то следует добавлять отбор в группировку, а не в главный отбор.

Например, для того, чтобы в отчете, в группировке номенклатуры, получить номенклатуру, с оборотом, превышающим некоторую величину, то отбор следует применять в группировке по номенклатуре.

Источник

Adblock
detector