На СКД строится отчет. Источник – запрос к виртуальной таблице «Обороты» регистра бухгалтерии.
В запросе несколько раз происходит обращение к виртуальной таблице «Обороты» регистра бухгалтерии. Для каждого обращения в параметрах виртуальной таблицы указываются такие интервалы периодов: - <пусто>, &НачалоПериода
- &НачалоПериода, &КонецПериода
- <пусто>, & КонецПериода Если использовать стандартные (СКДшные) НачалоПериода и КонецПериода все выборкив «подзапросах» идут только за период - &НачалоПериода, &КонецПериода
Если использовать другие имена параметров, то периоды выбираются правильно. Причем это наблюдается для ситуации, когда каждый запрос за нужный период помещается во временную таблицу и/или когда делаются вложенные запросы за разные периоды.
Платформа: 1С:Предприятие 8.2 (8.2.16.368)
ВЫБРАТЬ РАЗРЕШЕННЫЕ
СУММА(ХозрасчетныйОбороты.СуммаОборот) КАК Кон,
ХозрасчетныйОбороты.Субконто1 КАК СДДС,
СУММА(ВложенныйЗапрос1.СуммаОборот) КАК Нач,
СУММА(ВложенныйЗапрос.СуммаОборот) КАК Оборот
ИЗ
РегистрБухгалтерии.Хозрасчетный.Обороты(, &КонецПериода, , Счет = &СчетОтчета, &СубконтоСДДС, Организация = &Организация, , ) КАК ХозрасчетныйОбороты
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ХозрасчетныйОбороты.Субконто1 КАК Субконто1,
СУММА(ХозрасчетныйОбороты.СуммаОборот) КАК СуммаОборот
ИЗ
РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, , Счет = &СчетОтчета, &СубконтоСДДС, Организация = &Организация, , ) КАК ХозрасчетныйОбороты
СГРУППИРОВАТЬ ПО
ХозрасчетныйОбороты.Субконто1) КАК ВложенныйЗапрос
ПО ХозрасчетныйОбороты.Субконто1 = ВложенныйЗапрос.Субконто1
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ХозрасчетныйОбороты.Субконто1 КАК Субконто1,
СУММА(ХозрасчетныйОбороты.СуммаОборот) КАК СуммаОборот
ИЗ
РегистрБухгалтерии.Хозрасчетный.Обороты(, &НачалоПериода, , Счет = &СчетОтчета, &СубконтоСДДС, Организация = &Организация, , ) КАК ХозрасчетныйОбороты
СГРУППИРОВАТЬ ПО
ХозрасчетныйОбороты.Субконто1) КАК ВложенныйЗапрос1
ПО ХозрасчетныйОбороты.Субконто1 = ВложенныйЗапрос1.Субконто1
СГРУППИРОВАТЬ ПО
ХозрасчетныйОбороты.Субконто1
(8) и ты посмотришь в ней, где скд установила параметры?
Ну, конечно, можно отладчиком посмотреть какие парметры подставляет скд..
Без автозаполнения попробовал?
По умолчанию, т.е. если в параметрах таблиц не заданы периоды, то система использует значения параметров &НачалоПериода, &КонецПериода
Это нормально.
Поэтому если нужны разные периоды, то нужно вводить отдельные параметры.
Т.е. запрос РегистрБухгалтерии.Хозрасчетный.Обороты(, &НачалоПериода) воспринимается системой как РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &НачалоПериода)
Это сделано для упрощения работы с СКД.
(17) AnryMc, Вы уже разобрались с проблемой. Зачем Вам заниматься поисками места повествования о данном функционале? Думаю, что уже пора определиться с лучшем ответом.
(17) Еще раз прочитайте внимательно: "параметры виртуальных таблиц становятся доступными для отбора"
НачалоПериода и КонецПериода это параметры виртуальных таблиц.
(28) AnryMc, При выполнении СКД в базу данных посылается совсем не тот запрос, который мы видим при создании/редактировании/просмотре схемы компоновки. Он "обрастает" различными настройками, в том числе заполненными в пользовательском режиме. Вы создаете запрос к виртуальной таблице. Виртуальная таблица не может существовать без некоторого набора параметров, поэтому СКД добавляет эти параметры, подставляя имена "по умолчанию". Ну а так как в настройках, сделанных вами имена, используемые системой "по умолчанию" уже определены, то СКД просто использует значения из них.
П.С. Это мои размышления, могут не совпадать с мнением разработчиков платформы.
Если не заполнять НачалоПериода и КонецПериода а ввести вместо них, например, НП и КП - то запросы выполняются нормально, даже если не указывать первый параметр (пусто) для виртуальной таблицы
(31) AnryMc, Правильно. Так как в этом случае СКД подставляет свои имена "по умолчанию", а вы их не заполняете (так как вы заполняете другие параметры - НП и КП). Поэтому программа берет эти значения тоже по умолчанию - минимальный и максимальный период.
(34) AnryMc, на самом деле у вас получается:
в первом случае:
- &НачалоПериода, &НачалоПериода
- &НачалоПериода, &КонецПериода
- &НачалоПериода, &КонецПериода
и во втором:
- &НачалоПериода, &НП
- &НП, &КП
- &НачалоПериода, & КП
Во втором случае у вас период по умолчанию не заполнен, поэтому берутся максимальные рамки и получается то, что вам надо. В первом же случае у вас параметры заданы, поэтому получаются некорректные (с вашей точки зрения) периоды.
По СКД есть много курсов, но скажу по себе что СКД на примерах разбирал и по сравнению с книгами то ли у меня понимание свое то ли автор как то не совсем доходчиво описывал но понять удалось только при разборе на примерах что и вам советую. хотя на сегодняшний день очень много всяких форумов и помошников по СКД.
Да както с СКД я более менее знаком, даже делал на ней некоторые отчеты. Просто удивляет данная ситуация. Когда в запросах нужно получит ТРИ интервала времени (см. (1)) то при использовании стандартных НачалоПериода и КонецПериода - получается только ОДИН интервал
Можно сделать отдельным запросом выборку периодов из производственного календаря а потом объединениям наборов данных передавать как параметры на основной запрос.
Для ВСЕХ Виртуальных таблиц СКД создает параметры с названиями Период(РегистрСведенийСрезПервых/Последних, РегистрНакопленияОстатки, РегистрБухгалтерииОстатки), НачалоПериода, КонецПериода(Обороты, Остатки и обороты)
ЕСЛИ эти имена этих параметров не переопределить в расширении запросов для СКД.
По-моему, об этом говорил Евгений Гилев в видео-курсе по СКД http://www.spec8.ru/kurs-po-skd-besplatno
соответственно, там где должна всегда быть Пустая дата - нужно прописывать в расширении экслюзивный параметр, я обычно пишу &ПустаяДата и делаю его недоступным