|
СКД: Проблема при установки фильтра на ресурс | ☑ | ||
---|---|---|---|---|
0
Darklight
29.03.13
✎
13:57
|
Отчет сравнивает данные в БУ и в РАУЗ (в разрезе счета и номенклатуры - группировки)
При расчете ресурса отклонения (в формуле ресурса СКД) используется "сложное" выражение: Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(СтоимостьБУ)","Счет, Номенклатура")) - СУММА(СтоимостьРАУЗБУ) Применение ВычислитьВыражениеСГруппировкойМассив вызвано тем, что детализация в РАУЗ выше, чем в БУ и итоги по БУ по этой детализации (при соединении двух источников данных) при обычном суммировании начинают "задваиваться". Требуется установить фильтр, отбирающий только те данные (группировки), где указанный ресурс не нулевой. Но проблема в том, что при установке ЛЮБОГО отбора (на группировке) на этот ресурс (кроме "не заполнено") никакие группировки этого уровня не выводятся (более высокого уровня группировки выводятся пока на них так же не поставить такой же фильтр). То есть, как только я фильтрую по данному ресурсу - получаю "пустую" выборку. На всякий случай напишу, что без фильтра этот ресурс выводится в отчет без каких-либо проблем (где-то нулевой, где-то заполненный). Но мне нужно отфильтровать вывод строк с нулевым значением этого ресурса. Кто, что-нибудь, может подсказать? Или придётся отдельно вычислять этот ресурс (по указанной формуле для нужного уровня группировки т.е. до номенклатуры и счета) в отдельном подзапросе для всех записей и после соединения с основным запросом отфильтровывать лишнее ещё в самом основном запросе. |
|||
1
Darklight
29.03.13
✎
15:12
|
Совсем упрощённый пример
Запрос для СКД: ВЫБРАТЬ ХозрасчетныйОстатки.Счет КАК Счет, ВЫРАЗИТЬ(ХозрасчетныйОстатки.Субконто1 КАК Справочник.Номенклатура) КАК Номенклатура, ЕСТЬNULL(ХозрасчетныйОстатки.СуммаОстаток, 0) КАК СтоимостьБУ ИЗ РегистрБухгалтерии.Хозрасчетный.Остатки(ДОБАВИТЬКДАТЕ(&Период, ДЕНЬ, 1), {(Счет).* КАК Счет}, , {(ВЫРАЗИТЬ(Субконто1 КАК Справочник.Номенклатура)).* КАК Номенклатура}) КАК ХозрасчетныйОстатки Формула расчета ресурса: Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(СтоимостьБУ)","Счет, Номенклатура")) Структура группировок: Счет Номенклатура Отбор в группировке Номенклатура: Стоимость (БУ) Не равно 0 Выводятся только группировки по "Счет" |
|||
2
Darklight
29.03.13
✎
15:14
|
Схема компоновки в XML формате:
<dataCompositionSchema xmlns="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcscom="http://v8.1c.ru/8.1/data-composition-system/common" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <dataSource> <name>ИсточникДанных1</name> <dataSourceType>Local</dataSourceType> </dataSource> <dataSet xsi:type="DataSetQuery"> <name>НаборДанных1</name> <field xsi:type="DataSetFieldField"> <dataPath>Субконто1</dataPath> <field>Субконто1</field> </field> <field xsi:type="DataSetFieldField"> <dataPath>Субконто2</dataPath> <field>Субконто2</field> </field> <field xsi:type="DataSetFieldField"> <dataPath>Субконто3</dataPath> <field>Субконто3</field> </field> <field xsi:type="DataSetFieldField"> <dataPath>Валюта</dataPath> <field>Валюта</field> </field> <field xsi:type="DataSetFieldField"> <dataPath>Номенклатура</dataPath> <field>Номенклатура</field> <role> <dcscom:dimension>true</dcscom:dimension> <dcscom:ignoreNullValues>true</dcscom:ignoreNullValues> </role> </field> <field xsi:type="DataSetFieldField"> <dataPath>Организация</dataPath> <field>Организация</field> </field> <field xsi:type="DataSetFieldField"> <dataPath>СтоимостьБУ</dataPath> <field>СтоимостьБУ</field> <title xsi:type="v8:LocalStringType"> <v8:item> <v8:lang>ru</v8:lang> <v8:content>Стоимость (БУ)</v8:content> </v8:item> </title> </field> <field xsi:type="DataSetFieldField"> <dataPath>Счет</dataPath> <field>Счет</field> <role> <dcscom:dimension>true</dcscom:dimension> </role> </field> <dataSource>ИсточникДанных1</dataSource> <query>ВЫБРАТЬ ХозрасчетныйОстатки.Счет КАК Счет, ВЫРАЗИТЬ(ХозрасчетныйОстатки.Субконто1 КАК Справочник.Номенклатура) КАК Номенклатура, ЕСТЬNULL(ХозрасчетныйОстатки.СуммаОстаток, 0) КАК СтоимостьБУ ИЗ РегистрБухгалтерии.Хозрасчетный.Остатки(ДОБАВИТЬКДАТЕ(&Период, ДЕНЬ, 1), {(Счет).* КАК Счет}, , {(ВЫРАЗИТЬ(Субконто1 КАК Справочник.Номенклатура)).* КАК Номенклатура}) КАК ХозрасчетныйОстатки </query> </dataSet> <totalField> <dataPath>СтоимостьБУ</dataPath> <expression>Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(СтоимостьБУ)","Счет, Номенклатура"))</expression> <group>Номенклатура</group> <group>Счет</group> <group>ОбщийИтог</group> </totalField> <parameter> <name>Период</name> <title xsi:type="v8:LocalStringType"> <v8:item> <v8:lang>ru</v8:lang> <v8:content>Период</v8:content> </v8:item> </title> <valueType> <v8:Type>xs:dateTime</v8:Type> <v8:DateQualifiers> <v8:DateFractions>Date</v8:DateFractions> </v8:DateQualifiers> </valueType> <value xsi:type="xs:dateTime">0001-01-01T00:00:00</value> <useRestriction>false</useRestriction> <denyIncompleteValues>true</denyIncompleteValues> <use>Always</use> </parameter> <settingsVariant> <dcsset:name>Основной</dcsset:name> <dcsset:presentation xsi:type="xs:string">Основной</dcsset:presentation> <dcsset:settings xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows"> <dcsset:userFields> <dcsset:item xsi:type="dcsset:UserFieldExpression"> <dcsset:dataPath>ПользовательскиеПоля.Поле1</dcsset:dataPath> <dcsset:lwsTitle> <v8:item> <v8:lang>ru</v8:lang> <v8:content>Отклонение</v8:content> </v8:item> </dcsset:lwsTitle> <dcsset:detailExpression/> <dcsset:detailExpressionPresentation/> <dcsset:totalExpression>Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(СтоимостьБУ)", "Счет, Номенклатура")) - Сумма(СтоимостьРАУЗБУ)</dcsset:totalExpression> <dcsset:totalExpressionPresentation>Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум([Стоимость (БУ)])", "Счет, Номенклатура")) - Сумма([Стоимость РАУЗ (БУ)])</dcsset:totalExpressionPresentation> </dcsset:item> </dcsset:userFields> <dcsset:selection> <dcsset:item xsi:type="dcsset:SelectedItemField"> <dcsset:field>Счет</dcsset:field> </dcsset:item> <dcsset:item xsi:type="dcsset:SelectedItemField"> <dcsset:field>Номенклатура</dcsset:field> </dcsset:item> <dcsset:item xsi:type="dcsset:SelectedItemField"> <dcsset:field>СтоимостьБУ</dcsset:field> <dcsset:lwsTitle> <v8:item> <v8:lang>ru</v8:lang> <v8:content>Регл (БУ)</v8:content> </v8:item> </dcsset:lwsTitle> </dcsset:item> </dcsset:selection> <dcsset:dataParameters> <dcscor:item xsi:type="dcsset:SettingsParameterValue"> <dcscor:parameter>Период</dcscor:parameter> <dcscor:value xsi:type="v8:StandardBeginningDate"> <v8:variant xsi:type="v8:StandardBeginningDateVariant">Custom</v8:variant> <v8:date>2012-10-31T00:00:00</v8:date> </dcscor:value> </dcscor:item> </dcsset:dataParameters> <dcsset:item xsi:type="dcsset:StructureItemGroup"> <dcsset:groupItems> <dcsset:item xsi:type="dcsset:GroupItemField"> <dcsset:field>Счет</dcsset:field> <dcsset:groupType>Items</dcsset:groupType> <dcsset:periodAdditionType>None</dcsset:periodAdditionType> <dcsset:periodAdditionBegin xsi:type="xs:dateTime">0001-01-01T00:00:00</dcsset:periodAdditionBegin> <dcsset:periodAdditionEnd xsi:type="xs:dateTime">0001-01-01T00:00:00</dcsset:periodAdditionEnd> </dcsset:item> </dcsset:groupItems> <dcsset:order> <dcsset:item xsi:type="dcsset:OrderItemAuto"/> </dcsset:order> <dcsset:selection> <dcsset:item xsi:type="dcsset:SelectedItemAuto"/> </dcsset:selection> <dcsset:outputParameters> <dcscor:item xsi:type="dcsset:SettingsParameterValue"> <dcscor:parameter>ВыводитьОтбор</dcscor:parameter> <dcscor:value xsi:type="dcsset:DataCompositionTextOutputType">DontOutput</dcscor:value> </dcscor:item> </dcsset:outputParameters> <dcsset:item xsi:type="dcsset:StructureItemGroup"> <dcsset:groupItems> <dcsset:item xsi:type="dcsset:GroupItemField"> <dcsset:field>Номенклатура</dcsset:field> <dcsset:groupType>Items</dcsset:groupType> <dcsset:periodAdditionType>None</dcsset:periodAdditionType> <dcsset:periodAdditionBegin xsi:type="xs:dateTime">0001-01-01T00:00:00</dcsset:periodAdditionBegin> <dcsset:periodAdditionEnd xsi:type="xs:dateTime">0001-01-01T00:00:00</dcsset:periodAdditionEnd> </dcsset:item> </dcsset:groupItems> <dcsset:filter> <dcsset:item xsi:type="dcsset:FilterItemComparison"> <dcsset:left xsi:type="dcscor:Field">СтоимостьБУ</dcsset:left> <dcsset:comparisonType>Greater</dcsset:comparisonType> <dcsset:right xsi:type="xs:decimal">1</dcsset:right> </dcsset:item> </dcsset:filter> <dcsset:order> <dcsset:item xsi:type="dcsset:OrderItemAuto"/> </dcsset:order> <dcsset:selection> <dcsset:item xsi:type="dcsset:SelectedItemAuto"/> </dcsset:selection> <dcsset:outputParameters> <dcscor:item xsi:type="dcsset:SettingsParameterValue"> <dcscor:parameter>ВыводитьОтбор</dcscor:parameter> <dcscor:value xsi:type="dcsset:DataCompositionTextOutputType">DontOutput</dcscor:value> </dcscor:item> </dcsset:outputParameters> </dcsset:item> </dcsset:item> </dcsset:settings> </settingsVariant> </dataCompositionSchema> |
|||
3
Darklight
29.03.13
✎
15:18
|
Убрал некоторые "лишние" настройки из схемы:
<dataCompositionSchema xmlns="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcscom="http://v8.1c.ru/8.1/data-composition-system/common" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <dataSource> <name>ИсточникДанных1</name> <dataSourceType>Local</dataSourceType> </dataSource> <dataSet xsi:type="DataSetQuery"> <name>НаборДанных1</name> <field xsi:type="DataSetFieldField"> <dataPath>Субконто1</dataPath> <field>Субконто1</field> </field> <field xsi:type="DataSetFieldField"> <dataPath>Субконто2</dataPath> <field>Субконто2</field> </field> <field xsi:type="DataSetFieldField"> <dataPath>Субконто3</dataPath> <field>Субконто3</field> </field> <field xsi:type="DataSetFieldField"> <dataPath>Валюта</dataPath> <field>Валюта</field> </field> <field xsi:type="DataSetFieldField"> <dataPath>Номенклатура</dataPath> <field>Номенклатура</field> <role> <dcscom:dimension>true</dcscom:dimension> <dcscom:ignoreNullValues>true</dcscom:ignoreNullValues> </role> </field> <field xsi:type="DataSetFieldField"> <dataPath>Организация</dataPath> <field>Организация</field> </field> <field xsi:type="DataSetFieldField"> <dataPath>СтоимостьБУ</dataPath> <field>СтоимостьБУ</field> <title xsi:type="v8:LocalStringType"> <v8:item> <v8:lang>ru</v8:lang> <v8:content>Стоимость (БУ)</v8:content> </v8:item> </title> </field> <field xsi:type="DataSetFieldField"> <dataPath>Счет</dataPath> <field>Счет</field> <role> <dcscom:dimension>true</dcscom:dimension> </role> </field> <dataSource>ИсточникДанных1</dataSource> <query>ВЫБРАТЬ ХозрасчетныйОстатки.Счет КАК Счет, ВЫРАЗИТЬ(ХозрасчетныйОстатки.Субконто1 КАК Справочник.Номенклатура) КАК Номенклатура, ЕСТЬNULL(ХозрасчетныйОстатки.СуммаОстаток, 0) КАК СтоимостьБУ ИЗ РегистрБухгалтерии.Хозрасчетный.Остатки(ДОБАВИТЬКДАТЕ(&Период, ДЕНЬ, 1), {(Счет).* КАК Счет}, , {(ВЫРАЗИТЬ(Субконто1 КАК Справочник.Номенклатура)).* КАК Номенклатура}) КАК ХозрасчетныйОстатки </query> </dataSet> <totalField> <dataPath>СтоимостьБУ</dataPath> <expression>Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(СтоимостьБУ)","Счет, Номенклатура"))</expression> </totalField> <parameter> <name>Период</name> <title xsi:type="v8:LocalStringType"> <v8:item> <v8:lang>ru</v8:lang> <v8:content>Период</v8:content> </v8:item> </title> <valueType> <v8:Type>xs:dateTime</v8:Type> <v8:DateQualifiers> <v8:DateFractions>Date</v8:DateFractions> </v8:DateQualifiers> </valueType> <value xsi:type="xs:dateTime">0001-01-01T00:00:00</value> <useRestriction>false</useRestriction> <denyIncompleteValues>true</denyIncompleteValues> <use>Always</use> </parameter> <settingsVariant> <dcsset:name>Основной</dcsset:name> <dcsset:presentation xsi:type="xs:string">Основной</dcsset:presentation> <dcsset:settings xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows"> <dcsset:selection> <dcsset:item xsi:type="dcsset:SelectedItemField"> <dcsset:field>Счет</dcsset:field> </dcsset:item> <dcsset:item xsi:type="dcsset:SelectedItemField"> <dcsset:field>Номенклатура</dcsset:field> </dcsset:item> <dcsset:item xsi:type="dcsset:SelectedItemField"> <dcsset:field>СтоимостьБУ</dcsset:field> </dcsset:item> </dcsset:selection> <dcsset:dataParameters> <dcscor:item xsi:type="dcsset:SettingsParameterValue"> <dcscor:parameter>Период</dcscor:parameter> <dcscor:value xsi:type="v8:StandardBeginningDate"> <v8:variant xsi:type="v8:StandardBeginningDateVariant">Custom</v8:variant> <v8:date>2012-10-31T00:00:00</v8:date> </dcscor:value> </dcscor:item> </dcsset:dataParameters> <dcsset:item xsi:type="dcsset:StructureItemGroup"> <dcsset:groupItems> <dcsset:item xsi:type="dcsset:GroupItemField"> <dcsset:field>Счет</dcsset:field> <dcsset:groupType>Items</dcsset:groupType> <dcsset:periodAdditionType>None</dcsset:periodAdditionType> <dcsset:periodAdditionBegin xsi:type="xs:dateTime">0001-01-01T00:00:00</dcsset:periodAdditionBegin> <dcsset:periodAdditionEnd xsi:type="xs:dateTime">0001-01-01T00:00:00</dcsset:periodAdditionEnd> </dcsset:item> </dcsset:groupItems> <dcsset:order> <dcsset:item xsi:type="dcsset:OrderItemAuto"/> </dcsset:order> <dcsset:selection> <dcsset:item xsi:type="dcsset:SelectedItemAuto"/> </dcsset:selection> <dcsset:item xsi:type="dcsset:StructureItemGroup"> <dcsset:groupItems> <dcsset:item xsi:type="dcsset:GroupItemField"> <dcsset:field>Номенклатура</dcsset:field> <dcsset:groupType>Items</dcsset:groupType> <dcsset:periodAdditionType>None</dcsset:periodAdditionType> <dcsset:periodAdditionBegin xsi:type="xs:dateTime">0001-01-01T00:00:00</dcsset:periodAdditionBegin> <dcsset:periodAdditionEnd xsi:type="xs:dateTime">0001-01-01T00:00:00</dcsset:periodAdditionEnd> </dcsset:item> </dcsset:groupItems> <dcsset:filter> <dcsset:item xsi:type="dcsset:FilterItemComparison"> <dcsset:left xsi:type="dcscor:Field">СтоимостьБУ</dcsset:left> <dcsset:comparisonType>Greater</dcsset:comparisonType> <dcsset:right xsi:type="xs:decimal">1</dcsset:right> </dcsset:item> </dcsset:filter> <dcsset:order> <dcsset:item xsi:type="dcsset:OrderItemAuto"/> </dcsset:order> <dcsset:selection> <dcsset:item xsi:type="dcsset:SelectedItemAuto"/> </dcsset:selection> </dcsset:item> </dcsset:item> </dcsset:settings> </settingsVariant> </dataCompositionSchema> |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |