Имя: Пароль:
1C
1С v8
Странное поведение СКД
0 presto
 
03.04.15
10:17
Есть некий запрос. Он специально написан с несколькими виртуальными таблицами (это частичный случай из моего запроса)

ВЫБРАТЬ
    ДАТАВРЕМЯ(2014, 9, 15) КАК Период,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ "Сотрудник1") КАК Сотрудник,
    "Организация" КАК Организация
ПОМЕСТИТЬ ВТ_Сотрудники

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ДАТАВРЕМЯ(2014, 9, 1),
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ "Сотрудник2"),
    "Организация"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря
ПОМЕСТИТЬ ВТ_ДниКалендаря
ИЗ
    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
ГДЕ
    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ПериодС И &ПериодПО
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ДниКалендаря.ДатаКалендаря,
    ВТ_Сотрудники.Сотрудник,
    ВТ_Сотрудники.Организация
ПОМЕСТИТЬ ВТ_КоличествоПоДнях
ИЗ
    ВТ_ДниКалендаря КАК ВТ_ДниКалендаря
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Сотрудники КАК ВТ_Сотрудники
        ПО ВТ_ДниКалендаря.ДатаКалендаря >= ВТ_Сотрудники.Период
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_КоличествоПоДнях.ДатаКалендаря,
    ВТ_КоличествоПоДнях.Организация,
    СУММА(ВТ_КоличествоПоДнях.Сотрудник) КАК Количество
ПОМЕСТИТЬ ВТ_КолПоДняхСгрупированно
ИЗ
    ВТ_КоличествоПоДнях КАК ВТ_КоличествоПоДнях

СГРУППИРОВАТЬ ПО
    ВТ_КоличествоПоДнях.ДатаКалендаря,
    ВТ_КоличествоПоДнях.Организация
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_КолПоДняхСгрупированно.Организация КАК Организация,
    СРЕДНЕЕ(ВТ_КолПоДняхСгрупированно.Количество) КАК Количество
{ВЫБРАТЬ
    Организация,
    Количество}
ИЗ
    ВТ_КолПоДняхСгрупированно КАК ВТ_КолПоДняхСгрупированно

СГРУППИРОВАТЬ ПО
    ВТ_КолПоДняхСгрупированно.Организация

Параметри дат ПериодС = 01,09,2014 и ПериодПо = 30,09,2014

Результат запроса в консоли:
Организация    Количество
Организация    1,533333

Тоесть среднее количество за месяц

Когда я делаю отчет из этого запроса на СКД, то результат совсем другой:
Организация    Количество
Организация    46

Были попытки снять галочку Автозаполнение и другое, но не помагает ничего.
Почему такой результат?

Скачать в хмл отчет - http://rghost.ru/79TdDGVHm
Скачать в ерф формате - http://rghost.ru/878hrYWvS
1 Локи-13
 
03.04.15
10:19
возьми консоль СКД и посмотри итоговый запрос
наверняка часть полей из запроса удаляется как необязательные
2 vicof
 
03.04.15
10:19
а кроме галки Автозаполнения параметры виртуальных таблиц прописывал в скд?
3 presto
 
03.04.15
10:24
4 presto
 
03.04.15
10:38
Как вообще запретить СКД чтото править в моем запросе?
5 presto
 
03.04.15
10:51
Таки да! Черт, он удалил поле ДатаКалендаря. Как это исправить???


ВЫБРАТЬ
    ВТ_КоличествоПоДнях.ДатаКалендаря,
    ВТ_КоличествоПоДнях.Организация,
    СУММА(ВТ_КоличествоПоДнях.Сотрудник) КАК Количество
ПОМЕСТИТЬ ВТ_КолПоДняхСгрупированно
ИЗ
    ВТ_КоличествоПоДнях КАК ВТ_КоличествоПоДнях

СГРУППИРОВАТЬ ПО
    ВТ_КоличествоПоДнях.ДатаКалендаря,
    ВТ_КоличествоПоДнях.Организация
;
6 yavasya
 
03.04.15
11:02
наругать . в консоле запросов все работает?
7 presto
 
03.04.15
11:12
В консоле запросов все отлично. А вот если єтот запрос кинуть в отчет на СКД - то бера.

Я разобрался почему. Потому что СКД оптимизирует мой запрос, удаляя одно из полей в виртуальной таблице. Но удаляет потому, что в результирующей выборке это поле не используется, оно просто группируется в последнем запросе пакета.

Как обойти - протянуть это поле в результирующий запрос и сделать группировку с помощью СКД.
8 barrgand
 
03.04.15
11:14
(7) Сделать его обязательным
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.