Объясните убогому! Это бзик СКД или я чего-то не понимаю…

1. AnryMc 849 11.05.13 10:19 Сейчас в теме
На СКД строится отчет. Источник – запрос к виртуальной таблице «Обороты» регистра бухгалтерии.
В запросе несколько раз происходит обращение к виртуальной таблице «Обороты» регистра бухгалтерии. Для каждого обращения в параметрах виртуальной таблицы указываются такие интервалы периодов:
- <пусто>, &НачалоПериода
- &НачалоПериода, &КонецПериода
- <пусто>, & КонецПериода

Если использовать стандартные (СКДшные) НачалоПериода и КонецПериода все выборкив «подзапросах» идут только за период - &НачалоПериода, &КонецПериода
Если использовать другие имена параметров, то периоды выбираются правильно.
Причем это наблюдается для ситуации, когда каждый запрос за нужный период помещается во временную таблицу и/или когда делаются вложенные запросы за разные периоды.
Платформа: 1С:Предприятие 8.2 (8.2.16.368)
Вознаграждение за ответ
Показать полностью
Найденные решения
38. donchess 23 14.05.13 16:55 Сейчас в теме
Подробное объяснение : Гилев "Осторожно 1С" 13-я серия
Вкратце : параметры виртуальных таблиц указываем в СКД -> конструктор запроса -> компоновка данных
Papilion; zxcvb98765; vndomino; wtlz; AnryMc; +5 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. AnryMc 849 11.05.13 10:21 Сейчас в теме
Добавил вознаграждение
3. AnryMc 849 11.05.13 10:32 Сейчас в теме
Примерный текст запроса (вложенные)

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

СГРУППИРОВАТЬ ПО
	ХозрасчетныйОбороты.Субконто1
Показать
4. sanja 153 11.05.13 12:43 Сейчас в теме
РегистрБухгалтерии.Хозрасчетный.Обороты(, &НачалоПериода, , Счет = &СчетОтчета, &СубконтоСДДС, Организация = &Организа

здесь будет выбрано за период от &НачалоПериода до &НачалоПериода
5. AnryMc 849 11.05.13 12:49 Сейчас в теме
(4) sanja,

Почему? Должно с 01,01,0001.

Если я ввожу параметры НП (НачалоПериода) и КП (КонецПериода) всё работает нормально
6. sanja 153 11.05.13 12:58 Сейчас в теме
попробуй задать через компоновку данных и отключить автозаполнение
40. AnryMc 849 14.05.13 20:40 Сейчас в теме
(6) sanja,
отключить автозаполнение


+ 5 $m
8. AnryMc 849 11.05.13 13:25 Сейчас в теме
(7) sanja,

На ИТС


Консоль отчетов компановки данных


Правда - управляемое приложение
10. sanja 153 11.05.13 13:30 Сейчас в теме
(8) и ты посмотришь в ней, где скд установила параметры?
Ну, конечно, можно отладчиком посмотреть какие парметры подставляет скд..
Без автозаполнения попробовал?
11. AnryMc 849 11.05.13 13:51 Сейчас в теме
(10) sanja,

Автозаполнение пока не пробовал. Надо доделать и отдать.

Предлагаемая Вами консоль полностью повторяет мой текс запроса
9. AnryMc 849 11.05.13 13:29 Сейчас в теме
(7) sanja,

Запрос я знаю и так, что в параметрах виртуальных таблиц?
12. ekaruk 4912 11.05.13 16:40 Сейчас в теме
По умолчанию, т.е. если в параметрах таблиц не заданы периоды, то система использует значения параметров &НачалоПериода, &КонецПериода
Это нормально.
Поэтому если нужны разные периоды, то нужно вводить отдельные параметры.
14. sanja 153 11.05.13 19:50 Сейчас в теме
(12),(13) прям глаза открыла)
23. AnryMc 849 13.05.13 07:41 Сейчас в теме
(12) ekaruk - Перевел, 5 $m - хотя вопрос не закрыт - см. (21)
13. ekaruk 4912 11.05.13 16:42 Сейчас в теме
Т.е. запрос РегистрБухгалтерии.Хозрасчетный.Обороты(, &НачалоПериода) воспринимается системой как РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &НачалоПериода)
Это сделано для упрощения работы с СКД.
15. AnryMc 849 11.05.13 21:15 Сейчас в теме
Это я понял в результате "биения лбом" и "проведения экспериментов".

Вопрос - где об этом СКАЗАНО!
16. RustamZz 11.05.13 23:26 Сейчас в теме
(15) Документация поставляемая с программой

10.3.3.2. Автоматическое заполнение доступных полей

При автоматическом заполнении доступных полей запроса выполняются следующие действия:

● все поля списка выборки и их дочерние поля становятся доступными для выбора, упорядочивания, группировки, отбора и др.;

● параметры виртуальных таблиц становятся доступными для отбора.
17. AnryMc 849 12.05.13 08:14 Сейчас в теме
(16) RustamZz,

Это наследование полей выборки, а не подстановка параметров запроса по умолчанию
18. pahich 730 12.05.13 19:41 Сейчас в теме
(17) AnryMc, Вы уже разобрались с проблемой. Зачем Вам заниматься поисками места повествования о данном функционале? Думаю, что уже пора определиться с лучшем ответом.
24. AnryMc 849 13.05.13 07:41 Сейчас в теме
20. RustamZz 12.05.13 23:04 Сейчас в теме
(17) Еще раз прочитайте внимательно: "параметры виртуальных таблиц становятся доступными для отбора"
НачалоПериода и КонецПериода это параметры виртуальных таблиц.
21. AnryMc 849 13.05.13 06:53 Сейчас в теме
(20) RustamZz,

В случае - - <пусто>, &НачалоПериода - Выбирается всё равно & НачалоПериода, & КонецПериода
22. AnryMc 849 13.05.13 07:37 Сейчас в теме
(20) RustamZz,

Прочитал ВНИМАТЕЛЬНО:

параметры виртуальных таблиц становятся доступными для отбора


Становятся доступными для отбора
и
Устанвавливаются по умолчанию

Помоему, здесь есть разница. Вы не находите?
25. RustamZz 13.05.13 08:42 Сейчас в теме
(22) для такого указания второго параметра надо писать {&НачалоПериода}
19. AnryMc 849 12.05.13 20:46 Сейчас в теме
Ещё раз

Если использовать стандартные (СКДшные) НачалоПериода и КонецПериода все выборкив «подзапросах» идут только за период - &НачалоПериода, &КонецПериода
26. 1Снег 11 13.05.13 08:47 Сейчас в теме
Тоже был такой косяк с СКД, попробуйте писать так:

РегистрБухгалтерии.Хозрасчетный.Обороты({&НачалоПериода}, {&КонецПериода}, , ) ....

Это указание СКД использовать ваши наименования периодов, а не штатные

Вместо
РегистрБухгалтерии.Хозрасчетный.Обороты(, &НачалоПериода, , )
нужно написать
РегистрБухгалтерии.Хозрасчетный.Обороты(ДАТАВРЕМЯ(1,1,1), {&НачалоПериода}, , )
27. Akuji 22 13.05.13 09:24 Сейчас в теме
Фигурные скобки говорят об необязательности заполнения параметров,
Лучше просто использовать имена параметров не совпадающие со стандартными.
28. AnryMc 849 13.05.13 10:43 Сейчас в теме
(27) Akuji,

Это я уже понял. Но хочу понять логику разработчиков СКД, если это нен косяк
29. pahich 730 13.05.13 11:00 Сейчас в теме
(28) AnryMc, При выполнении СКД в базу данных посылается совсем не тот запрос, который мы видим при создании/редактировании/просмотре схемы компоновки. Он "обрастает" различными настройками, в том числе заполненными в пользовательском режиме. Вы создаете запрос к виртуальной таблице. Виртуальная таблица не может существовать без некоторого набора параметров, поэтому СКД добавляет эти параметры, подставляя имена "по умолчанию". Ну а так как в настройках, сделанных вами имена, используемые системой "по умолчанию" уже определены, то СКД просто использует значения из них.

П.С. Это мои размышления, могут не совпадать с мнением разработчиков платформы.
31. AnryMc 849 13.05.13 16:37 Сейчас в теме
(29) pahich,

Если не заполнять НачалоПериода и КонецПериода а ввести вместо них, например, НП и КП - то запросы выполняются нормально, даже если не указывать первый параметр (пусто) для виртуальной таблицы
33. pahich 730 13.05.13 16:41 Сейчас в теме
(31) AnryMc, Правильно. Так как в этом случае СКД подставляет свои имена "по умолчанию", а вы их не заполняете (так как вы заполняете другие параметры - НП и КП). Поэтому программа берет эти значения тоже по умолчанию - минимальный и максимальный период.
34. AnryMc 849 13.05.13 16:55 Сейчас в теме
(33) pahich,

ТРИ ИНТЕРВАЛА
1) СКДшные параметры:
- <пусто>, &НачалоПериода
- &НачалоПериода, &КонецПериода
- <пусто>, & КонецПериода
ТАК ПОЛУЧАЕТСЯ ТОЛЬКО ОДИН ИНТЕРВАЛ (НачалоПериода-КонецПериода)
2) "Свободные" прараметры:
- <пусто>, &НП
- &НП, &КП
- <пусто>, & КП
ПОЛУЧАЕТСЯ ПРАВИЛЬНО - ТРИ ИНТЕРВАЛА
35. pahich 730 13.05.13 17:02 Сейчас в теме
(34) AnryMc, на самом деле у вас получается:
в первом случае:
- &НачалоПериода, &НачалоПериода
- &НачалоПериода, &КонецПериода
- &НачалоПериода, &КонецПериода

и во втором:
- &НачалоПериода, &НП
- &НП, &КП
- &НачалоПериода, & КП

Во втором случае у вас период по умолчанию не заполнен, поэтому берутся максимальные рамки и получается то, что вам надо. В первом же случае у вас параметры заданы, поэтому получаются некорректные (с вашей точки зрения) периоды.
30. vervolf9 13.05.13 16:26 Сейчас в теме
По СКД есть много курсов, но скажу по себе что СКД на примерах разбирал и по сравнению с книгами то ли у меня понимание свое то ли автор как то не совсем доходчиво описывал но понять удалось только при разборе на примерах что и вам советую. хотя на сегодняшний день очень много всяких форумов и помошников по СКД.
32. AnryMc 849 13.05.13 16:41 Сейчас в теме
(30) vervolf9,

Да както с СКД я более менее знаком, даже делал на ней некоторые отчеты. Просто удивляет данная ситуация. Когда в запросах нужно получит ТРИ интервала времени (см. (1)) то при использовании стандартных НачалоПериода и КонецПериода - получается только ОДИН интервал
36. vervolf9 13.05.13 21:21 Сейчас в теме
Можно сделать отдельным запросом выборку периодов из производственного календаря а потом объединениям наборов данных передавать как параметры на основной запрос.
37. echo77 1887 13.05.13 21:59 Сейчас в теме
Для ВСЕХ Виртуальных таблиц СКД создает параметры с названиями Период(РегистрСведенийСрезПервых/Последних, РегистрНакопленияОстатки, РегистрБухгалтерииОстатки), НачалоПериода, КонецПериода(Обороты, Остатки и обороты)
ЕСЛИ эти имена этих параметров не переопределить в расширении запросов для СКД.
По-моему, об этом говорил Евгений Гилев в видео-курсе по СКД http://www.spec8.ru/kurs-po-skd-besplatno

соответственно, там где должна всегда быть Пустая дата - нужно прописывать в расширении экслюзивный параметр, я обычно пишу &ПустаяДата и делаю его недоступным
38. donchess 23 14.05.13 16:55 Сейчас в теме
Подробное объяснение : Гилев "Осторожно 1С" 13-я серия
Вкратце : параметры виртуальных таблиц указываем в СКД -> конструктор запроса -> компоновка данных
Papilion; zxcvb98765; vndomino; wtlz; AnryMc; +5 Ответить
39. AnryMc 849 14.05.13 20:32 Сейчас в теме
42. AnryMc 849 14.05.13 20:48 Сейчас в теме
(38) donchess,

Самое интересное, Гилева я смотрел 1CdevAdv-Block2-Chapter10-Lesson012-main.avi

Да уж подзабыл
41. AnryMc 849 14.05.13 20:43 Сейчас в теме
Итого: Я почти удовлетворен.
Потрачено 20 $m, из низ комиссии сайту 3.
43. sanja 153 14.05.13 23:35 Сейчас в теме
и мне пятерочка прилетела, спс. сразу надо было гуглить автозаполнение скд, раньше бы разобрался)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот