СКД Глюк платформы ? Параметры виртуальных таблиц в СКД и ОТБОР #613054


#0 by ProDeveloper
Уважаемые ответьте на такой вопрос. Везде утверждается что если при написании запроса в СКД использовать конструкцию {} в параметрах виртуальных таблиц, то СКД сгенерирует запрос таким образом, что сделанный мною отбор в интерфейсе отчета, обязательно попадет в качестве условия в параметры виртуальной таблицы. Ну чтож я проверил, и такое ощущение что этого не происходит, сперва я написал отчет, где в запросе в параметрах виртуальных таблиц жестко задано условие через &Параметр, потом переписал запрос с использованием конструкции {}, разница по производительности просто небо и земля! Такое ощущение что конструкция {} не работает так как должна, потому что по производительности это тоже самое, что сперва получить все записи таблицы, а уж потом на неё наложить условие ГДЕ. Примеры: Производительность: 1 Вариант время формирования отчета = 3 сек                                2 Вариант время формирования отчета > 20 сек 1 Вариант - В параметрах виртуальных таблиц в качестве условий используется обычные параметры -------------------------------------------------------------------------------------------------------------------------------------------------- ПродажиОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, ПродажиОбороты.ЗаказПокупателя КАК ЗаказПокупателя, ПродажиОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента, ПродажиОбороты.ДокументПродажи КАК ДокументПродажи, ПродажиОбороты.ДопАналитикаОстатков КАК ДопАналитикаОстатков, ПродажиОбороты.КоличествоОборот, ПродажиОбороты.СтоимостьОборот, ПродажиОбороты.СтоимостьБезСкидокОборот, ПродажиОбороты.НДСОборот, ИЗ    И Подразделение В ИЕРАРХИИ (&Подразделение) КРАТАтхЗатратыНаПродажуОбороты.Период, КРАТАтхЗатратыНаПродажуОбороты.Регистратор, КРАТАтхЗатратыНаПродажуОбороты.Номенклатура, КРАТАтхЗатратыНаПродажуОбороты.ХарактеристикаНоменклатуры, КРАТАтхЗатратыНаПродажуОбороты.ЗаказПокупателя, КРАТАтхЗатратыНаПродажуОбороты.ДоговорКонтрагента, КРАТАтхЗатратыНаПродажуОбороты.ДокументПродажи, КРАТАтхЗатратыНаПродажуОбороты.Подразделение, КРАТАтхЗатратыНаПродажуОбороты.Организация, КРАТАтхЗатратыНаПродажуОбороты.Контрагент, КРАТАтхЗатратыНаПродажуОбороты.ДопАналитикаОстатков, 0, 0, 0, 0, КРАТАтхЗатратыНаПродажуОбороты.СуммаОборот ИЗ РегистрНакопления.КРАТАтхЗатратыНаПродажу.Обороты(   ДоговорКонтрагента.ВидВзаиморасчетов = &ПремииКлиентам    И Организация В (&Организация)    И Подразделение В ИЕРАРХИИ (&Подразделение)    И Номенклатура В ИЕРАРХИИ (&Номенклатура)) КАК КРАТАтхЗатратыНаПродажуОбороты Номенклатура, ХарактеристикаНоменклатуры, ДопАналитикаОстатков Продажи.Номенклатура, Продажи.ХарактеристикаНоменклатуры, КРАТАДопАналитикаОстатков.Тара, КРАТАДопАналитикаОстатков.Фасовка, КРАТАДопАналитикаОстатков.Концентрация, Продажи.ЗаказПокупателя, Продажи.ДоговорКонтрагента, Продажи.ДокументПродажи, Продажи.Подразделение, Продажи.Организация, Продажи.Контрагент,  ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПродажиСебестоимость.Обороты(    &НачалоПериода, 2 Вариант - В параметрах виртуальных таблиц в качестве условий используется конструкция {}, АВТОЗАПОЛНЕНИЕ = ЛОЖЬ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ВЫБРАТЬ РАЗРЕШЕННЫЕ ПродажиОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, ПродажиОбороты.ЗаказПокупателя КАК ЗаказПокупателя, ПродажиОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента, ПродажиОбороты.ДокументПродажи КАК ДокументПродажи, ПродажиОбороты.ДопАналитикаОстатков КАК ДопАналитикаОстатков, ПродажиОбороты.КоличествоОборот КАК КоличествоОборот, ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот, ПродажиОбороты.СтоимостьБезСкидокОборот КАК СтоимостьБезСкидокОборот, Номенклатура.*, ХарактеристикаНоменклатуры.*, ЗаказПокупателя.*, ДоговорКонтрагента.*, ДокументПродажи.*, Подразделение.*, Организация.*, Контрагент.*, ДопАналитикаОстатков.*, КоличествоОборот, СтоимостьОборот, СтоимостьБезСкидокОборот, НДСОборот, Затрата} ПродажиОбороты.ЗаказПокупателя.*, ПродажиОбороты.ДоговорКонтрагента.*, ПродажиОбороты.ДокументПродажи.*, ПродажиОбороты.Подразделение.*, ПродажиОбороты.Организация.*, ПродажиОбороты.Контрагент.*, ПродажиОбороты.ДопАналитикаОстатков.*, ПродажиОбороты.КоличествоОборот, ПродажиОбороты.СтоимостьОборот, ПродажиОбороты.СтоимостьБезСкидокОборот, КРАТАтхЗатратыНаПродажуОбороты.Регистратор, КРАТАтхЗатратыНаПродажуОбороты.Номенклатура, КРАТАтхЗатратыНаПродажуОбороты.ХарактеристикаНоменклатуры, КРАТАтхЗатратыНаПродажуОбороты.ЗаказПокупателя, КРАТАтхЗатратыНаПродажуОбороты.ДоговорКонтрагента, КРАТАтхЗатратыНаПродажуОбороты.ДокументПродажи, КРАТАтхЗатратыНаПродажуОбороты.Подразделение, КРАТАтхЗатратыНаПродажуОбороты.Организация, КРАТАтхЗатратыНаПродажуОбороты.Контрагент, КРАТАтхЗатратыНаПродажуОбороты.ДопАналитикаОстатков, 0, 0, 0, 0, КРАТАтхЗатратыНаПродажуОбороты.СуммаОборот КРАТАтхЗатратыНаПродажуОбороты.Номенклатура.*, КРАТАтхЗатратыНаПродажуОбороты.ХарактеристикаНоменклатуры.*, КРАТАтхЗатратыНаПродажуОбороты.ЗаказПокупателя.*, КРАТАтхЗатратыНаПродажуОбороты.ДоговорКонтрагента.*, КРАТАтхЗатратыНаПродажуОбороты.ДокументПродажи.*, КРАТАтхЗатратыНаПродажуОбороты.Подразделение.*, КРАТАтхЗатратыНаПродажуОбороты.Организация.*, КРАТАтхЗатратыНаПродажуОбороты.Контрагент.*, ХарактеристикаНоменклатуры, ДопАналитикаОстатков Тара.*, Фасовка, Концентрация, ЗаказПокупателя.*, ДоговорКонтрагента.*, ДокументПродажи.*, Подразделение.*, Организация.*, Контрагент.*, ДопАналитикаОстатков.*, КоличествоПродажи, СуммаПродажи, Себестоимость, Затрата, СуммаПродажиБезСкидок, НДССПродажи} ИЗ  ПО Продажи.ДопАналитикаОстатков = КРАТАДопАналитикаОстатков.Ссылка  ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПродажиСебестоимость.Обороты(    &НачалоПериода, Продажи.Номенклатура.*, Продажи.ХарактеристикаНоменклатуры.*, КРАТАДопАналитикаОстатков.Тара.*, КРАТАДопАналитикаОстатков.Фасовка, КРАТАДопАналитикаОстатков.Концентрация, Продажи.ЗаказПокупателя.*, Продажи.ДоговорКонтрагента.*, Продажи.ДокументПродажи.*, Продажи.Подразделение.*, Продажи.Организация.*, Продажи.Контрагент.*,
#0 by ProDeveloper
Уважаемые ответьте на такой вопрос. Везде утверждается что если при написании запроса в СКД использовать конструкцию {} в параметрах виртуальных таблиц, то СКД сгенерирует запрос таким образом, что сделанный мною отбор в интерфейсе отчета, обязательно попадет в качестве условия в параметры виртуальной таблицы. Ну чтож я проверил, и такое ощущение что этого не происходит, сперва я написал отчет, где в запросе в параметрах виртуальных таблиц жестко задано условие через &Параметр, потом переписал запрос с использованием конструкции {}, разница по производительности просто небо и земля! Такое ощущение что конструкция {} не работает так как должна, потому что по производительности это тоже самое, что сперва получить все записи таблицы, а уж потом на неё наложить условие ГДЕ. Примеры: Производительность: 1 Вариант время формирования отчета = 3 сек                                2 Вариант время формирования отчета > 20 сек 1 Вариант - В параметрах виртуальных таблиц в качестве условий используется обычные параметры -------------------------------------------------------------------------------------------------------------------------------------------------- ПродажиОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, ПродажиОбороты.ЗаказПокупателя КАК ЗаказПокупателя, ПродажиОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента, ПродажиОбороты.ДокументПродажи КАК ДокументПродажи, ПродажиОбороты.ДопАналитикаОстатков КАК ДопАналитикаОстатков, ПродажиОбороты.КоличествоОборот, ПродажиОбороты.СтоимостьОборот, ПродажиОбороты.СтоимостьБезСкидокОборот, ПродажиОбороты.НДСОборот, ИЗ    И Подразделение В ИЕРАРХИИ (&Подразделение) КРАТАтхЗатратыНаПродажуОбороты.Период, КРАТАтхЗатратыНаПродажуОбороты.Регистратор, КРАТАтхЗатратыНаПродажуОбороты.Номенклатура, КРАТАтхЗатратыНаПродажуОбороты.ХарактеристикаНоменклатуры, КРАТАтхЗатратыНаПродажуОбороты.ЗаказПокупателя, КРАТАтхЗатратыНаПродажуОбороты.ДоговорКонтрагента, КРАТАтхЗатратыНаПродажуОбороты.ДокументПродажи, КРАТАтхЗатратыНаПродажуОбороты.Подразделение, КРАТАтхЗатратыНаПродажуОбороты.Организация, КРАТАтхЗатратыНаПродажуОбороты.Контрагент, КРАТАтхЗатратыНаПродажуОбороты.ДопАналитикаОстатков, 0, 0, 0, 0, КРАТАтхЗатратыНаПродажуОбороты.СуммаОборот ИЗ РегистрНакопления.КРАТАтхЗатратыНаПродажу.Обороты(   ДоговорКонтрагента.ВидВзаиморасчетов = &ПремииКлиентам    И Организация В (&Организация)    И Подразделение В ИЕРАРХИИ (&Подразделение)    И Номенклатура В ИЕРАРХИИ (&Номенклатура)) КАК КРАТАтхЗатратыНаПродажуОбороты Номенклатура, ХарактеристикаНоменклатуры, ДопАналитикаОстатков Продажи.Номенклатура, Продажи.ХарактеристикаНоменклатуры, КРАТАДопАналитикаОстатков.Тара, КРАТАДопАналитикаОстатков.Фасовка, КРАТАДопАналитикаОстатков.Концентрация, Продажи.ЗаказПокупателя, Продажи.ДоговорКонтрагента, Продажи.ДокументПродажи, Продажи.Подразделение, Продажи.Организация, Продажи.Контрагент,  ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПродажиСебестоимость.Обороты(    &НачалоПериода, 2 Вариант - В параметрах виртуальных таблиц в качестве условий используется конструкция {}, АВТОЗАПОЛНЕНИЕ = ЛОЖЬ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ВЫБРАТЬ РАЗРЕШЕННЫЕ ПродажиОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, ПродажиОбороты.ЗаказПокупателя КАК ЗаказПокупателя, ПродажиОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента, ПродажиОбороты.ДокументПродажи КАК ДокументПродажи, ПродажиОбороты.ДопАналитикаОстатков КАК ДопАналитикаОстатков, ПродажиОбороты.КоличествоОборот КАК КоличествоОборот, ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот, ПродажиОбороты.СтоимостьБезСкидокОборот КАК СтоимостьБезСкидокОборот, Номенклатура.*, ХарактеристикаНоменклатуры.*, ЗаказПокупателя.*, ДоговорКонтрагента.*, ДокументПродажи.*, Подразделение.*, Организация.*, Контрагент.*, ДопАналитикаОстатков.*, КоличествоОборот, СтоимостьОборот, СтоимостьБезСкидокОборот, НДСОборот, Затрата} ПродажиОбороты.ЗаказПокупателя.*, ПродажиОбороты.ДоговорКонтрагента.*, ПродажиОбороты.ДокументПродажи.*, ПродажиОбороты.Подразделение.*, ПродажиОбороты.Организация.*, ПродажиОбороты.Контрагент.*, ПродажиОбороты.ДопАналитикаОстатков.*, ПродажиОбороты.КоличествоОборот, ПродажиОбороты.СтоимостьОборот, ПродажиОбороты.СтоимостьБезСкидокОборот, КРАТАтхЗатратыНаПродажуОбороты.Регистратор, КРАТАтхЗатратыНаПродажуОбороты.Номенклатура, КРАТАтхЗатратыНаПродажуОбороты.ХарактеристикаНоменклатуры, КРАТАтхЗатратыНаПродажуОбороты.ЗаказПокупателя, КРАТАтхЗатратыНаПродажуОбороты.ДоговорКонтрагента, КРАТАтхЗатратыНаПродажуОбороты.ДокументПродажи, КРАТАтхЗатратыНаПродажуОбороты.Подразделение, КРАТАтхЗатратыНаПродажуОбороты.Организация, КРАТАтхЗатратыНаПродажуОбороты.Контрагент, КРАТАтхЗатратыНаПродажуОбороты.ДопАналитикаОстатков, 0, 0, 0, 0, КРАТАтхЗатратыНаПродажуОбороты.СуммаОборот КРАТАтхЗатратыНаПродажуОбороты.Номенклатура.*, КРАТАтхЗатратыНаПродажуОбороты.ХарактеристикаНоменклатуры.*, КРАТАтхЗатратыНаПродажуОбороты.ЗаказПокупателя.*, КРАТАтхЗатратыНаПродажуОбороты.ДоговорКонтрагента.*, КРАТАтхЗатратыНаПродажуОбороты.ДокументПродажи.*, КРАТАтхЗатратыНаПродажуОбороты.Подразделение.*, КРАТАтхЗатратыНаПродажуОбороты.Организация.*, КРАТАтхЗатратыНаПродажуОбороты.Контрагент.*, ХарактеристикаНоменклатуры, ДопАналитикаОстатков Тара.*, Фасовка, Концентрация, ЗаказПокупателя.*, ДоговорКонтрагента.*, ДокументПродажи.*, Подразделение.*, Организация.*, Контрагент.*, ДопАналитикаОстатков.*, КоличествоПродажи, СуммаПродажи, Себестоимость, Затрата, СуммаПродажиБезСкидок, НДССПродажи} ИЗ  ПО Продажи.ДопАналитикаОстатков = КРАТАДопАналитикаОстатков.Ссылка  ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПродажиСебестоимость.Обороты(    &НачалоПериода, Продажи.Номенклатура.*, Продажи.ХарактеристикаНоменклатуры.*, КРАТАДопАналитикаОстатков.Тара.*, КРАТАДопАналитикаОстатков.Фасовка, КРАТАДопАналитикаОстатков.Концентрация, Продажи.ЗаказПокупателя.*, Продажи.ДоговорКонтрагента.*, Продажи.ДокументПродажи.*, Продажи.Подразделение.*, Продажи.Организация.*, Продажи.Контрагент.*,
#1 by ProDeveloper
UP :)
#2 by Fragster
конструкция {} убирает автозаполнение на участке кода
#3 by Fragster
+ вместо этого заполнение ручное
#5 by Fragster
покури реальный текст запросав СКД
#6 by ProDeveloper
UP
#7 by ProDeveloper
Итак нашел с другого форума следующее: Вопрос: ---------------------------------------------------------------------- Привет всем. Платформа 8.2. Отчет на СКД. Набор данных запрос: ВЫБРАТЬ БухгалтерскийОборотыДтКт.Регистратор, БухгалтерскийОборотыДтКт.СчетДт, БухгалтерскийОборотыДтКт.СчетКт, БухгалтерскийОборотыДтКт.СуммаОборот ИЗ РегистрБухгалтерии.Бухгалтерский.ОборотыДтКт(&ДатаНачала, &ДатаОкончания, Авто, , , , , {(Организация В (&Организация) И Филиал В (&Филиал))}) КАК БухгалтерскийОборотыДтКт В параметрах виртуальной таблицы условие по Организации и Филиалу указано в фигурных скобках {}, для того, чтобы если параметры не заданы, условие чтобы не работало. Если не заданы оба параметра (флажок использование снят для обоих), то все работает. Если заданы оба параметра (флажок использование установлен для обоих), то работает. Если для Органзации установлен флажок использования, а для Филиала - нет, то ошибка: Ошибка исполнения отчета по причине: Ошибка получения данных по причине: Ошибка создания набора данных "НаборДанных1" по причине: Ошибка при исполнении запроса набора данных по причине: {(19, 20)}: Не задано значение параметра "Филиал" И Филиал В ( ---------------------------------------------------------------------- Ответы: 1) Пример но так: {(Организация.*) КАК Организация, (Филиал.*) КАК Филиал} 2) Но это, как я понимаю, не относится к параметрам виртуальной таблицы, а просто используется, если снят флажок Автозаполнение? Следовательно, это вроде бы не то, что нужно... 3) Ты не мог бы подробнее здесь? Если написать в параметрах виртуальной таблицы {(Организация.*) КАК Организация, (Филиал.*) КАК Филиал} то тогда параметра, ведь нет, параметр задается с символом &, следовательно, пользователь при необходимости не сможет выбрать этот параметр в настройках. 4) сможет выбрать в отборе быстром 5) Вроде бы начинает проясняться. Почитал еще на эту тему в руководстве разработчика. Получается, что указанные таким образом параметры появляются на вкладке Отбор, а не на вкладке Параметры, где я их ждал. Всем огромное спасибо!
#8 by ProDeveloper
В итоге применимо для моего случая конструкция {(Организация).* КАК Организация, (Подразделение).* КАК Подразделение, (Номенклатура).* КАК Номенклатура} , должна была отработать при установленном типовом Отборе, точно так же как установка обычных параметров в условиях виртуальных таблиц, но замеры производительности это опровергают ! Господа есть мысли по этому поводу ?
#9 by zzhiraf
Нет, не убирает
#10 by ProDeveloper
Господа проверил с помощью внешний обработки (КонсольОтчетовСКД+) которая показывает реальный текст запроса который уходит от СКД на сервер, все работает отлично конструкция {(Организация).* КАК Организация, (Подразделение).* КАК Подразделение, (Номенклатура).* КАК Номенклатура} преобразуется в условие в параметрах виртуальной таблицы, но данная тема работает на простом примере взял одну таблицу РН.ПродажиОбороты, видимо в моем случае при сложном запросе который состоит из пакетов да ещё с объеденением эта тема не проходит.
#11 by ProDeveloper
Конструкция для этого и работает шикарррно, просто у меня нетривиальный запрос, где эта тема не проходит.
#12 by ProDeveloper
Причем мой большой нетривиальный запрос в (КонсолиОтчетовСКД+) с такой конструкцией {(Организация).* КАК Организация, (Подразделение).* КАК Подразделение, (Номенклатура).* КАК Номенклатура} преобразуется везде как надо в РегистрНакопления.Продажи.Обороты(&П, &П2, Регистратор, ((Организация = &П3) И Подразделение В ИЕРАРХИИ(&П4)) И Номенклатура = &П5) КАК ПродажиОбороты. Но видимо СУБД его "оптимизирует" не лучшим образом поэтому строится он значительно дольше чем запрос через обычные параметры, хотя внешне все тоже самое, довольно странно.
#13 by Defender aka LINN
Учите матчасть, все там работает как положено. Ну и за неимением правильного варианта: 3. СКД работает шикарно, а про {} иди читай мануал!
#14 by ProDeveloper
В том то и дело что матчасть читал, работает все правильно, объясните тогда разницу в производительности ?
#15 by hhhh
наверно в дручих частях запроса ты навоял чего-то. Блок {ГДЕ ... } точно выбросил или вместе с ним фигачишь?
#16 by ProDeveloper
Для скептиков ниже выкладываю два запроса для сравнения производительности: 1 Вариант через конструкцию {} Продажи                                                             Параметры данных:    "НачалоПериода = 01.01.2012 0:00:00 КонецПериода = 31.12.2012 0:00:00"                                                         Отбор:    Организация Равно "Кое какая Организация"                                                            КРАТАтхЗатратыНаПродажуОбороты.ДопАналитикаОстатков,    0,    0,    КРАТАтхЗатратыНаПродажуОбороты.СуммаОборот        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПродажиСебестоимость.Обороты(                &П,                                                 2 Вариант через обычные параметры в условиях параметров виртуальных таблиц ПродажиБыстро                                                             Параметры данных:    "НачалоПериода = 01.01.2012 0:00:00 КонецПериода = 31.12.2012 0:00:00 Номенклатура ="                                                         Отбор:                                                             Время выполнения (с): 6.94                                                                            И Подразделение В ИЕРАРХИИ (&Подразделение)    КРАТАтхЗатратыНаПродажуОбороты.ДопАналитикаОстатков,    0,    0,    КРАТАтхЗатратыНаПродажуОбороты.СуммаОборот ИЗ    РегистрНакопления.КРАТАтхЗатратыНаПродажу.Обороты(            ДоговорКонтрагента.ВидВзаиморасчетов = &ПремииКлиентам                И Организация В (&Организация)                И Подразделение В ИЕРАРХИИ (&Подразделение)                И Номенклатура В ИЕРАРХИИ (&Номенклатура)) КАК КРАТАтхЗатратыНаПродажуОбороты        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПродажиСебестоимость.Обороты(                &П,
#17 by ProDeveloper
Второй запрос не полностью влез, но тем не менее разница по производительности в 3 раза !!!
#18 by ProDeveloper
И разница между запросами в СКД только лишь одна, в первом случае в параметрах виртуальных таблиц условия прописаны через конструкцию {(Организация).* КАК Организация, (Подразделение).* КАК Подразделение, (Номенклатура).* КАК Номенклатура} , во втором случае в параметрах виртуальных таблиц условия прописаны обычным способом через обычные параметры "Организация В (&Организация)    И Подразделение В ИЕРАРХИИ (&Подразделение) И Номенклатура В ИЕРАРХИИ (&Номенклатура)"... В ЧЕМ ПОДВОХ ?
#19 by ProDeveloper
И разница между запросами в СКД только лишь одна, в первом случае в параметрах виртуальных таблиц условия прописаны через конструкцию {(Организация).* КАК Организация, (Подразделение).* КАК Подразделение, (Номенклатура).* КАК Номенклатура} , во втором случае в параметрах виртуальных таблиц условия прописаны обычным способом через обычные параметры "Организация В (&Организация)    И Подразделение В ИЕРАРХИИ (&Подразделение) И Номенклатура В ИЕРАРХИИ (&Номенклатура)"... В чем подвох?
#20 by ProDeveloper
Sorry браузер тупанул, 2 раза отправил одно и тоже
#21 by hhhh
может разные параметры еще? Результаты обоих запросов проверь.
#22 by ProDeveloper
Все один в один, перепроверенно на стопицццот раз
#23 by Fragster
в первом случае отбор накладывается через отбор, во втором - через параметры
#24 by ProDeveloper
Иди покури матчасть, привел специально два текста запроса уже из КонсолиОтчетовСКД+, который выдает реальный текст запроса после всех преобразований СКД над запросом, из чего следует что конструкция {} работает как надо, и то что ты налепишь в Отборах СКД, попадет в параметры виртуальных таблиц как условие
#25 by Fragster
прочитай то, что я написал, еще раз, Про!
#26 by ProDeveloper
Остается понять почему такая разница в производительности. Для скептиков и "экспертов" могу порекоммендовать качнуть КонсольОтчетовСКД+ , нарисовать пошурику один отчет по РН.ПродажиОбороты с использованием конструкции {} и использовать отборы, и тут же нарисовать отчет по РН.ПродажиОбороты с использованием обычных параметров и убедится в том что разница по производительности есть, а реальные запросы на выходе от СКД один в один
#27 by acsent
ты неудачник, такая твоя карма
#28 by ProDeveloper
Давайте по делу, без флуда
#29 by Фауст
Представь себя на месте компановки. У тебя два поля "Организация" одно в качестве параметра виртуальной таблицы, а второе в предложении "ГДЕ" какой отбор применять ? Дай разные имена этим отборам. Например пусть в полях вирт. таблицы параметр будет называться "ПараметрОрганизация"
#30 by hhhh
а что, всё-таки не убрали {ГДЕ}. Ну вы приколист.
#31 by ProDeveloper
Да убирал я {ГДЕ} ситуация не поменялась, уже все возможные варианты попробовал, на скорость полета не влияет, так и не взлетело !
#32 by ProDeveloper
Я не хочу использовать вообще никаких параметров, хочу обойтись {(Организация).* КАК Организация)}, в итоге в КонсолиОтчетовСКД+ вижу что СКД сама сгенерировала запрос РН.ПродажиОборот(&П1, &П2, Регистратор, Организация = &П3) КАК Продажи, т.е. она взяла мой Отбор СКД по Организации и запихала его в Параметры виртуальных таблиц как условие (!) Но почему отчет то долго строится не пойму (((
#33 by Fragster
не волнуйся, если сделать с одним названием - применит в обоих местах
#34 by Fragster
внимательно сравни два запроса
#35 by Fragster
+ два итоговых запроса, я имею ввиду
#36 by ProDeveloper
Могу прислать исходный текст запроса СКД и текст запроса который получается после того как СКД над ним поработает, может прояснит ситуацию
#37 by Фауст
Попробуй запрос который сгенерировала скд запихнуть в простую консоль запросов, посмотри как отработает, может скуль хулиганит...
#38 by ProDeveloper
Если запихнуть готовый запрос на выходе от СКД в консоль запросов, то там РН.ПродажиОбороты(&П1, &П2, Регистратор, Организация = &П3), в итоге задаем все три параметра и все супер. Видимо все таки СКД не заполняет сама параметр &П3 Организацией из Отбора. Непонятная ситуевина.
#39 by Фауст
И все таки я бы попробовал переименовать
#40 by acsent
зачем 2 раза отбор по организации: в вт и в где?
#41 by ProDeveloper
Как на мисту вставить код грамотно заглушкой подскажите. Пришлю целиком запрос. Там нету {ГДЕ}
#45 by Лефмихалыч
иди учи матчасть, всё работает замечательно. У тебя запрос просто кривой и надо было галку "Автозаполнение" вырубить
#46 by ssh2006
в медленном запросе у тебя нет в условии вт отбора по номенклатуре и подразделению
#47 by ProDeveloper
Галку автозаполнения вырубал толку нет!
#48 by ProDeveloper
В медленном запросе , сам запрос генерируется СКД, если бы стоял Отбор по номенклатуре и подразделению то СКД сгенерила бы запрос РН.ПродажиОборот(&П1,&П2, Регистратор, Организация = &П3 И Подразделение В ИЕРАРХИИ(&П4) И Номенклатура В ИЕРАРХИИ(&П5)) КАК Продажи
#49 by ssh2006
+ так поэтому он и медленнее, раз нет этого отбора. Откуда программа узнает что нужно сделать этот отбор, если ты его не задашь
#50 by ProDeveloper
Погугли тему {} , в том то и дело что описываешь РН.ПродажиОбороты({&НачалоПериода}, {&КонецПериода}, Регистратор, {(Организация).* КАК Организация}) КАК Продажи и СКД сама сгенерит запрос РН.ПродажиОбороты(&П1, &П2, Регистратор, Организация = &П3), а &П3 возьмет из Отбора СКД, но почему то этого не происходит (((
#51 by ProDeveloper
Вот исходный запрос СКД
#52 by ssh2006
с чего ты взял, что этого не происходит? В твоем итоговом запросе А медленнее он из-за того что нет отбора по номенклатуре и подразделению, как во втором
#53 by ProDeveloper
А вот этот запрос уже на выходе от СКД, подглядел через внешн. обработку КонсольОтчетовСКД+
#54 by ProDeveloper
Погляди исходный запрос СКД и запрос на выходе от СКД, все там есть, а номенклатуры и подразделения не было потому что я отбор в СКД не делал по соответствующим измерениям.
#55 by ProDeveloper
что ты на это скажешь ?
#56 by ssh2006
в чем проблема тогда?
#57 by ProDeveloper
Почему такая разница в производительности ? В варианте через обычные параметры указываешь группу номенклатуры ну например "Продукция химическая" и отчет строится секунд 10. А тоже самое делаешь через вариант №2 где в запросе конструкция {} и отчет строится минут 5-7. Почему?
#58 by acsent
файл, скуль?
#59 by ProDeveloper
Платформа 8.2.15.301 + SQL
#60 by ssh2006
так ты же написал, что не указывал отбор, отсюда и разница:
#61 by acsent
результаты по данным то одинаковые?
#62 by ProDeveloper
У меня терпение лопнет тебе объяснять. Все входные параметры полностью одинаковые !!! Результат отчета одинаков !!! Время построения отчетов очень сильно отличается !
#63 by ProDeveloper
смотри два запроса которые я выложил в и в
#64 by ssh2006
> входные параметры полностью одинаковые Вот тебе объяснение, оно уже давалось выше: в варианте с {} чтобы попало в отбор вт нужно задавать отбор, а не параметры
#65 by ProDeveloper
Результаты одинаковые в обоих случаях, разница лишь во времени формирования отчетов
#66 by Фауст
выложи листинг быстрого запроса, который на выходе из СКД
#67 by ProDeveloper
так и делаю в варианте {} нет никаких параметров Организация, Подразделение, Номенклатура, они задаются через ОТБОР СКД и это ОТБОРЫ а не параметры!!! А СКД сама генерирует текст запроса где в параметрах ВТ в условиях вместо {(Организация).* КАК Организация, (Подразделение).* КАК Подразделение, (Номенклатура).* КАК Номенклатура} встает просто Организация = &П3 И Подразделение В ИЕРАРХИИ(&П4) И Номенклатура В ИЕРАРХИИ(&П5)
#68 by ssh2006
Настройки структуры СКД идентичны, проверь?
#69 by ProDeveloper
Вот быстрый вариант уже на выходе из СКД который через обычные параметры
#70 by ProDeveloper
смотри
#71 by ProDeveloper
для чистоты эксперемента все делаю в одном отчете, все полностью ИДЕНТИЧНО !
#72 by ProDeveloper
т.е. вся схема СКД совпадает 1 в 1 , меняю только участок кода в параметрах ВТ в условии
#73 by hhhh
всё-таки сделайте нормально хотя бы один раз. У вас рассеянное внимание. Всё время нам разное подсовываете. То у вас Номенклатура В ИЕРАРХИИ, то НОменклатура = &П5. То вы включаете ее в отбор, то не включаете.Тоже самое с организацией и подразделениями. Почитайте ваши посты, у вас везде по-разному написано. Хотя и ежу понятно, что В ИЕРАРХИИ например будет работать в 10 раз медленнее, чем без Иерархии.
#74 by ProDeveloper
изучите вопрос {}, и поймите что СКД генерирует запрос сама. все полностью ИДЕНТИЧНОЕ, смотри медленный вариант Исходный запрос СКД потом Запрос на выходе от СКД, который можно подглядеть через КонсольОтчетовСКД+ и Быстрый вариант отчета сделанный просто через Параметры
#75 by ProDeveloper
Если есть сомнения, скачайте КонсольОтчетовСКД+, накидайте простенький отчет ПродажиОбороты с использованием {} и Отбор, и тут же переделайте его в вариант без использования конструкции {}, а просто через обычные параметры и убедитесь сами что вариант через обычные параметры без использования конструкции {} работает в разы быстрее!
#76 by ProDeveloper
Прошу прощения, сам только что попробовал, с простеньким вариантом все работает одинаково быстро (!) Видимо конструкция {} как-то глючит с пакетными запросами или с запросами с ОБЪЕДИНЕНИЕМ, других версий нет (
#77 by ssh2006
глюков никаких нет, где-то ты напутал/ошибся
#78 by ProDeveloper
Говорю же если с одной табличкой ПродажиОбороты накидать простенький вариант, то все работает как надо и одинаково быстро, но в моем случае конструкция {} видимо как то глючит с пакетными запросами + ОБЪЕДИНЕНИЕ
#79 by ssh2006
факт "глюка" должен мотивировать тебя на поиск ошибки. 99% невнимательность, 1% - глюк
#80 by ssh2006
+ разбей оба запроса. Оставь только первый из пакета и посмотри и т.д.
#81 by ProDeveloper
Глюков полно, вот тебе пример о котором я сообщал в 1С, берешь ДинамическийСписок, открываешь конструктор запросов там нету вкладыша для создания пакетных запросов, однако если самому накидать запрос в другом конструкторе где с пакетными запросами все нормис, и скопировать оттуда текст запроса в ДинамическийСписок, то всё работает как надо.
#82 by ssh2006
возьми только первые запросы из пакета и сравни
#83 by ProDeveloper
Ошибки точно нет, видать глюк какой то, есть подозрение что надо сделать не пакетными запросами , а через вложенный (!) который кстати ЗЛО, и тогда заработает как надо.
#84 by HRom
а у меня временные таблицы группировались в СКД, тогда когда не надо:
#85 by ProDeveloper
Так же выловил кучу глюков с самим конструктором, когда открытие запроса конструктором его ПОРТИТ сам запрос! Т.е. открыл запрос конструктором нажал "ОК" и все запрос уже корявый, поправил запрос сам ручками и все НОРМИС, и запомнил что туда конструктором лучше не лезть !
#86 by МастерВопросов
да да, например скобки в условии "где" убирает. И закоментированный код тоже, что бывает неудобно во время экспериментов.
#87 by ssh2006
> Ошибки точно нет выясни, где "тормоз" - в первом запросе пакета?
#88 by ProDeveloper
Уже убегаю, завтра перепишу запрос с использованием вложенного запроса, а не через пакеты, есть подозрение что причина именно в этом (!) , если найду причину отпишусь
#89 by ssh2006
лучше найди истинную причину, которая скорее всего какой-то недочет.
#90 by ProDeveloper
Итак причина найдена, сразу забегая вперед, конструкция {} работает как надо, и пакетные запросы и ОБЪЕДИНЕНИЕ в запросе непричем. А причина тормозов в следующем - У меня есть схема СКД в которой 2 источника данных: 1 Источник 2 Источник На вкладыше связи наборов данных СКД , следующее:     Источник     Приемник    ВыражениеИсточник  ВыражениеПриемник   Параметр   1) НаборДанных1 НаборДанных2       Период             Период          Период 2) НаборДанных1 НаборДанных2     Номенклатура      Номенклатура     Номенклатура Смысл в чем, у меня есть табличка из 1 источника и я по каждой позиции связки (Период, Номенклатура) получаю из 2 источника Проект на каждую дату, способ описан вот здесь ---> Если 2ой источник похерить, и отказаться от аналитики проект, которая должна подтягиваться на каждую дату по каждой номенклатуре, то все работает быстро ! Вопрос, может кто знает в чем тут соль и может быть можно как то обойтись малой кровью, альтернатива "Среза последних на каждую дату в запросе" через вложенные или пакетные запросы с использованием двух левых соединений меня не греет, хотел все сделать изящно через СКД (((
#91 by ssh2006
раз медленно, тогда делай в запросе, в одном наборе данных
#92 by ProDeveloper
Да это то понятно, просто может кто сталкивался уже с таким ЧУДОМ
#93 by ssh2006
это не чудо, так работает
#94 by ProDeveloper
Да я понимаю, просто при всем при этом, если в 1 источнике поправить только конструкцию {} и поменять её на обычные параметры, все работает так же молниеностно ! Отсюда вывод, СКД как то цепляет параметр &Номенклатура, потому что Набор1 и Набор2 связаны по периоду и номенклатуру с использованием параметро &Период, &Номенклатура
#95 by ProDeveloper
Может быть кто-то уже так хардкодил, и суть в том что надо как-то поправить текст запроса источника 2 и все взлетит и так. Отказаться от набора 2 и переписать все в одном запросе дело 5и минут
#96 by ssh2006
тут никаких секретов нет. выложи скрин закладки "Связи" для обоих схем.
#97 by ProDeveloper
читай сообщение внимательно
#98 by ProDeveloper
В итоге победить неадекватное поведение СКД не удалось, забил на это дело, переписал все в один запрос, и все взлетело) Но теперь червяк голову грызет, в чем же все таки глюкавость такого подхода, где именно СКД не вывозит...
#99 by PR
А почему нет варианта голосовалки "Автор провафлил"?
#100 by ssh2006
"глюкавости" никакой нет, ты не до конца разобрался
#101 by ProDeveloper
Разобрался до конца, с двумя наборами и связями между ними через параметры &Период &Номенклатура, для получения Проекта на каждую дату для Источника1 с конструкцией {} в наборе1 не взлетело.
#102 by ProDeveloper
Убираешь конструкцию {} заменяя её на обычные параметры в Источнике1, взлетает, но смысла использовать обычные параметры нету. Переписал все в один источник с использованием {} конструкции, получился один запрос в котором пакетами все собирается, включая срез последних на каждую дату по проектам = взлетело!
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С