Имя: Пароль:
1C
 
СКД – меняется текст запроса в зависимости от группировок
,
0 Sewace
 
05.11.15
13:32
В консоли СКД выполняю запрос (запрос вымышленный, практической пользы не имеет):


ВЫБРАТЬ
    ХозрасчетныйОбороты.Субконто1 КАК Склад,
    ХозрасчетныйОбороты.Субконто2 КАК Номенклатура,
    ВЫБОР
        КОГДА ХозрасчетныйОбороты.КоличествоОборотДт = 0
            ТОГДА 0
        ИНАЧЕ ХозрасчетныйОбороты.СуммаОборотДт / ХозрасчетныйОбороты.КоличествоОборотДт * ХозрасчетныйОбороты.КоличествоОборотКт
    КОНЕЦ КАК СуммаСписания,
    ХозрасчетныйОбороты.СуммаОборотДт,
    ХозрасчетныйОбороты.КоличествоОборотДт,
    ХозрасчетныйОбороты.КоличествоОборотКт
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Обороты(, , , Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ЗапасныеЧасти), , , , ) КАК ХозрасчетныйОбороты


В этом запросе я хочу получить среднюю стоимость поступления единицы материала (стоимость поступления делю на количество поступления) и умножить ее на количество списания материала (назову это СуммаСписания).
Все это хочу рассчитать по каждой номенклатуре и вывести в итог общие суммы по складам (ресурс с функцией «СУММА» по «СуммаСписания»).

Если в настройках СКД вывожу или в выбранных полях, или в группировках и склад, и номенклатуру - то отчет работает так, как я и задумывал.
Но если не включать в выбранные поля номенклатуру, то СКД меняет текст запроса, исключая из него номенклатуру, производит вычисление стоимости списания по средней стоимости поступления по складу в целом.
Если в полях СКД помечаю номенклатуру как «Обязательное», то отчет формирует таблицу с детальными записями по номенклатуре.

Вопрос: можно ли (если да, то как) добиться того, чтобы расчет в запросе выполнялся по номенклатуре, а потом результат суммировался, но вывод необходим сводный, без участия номенклатуры?
1 Матиус
 
05.11.15
14:45
(0) Можно
2 Nuobu
 
05.11.15
14:47
(0) Вместо детальных записей во втором случае выбери "Субконто1" или "склад".
3 Матиус
 
05.11.15
14:48
(2) и что это даст?
4 Sewace
 
05.11.15
15:05
(1)
Ёмко сказано! :-)

(2)
"Субконто1" тоже пропадает из текста запроса при его неиспользовании в детальных записях или группировках.

Пробовал делать суррогатное поле, например,
ВЫБОР КОГДА ХозрасчетныйОбороты.Субконто2 ЕСТЬ NULL ТОГДА 0 ИНАЧЕ 0 КОНЕЦ
По нему настраивал ресурс.
В надежде, что СКД не порежет СУбконто2 при расчете.
Но если не выводить это вспомогательное поле в детальные записи, то в тексте запроса все равно это поле пропадает, если же его поместить в детальные записи, то в результирующей таблице строки все равно детализируются до номенклатуры, хотя номенклатура и не выводится.
5 Nuobu
 
05.11.15
15:07
(4) В консоли запроса есть вкладка "Построитель" выбери это поле там.
6 Sewace
 
05.11.15
15:10
(5)
Вы имеете ввиду отключить автозаполняемые поля и настраивать поля вручную?
Тоже пробовал - результат такой же.
7 Матиус
 
05.11.15
15:13
(6) Видимо имелось ввиду не использовать детальные записи, а только группировочные.
8 Sewace
 
05.11.15
15:21
(7)
Так без разницы, или я добавляю одну группировку "Детальные записи" и в состав полей отчета добавляю "Склад" и ресурсы; или я добавляю одну группировку "Склад" и в выбранные поля отчета добавляю только ресурсы. Номенклатура пропадает из текста запроса. Это видно в консоли СКД на закладке "Макет для табличного документа XML"
9 Матиус
 
05.11.15
15:27
(8) Номенклатура для расчета обязательна
10 Nuobu
 
05.11.15
15:31
У тебя расчет идёт в самой СКД, или в запросе?
11 Nuobu
 
05.11.15
15:31
(10) Если в СКД, то не ной, что оно не берёт в расчет номенклатуру.
12 Sewace
 
05.11.15
15:37
(11)
Ну конечно в СКД, я же об этом писал.
Но кажется нашел выход, такой:

Добавил в поле расчета такую конструкцию:

ХозрасчетныйОбороты.СуммаОборотДт / ХозрасчетныйОбороты.КоличествоОборотДт * ХозрасчетныйОбороты.КоличествоОборотКт *
ВЫБОР КОГДА ХозрасчетныйОбороты.Субконто2 ЕСТЬ NULL ТОГДА 1 ИНАЧЕ 1 КОНЕЦ

тогда это поле не исключается в тексте запроса!
13 Franchiser
 
гуру
05.11.15
15:41
В ролях ставить "Обязательное" пробовал?
14 Sewace
 
05.11.15
16:27
(13)
Да, в (0) писал об этом и резульат.

В (12) - рабочее решение, проверил на "боевой" задаче.
15 PLUT
 
05.11.15
16:36
(12) поставь этому полю Роль Обязательное
16 Aloex
 
05.11.15
16:50
(0) Засунь текущий в подзапрос, должен остаться.