Особенности автозаполнения в СКД

На 2ые сутки борьбы с отчетом, я понял что такое галочка Автозаполнение в СКД. Жесть конечно, теперь буду знать. http://its.1c.ru/db/metod81#content:2696:1

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

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

Главный отбор отчета

Главный отбор влияет на получение данных из наборов,  для вывода в отчет. Например, если в главный отбор добавить условие Номенклатура Равно «1С:Бухгалтерия  7.7 Стандартная версия», то в отчет будут выдаваться только записи, у которых поле Номенклатура имеет значение «1С:Бухгалтерия  7.7 Стандартная версия».

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

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

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

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

Копировать в буфер обмена

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

Копировать в буфер обмена

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

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

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

Копировать в буфер обмена

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

Копировать в буфер обмена

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

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

Копировать в буфер обмена

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

Копировать в буфер обмена

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

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

Копировать в буфер обмена

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

Копировать в буфер обмена

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

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

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

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

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

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

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

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

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

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

Как видно, в первой группировке выданы остатки номенклатуры по складу «Основной склад». В следующих группировках выдаются остатки номенклатуры по другим складам.

Тип применения отбора группировок

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

Возможны три варианта типа применения:

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

В следующем примере в результат отчета выдаются четыре группировки по полю Номенклатура. При этом в первой группировке выводятся записи без отбора, а в остальных группировках выдаются записи с отбором Количество остаток больше 40, с типами применения Без иерархии, Иерархия, Только иерархия.

Без отбора
НоменклатураКоличество остаток
Клавиатура Keyboard PS/216,00
Клавиатуры65,00
Клавиатура Apple Pro Keyboards8,00
Клавиатура Linkworld LK-601 PS/235,00
Клавиатура LK-601 KB-2 000 PS/222,00
Мониторы14,00
Монитор 15′ LG Studioworks 575N4,00
Монитор 17′ Philips 107S201,00
Монитор 19′ Hitachi CM715ET8,00
Монитор LCD 22′ M8537ZM/A1,00
Мыши89,00
Мышь LOGITECH M-S48 PS/26,00
Мышь OK-720 Mouse A4Tech PS/21,00
Оптические мыши82,00
Мышь 2-кноп A4Tech PS/216,00
Мышь GENIUS «EASY» (3 кнопки),42,00
Мышь Ice Mouse MUS-224,00
Ноутбуки5,00
Ноутбук Rover Computers Explorer1,00
Ноутбук Rover Computers Navigator KT74,00
Принтеры7,00
Лазерный принтер 5250197-203 Minolta-QMS2,00
Лазерный принтер Canon LBP-8103,00
Лазерный принтер HP LaserJet 22002,00
Программное обеспечение93,00
1С:Аспект 7.713,00
1С:Бухгалтерия 7.7 Базовая версия16,00
1С:Бухгалтерия 7.7 Стандартная версия6,00
1С:Бухгалтерия ПРОФ версия 7.74,00
1С:Торговля и Склад 7.7 Проф4,00
Windows XP Home Edition Russian CD17,00
Windows XP Home Edition Russian UPG CD29,00
Windows XP Professional Russian CD4,00
Системные блоки и комплектующие21,00
Сист. блок Hewlett-Packard Brio BA41010,00
Сист. блок Hewlett-Packard Vectra VL4203,00
Сист. блок IBM NetVista A22p5,00
Сист. блок IBM NetVista M413,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/216,00
Клавиатуры65,00
Клавиатура Apple Pro Keyboards8,00
Клавиатура Linkworld LK-601 PS/235,00
Клавиатура LK-601 KB-2 000 PS/222,00
Мыши89,00
Мышь LOGITECH M-S48 PS/26,00
Мышь OK-720 Mouse A4Tech PS/21,00
Оптические мыши82,00
Мышь 2-кноп A4Tech PS/216,00
Мышь GENIUS «EASY» (3 кнопки),42,00
Мышь Ice Mouse MUS-224,00
Программное обеспечение93,00
1С:Аспект 7.713,00
1С:Бухгалтерия 7.7 Базовая версия16,00
1С:Бухгалтерия 7.7 Стандартная версия6,00
1С:Бухгалтерия ПРОФ версия 7.74,00
1С:Торговля и Склад 7.7 Проф4,00
Windows XP Home Edition Russian CD17,00
Windows XP Home Edition Russian UPG CD29,00
Windows XP Professional Russian CD4,00
Итого310,00

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

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

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

Копировать в буфер обмена

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

Копировать в буфер обмена

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

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

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *