|
УТ. СКД. Оптимальный Запрос для отбора в параметрах виртуальной таблицы по ключам аналитик | ☑ | ||
---|---|---|---|---|
0
SerGa
30.07.24
✎
16:03
|
УТ. Регистр накопления с измерением АналитикаУчетаНоменклатуры (тип Ключи аналитики номенклаьтуры) и АналитикаУчетаПоПартнерам
В этих ключах сидит Номенклатура и Партнер в качестве реквизита. Делаю отчет на СКД возможностью отбора по Номенклатуре и Партнеру Запрос выглядит так: ВЫБРАТЬ ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам.Партнер КАК Клиент, ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура, ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот КАК Количество, ИЗ РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, ) КАК ВыручкаИСебестоимостьПродажОбороты Если я ставлю отбор в отчете в пользовательском режиме - то СКД в запрос добавляет (в консоли компоновки инструментов разработчика это видно) ГДЕ ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура = &П И ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам.Партнер = &П2 но это представляется неоптимальным, если очень большая номенклатура и много контрагентов. Как мне заставить СКД запихивать отбор в параметры виртуальной таблицы? |
|||
1
Homer
30.07.24
✎
16:00
|
мда, откройте Регистры сведений АналитикаУчетаНоменклатуры и АналитикаУчетаПоПартнерам и тд
|
|||
2
SerGa
30.07.24
✎
16:02
|
(1) поясните, пожалуйста, не вполне понял как это использовать.
|
|||
3
Homer
30.07.24
✎
16:05
|
отбираешь ключи, далее указываешь данные ключи в виртуальной таблицы
|
|||
4
Мультук
30.07.24
✎
16:36
|
(0)
а так ? (сорри, тестить лень) ВЫБРАТЬ ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам.Партнер КАК Клиент, ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура, ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот КАК Количество ИЗ РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, {(АналитикаУчетаНоменклатуры.Номенклатура).* КАК Номенклатура}) КАК ВыручкаИСебестоимостьПродажОбороты |
|||
5
SerGa
30.07.24
✎
16:54
|
(4)(3) если я правильно понял то нужно примерно так:
ВЫБРАТЬ АналитикаУчетаНоменклатуры.Номенклатура КАК НоменклатураОтбор , АналитикаУчетаНоменклатуры.Серия КАК Серия, АналитикаУчетаНоменклатуры.МестоХранения КАК МестоХранения, АналитикаУчетаНоменклатуры.КлючАналитики КАК КлючАналитики ПОМЕСТИТЬ втКлючиОтбораНоменклатура ИЗ РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры {ГДЕ АналитикаУчетаНоменклатуры.Номенклатура.*, АналитикаУчетаНоменклатуры.Серия.*, АналитикаУчетаНоменклатуры.МестоХранения.*} ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам.Контрагент КАК Клиент, ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам.Контрагент КАК Контрагент, ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам.Контрагент КАК ЙЙЙ, ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам.Договор КАК Договор, ВыручкаИСебестоимостьПродажОбороты.ЗаказКлиента КАК ЗаказКлиента, ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура, ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Серия КАК Серия, ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот КАК Количество, ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиРеглОборот КАК СтоимостьРеглУчет, ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиСНДСРеглОборот КАК СтоимостьСНДСРеглУчет, ВыручкаИСебестоимостьПродажОбороты.Регистратор КАК ДокументПродажи {ВЫБРАТЬ Клиент.*, Договор.*, Номенклатура.*, Серия.*, ДокументПродажи.*, СтоимостьСНДСРеглУчет, СтоимостьРеглУчет, Количество, ЗаказКлиента.*} ИЗ РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, {(АналитикаУчетаНоменклатуры В (ВЫБРАТЬ втКлючиОтбораНоменклатура.КлючАналитики ИЗ втКлючиОтбораНоменклатура)) КАК Поле2}) КАК ВыручкаИСебестоимостьПродажОбороты |
|||
6
Мультук
30.07.24
✎
17:17
|
(0)
P.S. РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор Точно нужен регистратор, а не Авто ? |
|||
7
SerGa
30.07.24
✎
17:22
|
(6) не обязательно, наверно авто тоже нормально
|
|||
8
SerGa
30.07.24
✎
17:23
|
но я за 5 не уверен
в консоли компоновки смотртю... СКД и первый запрос и то что в параметрах виртуальной таблицы выкидывает... не работает это |
|||
9
SerGa
31.07.24
✎
12:08
|
посмотрел по типовой. как в отчетах это сделано и увидел что параметрами никто не заморачивается. Делают примерно так:
ВЫБРАТЬ ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот КАК Количество, КлючиАналитикиУчетаПоПартнерам.Партнер КАК Партнер, КлючиАналитикиУчетаПоПартнерам.Договор КАК Договор, КлючиАналитикиУчетаНоменклатуры.Номенклатура КАК Номенклатура, КлючиАналитикиУчетаНоменклатуры.Серия КАК Серия ИЗ РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&ДатаНачала, &ДатаОкончания, Авто, ) КАК ВыручкаИСебестоимостьПродажОбороты {ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК КлючиАналитикиУчетаНоменклатуры ПО ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры = КлючиАналитикиУчетаНоменклатуры.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаПоПартнерам КАК КлючиАналитикиУчетаПоПартнерам ПО ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам = КлючиАналитикиУчетаПоПартнерам.Ссылка} {ГДЕ КлючиАналитикиУчетаПоПартнерам.Партнер.*, КлючиАналитикиУчетаПоПартнерам.Договор.*, КлючиАналитикиУчетаНоменклатуры.Номенклатура.*, КлючиАналитикиУчетаНоменклатуры.Серия.*} Почему так - непонятно: 1. почему левое соединение а не внутреннее, если нужно отбор оптимизировать 2. и зачем ГДЕ в фигурные скобки, ведь можно вообще эту конструкцию в фигурных скобках убрать |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |