|
СКД Глюк платформы ? Параметры виртуальных таблиц в СКД и ОТБОР | ☑ | ||||||
---|---|---|---|---|---|---|---|---|
0
ProDeveloper
29.05.12
✎
17:02
|
Уважаемые ответьте на такой вопрос. Везде утверждается что если при написании запроса в СКД использовать конструкцию {} в параметрах виртуальных таблиц, то СКД сгенерирует запрос таким образом, что сделанный мною отбор в интерфейсе отчета, обязательно попадет в качестве условия в параметры виртуальной таблицы. Ну чтож я проверил, и такое ощущение что этого не происходит, сперва я написал отчет, где в запросе в параметрах виртуальных таблиц жестко задано условие через &Параметр, потом переписал запрос с использованием конструкции {}, разница по производительности просто небо и земля! Такое ощущение что конструкция {} не работает так как должна, потому что по производительности это тоже самое, что сперва получить все записи таблицы, а уж потом на неё наложить условие ГДЕ.
Примеры: Производительность: 1 Вариант время формирования отчета = 3 сек 2 Вариант время формирования отчета > 20 сек 1 Вариант - В параметрах виртуальных таблиц в качестве условий используется обычные параметры -------------------------------------------------------------------------------------------------------------------------------------------------- ВЫБРАТЬ РАЗРЕШЕННЫЕ ПродажиОбороты.Период, ПродажиОбороты.Регистратор КАК Регистратор, ПродажиОбороты.Номенклатура КАК Номенклатура, ПродажиОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, ПродажиОбороты.ЗаказПокупателя КАК ЗаказПокупателя, ПродажиОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента, ПродажиОбороты.ДокументПродажи КАК ДокументПродажи, ПродажиОбороты.Подразделение КАК Подразделение, ПродажиОбороты.Организация КАК Организация, ПродажиОбороты.Контрагент КАК Контрагент, ПродажиОбороты.ДопАналитикаОстатков КАК ДопАналитикаОстатков, ПродажиОбороты.КоличествоОборот, ПродажиОбороты.СтоимостьОборот, ПродажиОбороты.СтоимостьБезСкидокОборот, ПродажиОбороты.НДСОборот, 0 КАК Затрата ПОМЕСТИТЬ Продажи ИЗ РегистрНакопления.Продажи.Обороты( &НачалоПериода, &КонецПериода, Регистратор, Организация В (&Организация) И Подразделение В ИЕРАРХИИ (&Подразделение) И Номенклатура В ИЕРАРХИИ (&Номенклатура)) КАК ПродажиОбороты ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ КРАТАтхЗатратыНаПродажуОбороты.Период, КРАТАтхЗатратыНаПродажуОбороты.Регистратор, КРАТАтхЗатратыНаПродажуОбороты.Номенклатура, КРАТАтхЗатратыНаПродажуОбороты.ХарактеристикаНоменклатуры, КРАТАтхЗатратыНаПродажуОбороты.ЗаказПокупателя, КРАТАтхЗатратыНаПродажуОбороты.ДоговорКонтрагента, КРАТАтхЗатратыНаПродажуОбороты.ДокументПродажи, КРАТАтхЗатратыНаПродажуОбороты.Подразделение, КРАТАтхЗатратыНаПродажуОбороты.Организация, КРАТАтхЗатратыНаПродажуОбороты.Контрагент, КРАТАтхЗатратыНаПродажуОбороты.ДопАналитикаОстатков, 0, 0, 0, 0, КРАТАтхЗатратыНаПродажуОбороты.СуммаОборот ИЗ РегистрНакопления.КРАТАтхЗатратыНаПродажу.Обороты( &НачалоПериода, &КонецПериода, Регистратор, ДоговорКонтрагента.ВидВзаиморасчетов = &ПремииКлиентам И Организация В (&Организация) И Подразделение В ИЕРАРХИИ (&Подразделение) И Номенклатура В ИЕРАРХИИ (&Номенклатура)) КАК КРАТАтхЗатратыНаПродажуОбороты ИНДЕКСИРОВАТЬ ПО Регистратор, Номенклатура, ХарактеристикаНоменклатуры, ДопАналитикаОстатков ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗРЕШЕННЫЕ Продажи.Период, Продажи.Регистратор, Продажи.Номенклатура, Продажи.ХарактеристикаНоменклатуры, КРАТАДопАналитикаОстатков.Тара, КРАТАДопАналитикаОстатков.Фасовка, КРАТАДопАналитикаОстатков.Концентрация, Продажи.ЗаказПокупателя, Продажи.ДоговорКонтрагента, Продажи.ДокументПродажи, Продажи.Подразделение, Продажи.Организация, Продажи.Контрагент, Продажи.ДопАналитикаОстатков, ЕСТЬNULL(Продажи.КоличествоОборот, 0) КАК КоличествоПродажи, ЕСТЬNULL(Продажи.СтоимостьОборот, 0) КАК СуммаПродажи, ВЫБОР КОГДА ПродажиСебестоимостьОбороты.КоличествоОборот > 0 ТОГДА ЕСТЬNULL(ПродажиСебестоимостьОбороты.СтоимостьОборот, 0) / ПродажиСебестоимостьОбороты.КоличествоОборот * ЕСТЬNULL(Продажи.КоличествоОборот, 0) ИНАЧЕ ЕСТЬNULL(ПродажиСебестоимостьОбороты.СтоимостьОборот, 0) КОНЕЦ КАК Себестоимость, ЕСТЬNULL(Продажи.Затрата, 0) КАК Затрата, ЕСТЬNULL(Продажи.СтоимостьБезСкидокОборот, 0) КАК СуммаПродажиБезСкидок, ЕСТЬNULL(Продажи.НДСОборот, 0) КАК НДССПродажи ИЗ Продажи КАК Продажи ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КРАТАДопАналитикаОстатков КАК КРАТАДопАналитикаОстатков ПО Продажи.ДопАналитикаОстатков = КРАТАДопАналитикаОстатков.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПродажиСебестоимость.Обороты( &НачалоПериода, &КонецПериода, Регистратор, (Номенклатура, ХарактеристикаНоменклатуры) В (ВЫБРАТЬ РАЗЛИЧНЫЕ Продажи.Номенклатура, Продажи.ХарактеристикаНоменклатуры ИЗ Продажи КАК Продажи)) КАК ПродажиСебестоимостьОбороты ПО Продажи.Номенклатура = ПродажиСебестоимостьОбороты.Номенклатура И Продажи.ХарактеристикаНоменклатуры = ПродажиСебестоимостьОбороты.ХарактеристикаНоменклатуры И Продажи.Регистратор = ПродажиСебестоимостьОбороты.Регистратор И Продажи.ДопАналитикаОстатков = ПродажиСебестоимостьОбороты.ДопАналитикаОстатков 2 Вариант - В параметрах виртуальных таблиц в качестве условий используется конструкция {}, АВТОЗАПОЛНЕНИЕ = ЛОЖЬ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ВЫБРАТЬ РАЗРЕШЕННЫЕ ПродажиОбороты.Период КАК Период, ПродажиОбороты.Регистратор КАК Регистратор, ПродажиОбороты.Номенклатура КАК Номенклатура, ПродажиОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, ПродажиОбороты.ЗаказПокупателя КАК ЗаказПокупателя, ПродажиОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента, ПродажиОбороты.ДокументПродажи КАК ДокументПродажи, ПродажиОбороты.Подразделение КАК Подразделение, ПродажиОбороты.Организация КАК Организация, ПродажиОбороты.Контрагент КАК Контрагент, ПродажиОбороты.ДопАналитикаОстатков КАК ДопАналитикаОстатков, ПродажиОбороты.КоличествоОборот КАК КоличествоОборот, ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот, ПродажиОбороты.СтоимостьБезСкидокОборот КАК СтоимостьБезСкидокОборот, ПродажиОбороты.НДСОборот КАК НДСОборот, 0 КАК Затрата ПОМЕСТИТЬ Продажи {ВЫБРАТЬ Период, Регистратор.*, Номенклатура.*, ХарактеристикаНоменклатуры.*, ЗаказПокупателя.*, ДоговорКонтрагента.*, ДокументПродажи.*, Подразделение.*, Организация.*, Контрагент.*, ДопАналитикаОстатков.*, КоличествоОборот, СтоимостьОборот, СтоимостьБезСкидокОборот, НДСОборот, Затрата} ИЗ РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Регистратор, {(Организация).*, (Подразделение).*, (Номенклатура).*}) КАК ПродажиОбороты {ГДЕ ПродажиОбороты.Период, ПродажиОбороты.Регистратор.*, ПродажиОбороты.Номенклатура.*, ПродажиОбороты.ХарактеристикаНоменклатуры.*, ПродажиОбороты.ЗаказПокупателя.*, ПродажиОбороты.ДоговорКонтрагента.*, ПродажиОбороты.ДокументПродажи.*, ПродажиОбороты.Подразделение.*, ПродажиОбороты.Организация.*, ПродажиОбороты.Контрагент.*, ПродажиОбороты.ДопАналитикаОстатков.*, ПродажиОбороты.КоличествоОборот, ПродажиОбороты.СтоимостьОборот, ПродажиОбороты.СтоимостьБезСкидокОборот, ПродажиОбороты.НДСОборот, (0) КАК Затрата} ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ КРАТАтхЗатратыНаПродажуОбороты.Период, КРАТАтхЗатратыНаПродажуОбороты.Регистратор, КРАТАтхЗатратыНаПродажуОбороты.Номенклатура, КРАТАтхЗатратыНаПродажуОбороты.ХарактеристикаНоменклатуры, КРАТАтхЗатратыНаПродажуОбороты.ЗаказПокупателя, КРАТАтхЗатратыНаПродажуОбороты.ДоговорКонтрагента, КРАТАтхЗатратыНаПродажуОбороты.ДокументПродажи, КРАТАтхЗатратыНаПродажуОбороты.Подразделение, КРАТАтхЗатратыНаПродажуОбороты.Организация, КРАТАтхЗатратыНаПродажуОбороты.Контрагент, КРАТАтхЗатратыНаПродажуОбороты.ДопАналитикаОстатков, 0, 0, 0, 0, КРАТАтхЗатратыНаПродажуОбороты.СуммаОборот ИЗ РегистрНакопления.КРАТАтхЗатратыНаПродажу.Обороты(&НачалоПериода, &КонецПериода, Регистратор, {(Организация).*, (Подразделение).*, (Номенклатура).*}) КАК КРАТАтхЗатратыНаПродажуОбороты {ГДЕ КРАТАтхЗатратыНаПродажуОбороты.Период, КРАТАтхЗатратыНаПродажуОбороты.Регистратор.*, КРАТАтхЗатратыНаПродажуОбороты.Номенклатура.*, КРАТАтхЗатратыНаПродажуОбороты.ХарактеристикаНоменклатуры.*, КРАТАтхЗатратыНаПродажуОбороты.ЗаказПокупателя.*, КРАТАтхЗатратыНаПродажуОбороты.ДоговорКонтрагента.*, КРАТАтхЗатратыНаПродажуОбороты.ДокументПродажи.*, КРАТАтхЗатратыНаПродажуОбороты.Подразделение.*, КРАТАтхЗатратыНаПродажуОбороты.Организация.*, КРАТАтхЗатратыНаПродажуОбороты.Контрагент.*, КРАТАтхЗатратыНаПродажуОбороты.ДопАналитикаОстатков.*, (0) КАК Затрата, КРАТАтхЗатратыНаПродажуОбороты.СуммаОборот} ИНДЕКСИРОВАТЬ ПО Регистратор, Номенклатура, ХарактеристикаНоменклатуры, ДопАналитикаОстатков ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗРЕШЕННЫЕ Продажи.Период КАК Период, Продажи.Регистратор КАК Регистратор, Продажи.Номенклатура КАК Номенклатура, Продажи.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, КРАТАДопАналитикаОстатков.Тара КАК Тара, КРАТАДопАналитикаОстатков.Фасовка КАК Фасовка, КРАТАДопАналитикаОстатков.Концентрация КАК Концентрация, Продажи.ЗаказПокупателя КАК ЗаказПокупателя, Продажи.ДоговорКонтрагента КАК ДоговорКонтрагента, Продажи.ДокументПродажи КАК ДокументПродажи, Продажи.Подразделение КАК Подразделение, Продажи.Организация КАК Организация, Продажи.Контрагент КАК Контрагент, Продажи.ДопАналитикаОстатков КАК ДопАналитикаОстатков, ЕСТЬNULL(Продажи.КоличествоОборот, 0) КАК КоличествоПродажи, ЕСТЬNULL(Продажи.СтоимостьОборот, 0) КАК СуммаПродажи, ВЫБОР КОГДА ПродажиСебестоимостьОбороты.КоличествоОборот > 0 ТОГДА ЕСТЬNULL(ПродажиСебестоимостьОбороты.СтоимостьОборот, 0) / ПродажиСебестоимостьОбороты.КоличествоОборот * ЕСТЬNULL(Продажи.КоличествоОборот, 0) ИНАЧЕ ЕСТЬNULL(ПродажиСебестоимостьОбороты.СтоимостьОборот, 0) КОНЕЦ КАК Себестоимость, ЕСТЬNULL(Продажи.Затрата, 0) КАК Затрата, ЕСТЬNULL(Продажи.СтоимостьБезСкидокОборот, 0) КАК СуммаПродажиБезСкидок, ЕСТЬNULL(Продажи.НДСОборот, 0) КАК НДССПродажи {ВЫБРАТЬ Период, Регистратор.*, Номенклатура.*, ХарактеристикаНоменклатуры.*, Тара.*, Фасовка, Концентрация, ЗаказПокупателя.*, ДоговорКонтрагента.*, ДокументПродажи.*, Подразделение.*, Организация.*, Контрагент.*, ДопАналитикаОстатков.*, КоличествоПродажи, СуммаПродажи, Себестоимость, Затрата, СуммаПродажиБезСкидок, НДССПродажи} ИЗ Продажи КАК Продажи ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КРАТАДопАналитикаОстатков КАК КРАТАДопАналитикаОстатков ПО Продажи.ДопАналитикаОстатков = КРАТАДопАналитикаОстатков.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПродажиСебестоимость.Обороты( &НачалоПериода, &КонецПериода, Регистратор, (Номенклатура, ХарактеристикаНоменклатуры) В (ВЫБРАТЬ РАЗЛИЧНЫЕ Продажи.Номенклатура, Продажи.ХарактеристикаНоменклатуры ИЗ Продажи КАК Продажи) {(Организация).*, (Подразделение).*, (Номенклатура).*}) КАК ПродажиСебестоимостьОбороты ПО Продажи.Номенклатура = ПродажиСебестоимостьОбороты.Номенклатура И Продажи.ХарактеристикаНоменклатуры = ПродажиСебестоимостьОбороты.ХарактеристикаНоменклатуры И Продажи.Регистратор = ПродажиСебестоимостьОбороты.Регистратор И Продажи.ДопАналитикаОстатков = ПродажиСебестоимостьОбороты.ДопАналитикаОстатков {ГДЕ Продажи.Период, Продажи.Регистратор.*, Продажи.Номенклатура.*, Продажи.ХарактеристикаНоменклатуры.*, КРАТАДопАналитикаОстатков.Тара.*, КРАТАДопАналитикаОстатков.Фасовка, КРАТАДопАналитикаОстатков.Концентрация, Продажи.ЗаказПокупателя.*, Продажи.ДоговорКонтрагента.*, Продажи.ДокументПродажи.*, Продажи.Подразделение.*, Продажи.Организация.*, Продажи.Контрагент.*, Продажи.ДопАналитикаОстатков.*, (ЕСТЬNULL(Продажи.КоличествоОборот, 0)) КАК КоличествоПродажи, (ЕСТЬNULL(Продажи.СтоимостьОборот, 0)) КАК СуммаПродажи, (ВЫБОР КОГДА ПродажиСебестоимостьОбороты.КоличествоОборот > 0 ТОГДА ЕСТЬNULL(ПродажиСебестоимостьОбороты.СтоимостьОборот, 0) / ПродажиСебестоимостьОбороты.КоличествоОборот * ЕСТЬNULL(Продажи.КоличествоОборот, 0) ИНАЧЕ ЕСТЬNULL(ПродажиСебестоимостьОбороты.СтоимостьОборот, 0) КОНЕЦ) КАК Себестоимость, (ЕСТЬNULL(Продажи.Затрата, 0)) КАК Затрата, (ЕСТЬNULL(Продажи.СтоимостьБезСкидокОборот, 0)) КАК СуммаПродажиБезСкидок, (ЕСТЬNULL(Продажи.НДСОборот, 0)) КАК НДССПродажи} |
|||||||
2
Fragster
гуру
29.05.12
✎
17:28
|
конструкция {} убирает автозаполнение на участке кода
СКД работает шикарно, конструкция {} не для этого |
|||||||
9
zzhiraf
30.05.12
✎
12:09
|
(2) Нет, не убирает
СКД работает шикарно, конструкция {} не для этого |
|||||||
11
ProDeveloper
30.05.12
✎
12:59
|
Конструкция для этого и работает шикарррно, просто у меня нетривиальный запрос, где эта тема не проходит.
СКД работает шикарно, конструкция {} не для этого |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |