Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

СКД, как обойти оптимизатор

СКД, как обойти оптимизатор
Я
   Veronikin
 
22.02.21 - 00:17
Подскажите, как обойти оптимизатор?
Простой отчет на СКД, результат - номенклатурная группа и две даты.
Реализован как две таблицы по регистру бухгалтерии, отличаются только датами начала и конца периода, из первой таблицы беру одну дату, из второй - другую. Если смотреть запрос в консоли - все выводится верно, а в СКД даты одинаковые. Как можно обойти в таком случае оптимизатор СКД?
 
 Партнерская программа EFSOL Oblako
   Veronikin
 
1 - 22.02.21 - 00:21
(0) Текст запроса:
ВЫБРАТЬ
    ХозрасчетныйОборотыДтКт.СубконтоДт1 КАК Шифр,
    МАКСИМУМ(КОНЕЦПЕРИОДА(ХозрасчетныйОборотыДтКт.Период, МЕСЯЦ)) КАК ДатаКонецСписания,
    МАКСИМУМ(КОНЕЦПЕРИОДА(ЕСТЬNULL(ХозрасчетныйОборотыДтКт1.Период, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)), МЕСЯЦ)) КАК ДатаВекторСписания,
    ЛОЖЬ КАК НЗП,
    СУММА(ХозрасчетныйОборотыДтКт.СуммаОборот) КАК СуммаОборот
ПОМЕСТИТЬ ШифрыНеНЗП
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачалоПериода, &КонецПериода, Месяц, СчетДт В ИЕРАРХИИ (&Счет90), , СчетКт В ИЕРАРХИИ (&Счет20), &ВидСубконтоНоменклатурныеГруппы, ) КАК ХозрасчетныйОборотыДтКт
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(, &НачалоПериода, Месяц, СчетДт В ИЕРАРХИИ (&Счет90), , СчетКт В ИЕРАРХИИ (&Счет20), &ВидСубконтоНоменклатурныеГруппы, ) КАК ХозрасчетныйОборотыДтКт1
        ПО (ХозрасчетныйОборотыДтКт.СубконтоДт1 = ХозрасчетныйОборотыДтКт1.СубконтоДт1)

СГРУППИРОВАТЬ ПО
    ХозрасчетныйОборотыДтКт.СубконтоДт1,
    ХозрасчетныйОборотыДтКт.СубконтоДт1
;
   RomanYS
 
2 - 22.02.21 - 00:26
Параметры периода возьми в фигурные скобки
   Veronikin
 
3 - 22.02.21 - 00:50
(2) Поставила, в результате вторая дата для всех НГ null

ВЫБРАТЬ
    ХозрасчетныйОборотыДтКт.СубконтоДт1 КАК Шифр,
    МАКСИМУМ(КОНЕЦПЕРИОДА(ХозрасчетныйОборотыДтКт1.Период, МЕСЯЦ)) КАК ДатаВекторСписания,
    МАКСИМУМ(КОНЕЦПЕРИОДА(ХозрасчетныйОборотыДтКт.Период, МЕСЯЦ)) КАК ДатаОкончанияСписания,
    СУММА(ХозрасчетныйОборотыДтКт.СуммаОборот) КАК СуммаОборот
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт({(&НачалоПериода)}, {(&КонецПериода)}, Месяц, СчетДт В ИЕРАРХИИ (&Счет90), , СчетКт В ИЕРАРХИИ (&Счет20), &ВидСубконтоНоменклатурныеГруппы, ) КАК ХозрасчетныйОборотыДтКт
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(, {(&НачалоПериода)}, Месяц, СчетДт В ИЕРАРХИИ (&Счет90), , СчетКт В ИЕРАРХИИ (&Счет20), &ВидСубконтоНоменклатурныеГруппы, ) КАК ХозрасчетныйОборотыДтКт1
        ПО ХозрасчетныйОборотыДтКт.СубконтоКт1 = ХозрасчетныйОборотыДтКт1.СубконтоКт1

СГРУППИРОВАТЬ ПО
    ХозрасчетныйОборотыДтКт.СубконтоДт1
   hhhh
 
4 - 22.02.21 - 00:56
(3) не всё взяла в фигурные скобки. Пустую дпту зачем фигачишь туда? И без фигурных скобок.
   Veronikin
 
5 - 22.02.21 - 01:05
(4) Мне нужно первую дату взять в заданном периода, а вторую (из второй таблицы) - с начала ведения учета по дату начала периода
   PR
 
6 - 22.02.21 - 01:08
(3)
ВЫБРАТЬ
    ХозрасчетныйОборотыДтКт.СубконтоДт1 КАК Шифр,
    МАКСИМУМ(КОНЕЦПЕРИОДА(ХозрасчетныйОборотыДтКт.Период, МЕСЯЦ)) КАК ДатаКонецСписания,
    МАКСИМУМ(КОНЕЦПЕРИОДА(ЕСТЬNULL(ХозрасчетныйОборотыДтКт1.Период, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)), МЕСЯЦ)) КАК ДатаВекторСписания,
    ЛОЖЬ КАК НЗП,
    СУММА(ХозрасчетныйОборотыДтКт.СуммаОборот) КАК СуммаОборот
ПОМЕСТИТЬ ШифрыНеНЗП
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачалоПериода, &КонецПериода, Месяц, СчетДт В ИЕРАРХИИ (&Счет90), , СчетКт В ИЕРАРХИИ (&Счет20), &ВидСубконтоНоменклатурныеГруппы, ) КАК ХозрасчетныйОборотыДтКт
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт({&ДаНахренБыМнеНеСдаласьЭтаДатаПустьВсегдаБудетПустая}, &НачалоПериода, Месяц, СчетДт В ИЕРАРХИИ (&Счет90), , СчетКт В ИЕРАРХИИ (&Счет20), &ВидСубконтоНоменклатурныеГруппы, ) КАК ХозрасчетныйОборотыДтКт1
        ПО (ХозрасчетныйОборотыДтКт.СубконтоДт1 = ХозрасчетныйОборотыДтКт1.СубконтоДт1)

СГРУППИРОВАТЬ ПО
    ХозрасчетныйОборотыДтКт.СубконтоДт1,
    ХозрасчетныйОборотыДтКт.СубконтоДт1
;

   PR
 
7 - 22.02.21 - 01:11
+(6) Лучше даже так
ВЫБРАТЬ
    ХозрасчетныйОборотыДтКт.СубконтоДт1 КАК Шифр,
    МАКСИМУМ(КОНЕЦПЕРИОДА(ХозрасчетныйОборотыДтКт.Период, МЕСЯЦ)) КАК ДатаКонецСписания,
    МАКСИМУМ(КОНЕЦПЕРИОДА(ЕСТЬNULL(ХозрасчетныйОборотыДтКт1.Период, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)), МЕСЯЦ)) КАК ДатаВекторСписания,
    ЛОЖЬ КАК НЗП,
    СУММА(ХозрасчетныйОборотыДтКт.СуммаОборот) КАК СуммаОборот
ПОМЕСТИТЬ ШифрыНеНЗП
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачалоПериода, &КонецПериода, Месяц, СчетДт В ИЕРАРХИИ (&Счет90), , СчетКт В ИЕРАРХИИ (&Счет20), &ВидСубконтоНоменклатурныеГруппы, ) КАК ХозрасчетныйОборотыДтКт
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт({&ДаНахренБыМнеНеСдаласьЭтаДатаПустьВсегдаБудетПустая}, {&НачалоПериода}, Месяц, СчетДт В ИЕРАРХИИ (&Счет90), , СчетКт В ИЕРАРХИИ (&Счет20), &ВидСубконтоНоменклатурныеГруппы, ) КАК ХозрасчетныйОборотыДтКт1
        ПО (ХозрасчетныйОборотыДтКт.СубконтоДт1 = ХозрасчетныйОборотыДтКт1.СубконтоДт1)

СГРУППИРОВАТЬ ПО
    ХозрасчетныйОборотыДтКт.СубконтоДт1,
    ХозрасчетныйОборотыДтКт.СубконтоДт1
;

   Veronikin
 
8 - 22.02.21 - 01:13
(6) одинаковые даты выдает, как будто не видит, что у второй таблицы другой период стоит
   PR
 
9 - 22.02.21 - 01:16
+(8) Если уж совсем ничего не получится, точно получится вариант с четырьмя разными параметрами
ВЫБРАТЬ
    ХозрасчетныйОборотыДтКт.СубконтоДт1 КАК Шифр,
    МАКСИМУМ(КОНЕЦПЕРИОДА(ХозрасчетныйОборотыДтКт.Период, МЕСЯЦ)) КАК ДатаКонецСписания,
    МАКСИМУМ(КОНЕЦПЕРИОДА(ЕСТЬNULL(ХозрасчетныйОборотыДтКт1.Период, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)), МЕСЯЦ)) КАК ДатаВекторСписания,
    ЛОЖЬ КАК НЗП,
    СУММА(ХозрасчетныйОборотыДтКт.СуммаОборот) КАК СуммаОборот
ПОМЕСТИТЬ ШифрыНеНЗП
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&Дата1, &Дата2, Месяц, СчетДт В ИЕРАРХИИ (&Счет90), , СчетКт В ИЕРАРХИИ (&Счет20), &ВидСубконтоНоменклатурныеГруппы, ) КАК ХозрасчетныйОборотыДтКт
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт({&Дата3}, {&Дата4}, Месяц, СчетДт В ИЕРАРХИИ (&Счет90), , СчетКт В ИЕРАРХИИ (&Счет20), &ВидСубконтоНоменклатурныеГруппы, ) КАК ХозрасчетныйОборотыДтКт1
        ПО (ХозрасчетныйОборотыДтКт.СубконтоДт1 = ХозрасчетныйОборотыДтКт1.СубконтоДт1)

СГРУППИРОВАТЬ ПО
    ХозрасчетныйОборотыДтКт.СубконтоДт1,
    ХозрасчетныйОборотыДтКт.СубконтоДт1
;

   Veronikin
 
10 - 22.02.21 - 01:21
(9) не работает, опять одинаковые даты(( причем в консоли запросов все верно выводит
   PR
 
11 - 22.02.21 - 01:26
+(9) Имелось в виду, что &Дата1 и &Дата2 тоже в фигурных скобках, но это не принципиально
   PR
 
12 - 22.02.21 - 01:27
(10) Ну хрен знает, у меня так работает, видимо, не судьба
   vicof
 
13 - 22.02.21 - 01:48
Можно отключить автозаполнение, и о, чудо, все будет работать, как в консоли.
   Veronikin
 
14 - 22.02.21 - 02:07
(13) да, нашла, вот здесь как раз мой случай((
https://career.i-neti.ru/flag-avtozapolnenie-skd/
   Veronikin
 
15 - 22.02.21 - 02:08
(13) сделала так - убрала стандартный период из отчета, даты прописала условно как Дата1,2,3,4 - все работает правильно. Но период конечно кривой
   Veronikin
 
16 - 22.02.21 - 02:13
(13) интересно - если я убираю вообще из отчета СтандартныйПериод, а период задаю как Дата 1,2,3,4 - все работает. Стоит хоть в одной таблице подставить НачалоПериода и КонецПериода - сбивается и показывает одну и ту же дату((
   Veronikin
 
17 - 22.02.21 - 02:28
(16) еще интереснее - если Дата1,2,3,4 определить через стандартный период (не используя НачалоПериода, КонецПериода) - все работает))
   PR
 
18 - 22.02.21 - 15:21
(17) Капец
НачалоПериода и КонецПериода — это стандартные предопределенные параметры, и их две пары, в каждой таблице есть одни и те же НачалоПериода и КонецПериода
Если ты их переопределяешь на Дата 1,2,3,4, то по сути у тебя получается четыре параметра вместо двух
В чем магия-то?

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.