Имя: Пароль:
1C
1С v8
Многократный умножение ресурсов при соединении таблиц
0 burrya
 
21.10.14
11:25
Отчет формируется через СКД

Поле ПланВыполнено выходит со значением кратно большим (помноженным на к-во задач)
В отчет не выходят записи, которые есть в регистре CRM_ПланыПоВоронкамПродаж, но нет задач

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    СУММА(Задачи.Переадресовано) КАК Переадресовано,
    СУММА(Задачи.Выполнено) КАК Выполнено,
    Задачи.CRM_Личная,
    Задачи.ЗадачаВоронкаПродаж,
    СУММА(CRM_ПланыПоВоронкамПродаж.Количество) КАК ПланВыполнено,
    СУММА(CRM_ПланыПоВоронкамПродаж.СуммаПотенциальная) КАК СуммаПотенциальная,
    CRM_ПланыПоВоронкамПродаж.Этап.Родитель КАК ВоронкаПродаж,
    Задачи.ЗадачаВоронкаПродаж.Родитель,
    Задачи.БизнесПроцессПроектОтветственный КАК ТП,
    Задачи.БизнесПроцессПроектКуратор КАК Супервайзер
ИЗ
    (ВЫБРАТЬ
        ЗадачаИсполнителя.БизнесПроцесс.КартаМаршрута КАК БизнесПроцессКартаМаршрута,
        ЗадачаИсполнителя.БизнесПроцесс.ВедущаяЗадача.БизнесПроцесс КАК БизнесПроцессВедущаяЗадачаБизнесПроцесс,
        ЗадачаИсполнителя.БизнесПроцесс.Проект КАК БизнесПроцессПроект,
        ЗадачаИсполнителя.ДатаНачала КАК ДатаНачала,
        ЗадачаИсполнителя.ДатаПринятияКИсполнению КАК ДатаПринятияКИсполнению,
        ЗадачаИсполнителя.ДатаИсполнения КАК ДатаИсполнения,
        ЗадачаИсполнителя.Дата КАК Дата,
        1 КАК Всего,
        ВЫБОР
            КОГДА ЗадачаИсполнителя.CRM_Переадресована
                ТОГДА 1
            ИНАЧЕ 0
        КОНЕЦ КАК Переадресовано,
        ВЫБОР
            КОГДА НЕ ЗадачаИсполнителя.CRM_Переадресована
                    И ЗадачаИсполнителя.Выполнена
                ТОГДА 1
            ИНАЧЕ 0
        КОНЕЦ КАК Выполнено,
        ВЫБОР
            КОГДА ЗадачаИсполнителя.Выполнена
                    И ЗадачаИсполнителя.СрокИсполнения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                    И ЗадачаИсполнителя.ДатаИсполнения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                ТОГДА РАЗНОСТЬДАТ(ЗадачаИсполнителя.СрокИсполнения, ЗадачаИсполнителя.ДатаИсполнения, ДЕНЬ)
            ИНАЧЕ 0
        КОНЕЦ КАК Отклонение,
        ВЫБОР
            КОГДА ЗадачаИсполнителя.Выполнена
                    И ЗадачаИсполнителя.СрокИсполнения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                    И ЗадачаИсполнителя.ДатаНачала <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                ТОГДА РАЗНОСТЬДАТ(ЗадачаИсполнителя.СрокИсполнения, ЗадачаИсполнителя.ДатаНачала, ЧАС)
            ИНАЧЕ 0
        КОНЕЦ КАК ДлительностьЧас,
        ВЫБОР
            КОГДА ЗадачаИсполнителя.Выполнена
                    И ЗадачаИсполнителя.СрокИсполнения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                    И ЗадачаИсполнителя.ДатаНачала <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                ТОГДА РАЗНОСТЬДАТ(ЗадачаИсполнителя.СрокИсполнения, ЗадачаИсполнителя.ДатаНачала, ДЕНЬ)
            ИНАЧЕ 0
        КОНЕЦ КАК ДлительностьДень,
        ЗадачаИсполнителя.Ссылка КАК Ссылка,
        ЗадачаИсполнителя.CRM_ТочкаМаршрута КАК CRM_ТочкаМаршрута,
        ЗадачаИсполнителя.CRM_Личная КАК CRM_Личная,
        ЗадачаИсполнителя.СрокИсполнения КАК СрокИсполнения,
        ЗадачаИсполнителя.БизнесПроцесс КАК БизнесПроцесс,
        ЗадачаИсполнителя.БизнесПроцесс.Партнер КАК Клиент,
        ЗадачаИсполнителя.ПринятаКИсполнению КАК ПринятаКИсполнению,
        ЗадачаИсполнителя.РезультатВыполнения КАК РезультатВыполнения,
        ЗадачаИсполнителя.Исполнитель КАК Исполнитель,
        CRM_ВоронкиПродажСостав.Ссылка КАК ЗадачаВоронкаПродаж,
        ЗадачаИсполнителя.БизнесПроцесс.Проект.Ответственный КАК БизнесПроцессПроектОтветственный,
        ЗадачаИсполнителя.БизнесПроцесс.Проект.Куратор КАК БизнесПроцессПроектКуратор
    ИЗ
        Задача.ЗадачаИсполнителя КАК ЗадачаИсполнителя
            ПОЛНОЕ СОЕДИНЕНИЕ Справочник.CRM_ВоронкиПродаж.Состав КАК CRM_ВоронкиПродажСостав
            ПО ЗадачаИсполнителя.CRM_ТочкаМаршрута = CRM_ВоронкиПродажСостав.ТочкаМаршрута
    ГДЕ
        (ЗадачаИсполнителя.CRM_ТочкаМаршрута <> ЗНАЧЕНИЕ(Справочник.CRM_ТочкиМаршрутов.ПустаяСсылка)
                ИЛИ ЗадачаИсполнителя.CRM_Личная = ИСТИНА)
    {ГДЕ
        (ЗадачаИсполнителя.Дата МЕЖДУ &НачалоПериода И &КонецПериода)}) КАК Задачи
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.CRM_ПланыПоВоронкамПродаж КАК CRM_ПланыПоВоронкамПродаж
        ПО Задачи.БизнесПроцессПроектОтветственный = CRM_ПланыПоВоронкамПродаж.ЗначениеОбъектаПланирования
            И Задачи.ЗадачаВоронкаПродаж = CRM_ПланыПоВоронкамПродаж.Этап
{ГДЕ
    (CRM_ПланыПоВоронкамПродаж.Этап.Родитель = &ВоронкаПродаж
            ИЛИ Задачи.ЗадачаВоронкаПродаж.Родитель = &ВоронкаПродаж),
    (Задачи.ДатаИсполнения МЕЖДУ &НачалоПериода И &КонецПериода)}

СГРУППИРОВАТЬ ПО
    Задачи.БизнесПроцессПроектОтветственный,
    CRM_ПланыПоВоронкамПродаж.Этап.Родитель,
    Задачи.БизнесПроцессПроектКуратор,
    Задачи.CRM_Личная,
    Задачи.ЗадачаВоронкаПродаж,
    Задачи.ЗадачаВоронкаПродаж.Родитель
1 kosts
 
21.10.14
11:35
(0) А чего хотел-то?
2 burrya
 
21.10.14
11:40
(1) Нужно чтоб ПланВыполнено было как есть в регистре для CRM_ПланыПоВоронкамПродаж.Этап и CRM_ПланыПоВоронкамПродаж.ЗначениеОбъектаПланирования
(2) Чтоб в отчет попадали все записи из Регистра и Задач
3 kosts
 
21.10.14
11:43
(2) Возможно надо не суммировать в одном запросе. Можно сделать вложенные запросы (или временные таблицы) где будет суммироваться, а в итоговом запросе, все будет соединяться.
4 burrya
 
21.10.14
11:45
всмысле завернуть еще в один запрос?
5 kosts
 
21.10.14
11:47
(4) Не не всё заворачивать. А разбить запрос на части, а в итоговом соединить, где уже не будет ничего задвоенного.
6 kosts
 
21.10.14
11:49
Либо попробовать заменить СУММА на СРЕДНИЙ, если всё остальное устраивает.
7 Ёпрст
 
гуру
21.10.14
11:51
(0) а зачем там полное соединение.. еще и 2 раза ?
8 burrya
 
21.10.14
11:55
(7) Первое полное соединение чтоб подтянуть из справочника соответствий ТочекМаршрута ВоронокамПродаж, в отчете есть фильтр по группе ВоронкиПродаж
А второе полное соедиение чтоб выходили все записи, но в отчет не попадают те записи, которые есть только в регистре
9 Ёпрст
 
гуру
21.10.14
11:57
(8) конечно не попадают - ты их условием в ГДЕ кастрировал
2 + 2 = 3.9999999999999999999999999999999...