| 
    
            
         
         | 
    
    
  | 
Нахождение всего одной строки по одному документу основанию. | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Crimscon    
     07.06.19 
            ✎
    14:41 
 | 
         
        Есть запрос вида:
 
        ВЫБРАТЬ Событие.Ссылка КАК Звонки, Событие.ВидРемонта, Событие.ПодразделениеКомпании ПОМЕСТИТЬ ВсеЗвонки ИЗ Документ.Событие КАК Событие ГДЕ Событие.Проведен И Событие.ДокументОснование = НЕОПРЕДЕЛЕНО И Событие.ВидСобытия = ЗНАЧЕНИЕ(Перечисление.ВидыСобытий.ТелефонныйЗвонок) И Событие.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЗаявкаНаРемонт.Ссылка КАК Заявки, ЗаявкаНаРемонт.ДокументОснование КАК Звонки, ЗаявкаНаРемонт.ВидРемонта КАК ВидРемонта ПОМЕСТИТЬ ВсеЗаявки ИЗ Документ.ЗаявкаНаРемонт КАК ЗаявкаНаРемонт ГДЕ ЗаявкаНаРемонт.Проведен И ТИПЗНАЧЕНИЯ(ЗаявкаНаРемонт.ДокументОснование) = ТИП(Документ.Событие) И ЗаявкаНаРемонт.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЗаказНаряд.Ссылка КАК Наряды, ЗаказНаряд.ВидРемонта КАК ВидРемонта, ЗаказНаряд.СуммаДокумента КАК Сумма, ЗаказНаряд.ДокументОснование КАК Заявки, ЗаказНаряд.ДокументОснование.ДокументОснование КАК Звонки ПОМЕСТИТЬ ВсеНаряды ИЗ Документ.ЗаказНаряд КАК ЗаказНаряд ГДЕ ТИПЗНАЧЕНИЯ(ЗаказНаряд.ДокументОснование.Ссылка) = ТИП(Документ.ЗаявкаНаРемонт) И ТИПЗНАЧЕНИЯ(ЗаказНаряд.ДокументОснование.ДокументОснование.Ссылка) = ТИП(Документ.Событие) И ЗаказНаряд.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВсеЗвонки.Звонки, ВсеНаряды.Наряды, ВсеНаряды.Сумма, ВсеЗвонки.ВидРемонта, ВсеЗвонки.ПодразделениеКомпании, ВсеЗаявки.Заявки ИЗ ВсеЗвонки КАК ВсеЗвонки ЛЕВОЕ СОЕДИНЕНИЕ ВсеЗаявки КАК ВсеЗаявки ЛЕВОЕ СОЕДИНЕНИЕ ВсеНаряды КАК ВсеНаряды ПО ВсеЗаявки.Заявки = ВсеНаряды.Заявки ПО ВсеЗвонки.Звонки = ВсеЗаявки.Звонки СГРУППИРОВАТЬ ПО ВсеЗвонки.Звонки, ВсеЗаявки.Заявки, ВсеНаряды.Наряды, ВсеНаряды.Сумма, ВсеЗвонки.ВидРемонта, ВсеЗвонки.ПодразделениеКомпании Задача запроса найти все необходимые данные по дереву: "Документ.Событие" - "Документ.ЗаявкаНаРемонт" - "Документ.ЗаказНаряд". Одно из требований по выводу отчета состоит в том, что на один документ события выводился один документ заявки и соответственно на один документ заявки один документ наряда. Вопрос - как это сделать? Второй день мучаюсь, не могу допереть как вытаскивать его. Если ставить "ПЕРВЫЕ 1", тогда вылезает всего один документ. Если не ставить, то на одно событие вылезает по два документа. Отчет написан на СКД целиком и полностью. Нужно как-то модифицировать запрос, но как я не знаю. То, что выводится если есть "ПЕРВЫЕ 1": https://pp.userapi.com/c851424/v851424362/137752/GoMAZosm_dI.jpg То, что выводится без "ПЕРВЫЕ": https://pp.userapi.com/c851424/v851424362/13774a/rEYsVb12GAo.jpg То, что должно выводиться (сделал в графическом редакторе, не обращайте внимания): https://pp.userapi.com/c851424/v851424362/13776c/p_1D0zwz8pE.jpg  | 
|||
| 
    1
    
        Crimscon    
     07.06.19 
            ✎
    14:46 
 | 
         
        Да, оно все будет в виде диаграммы, поэтому наличие не совсем точной суммы не важно. Сумма должна суммироваться по виду ремонта.     
         | 
|||
| 
    2
    
        singlych    
     07.06.19 
            ✎
    14:58 
 | 
         
        Как ты решил, что заявку 1449 надо убрать, а 1448 оставить?     
         | 
|||
| 
    3
    
        Crimscon    
     07.06.19 
            ✎
    15:02 
 | 
         
        (2) Мне не важна сама заявка, мне нужно их количество. Условно должно получиться что есть операторы, которые звонят и зовут на ТО. Человек либо соглашается, либо принимает. Будет диаграмма типа: 500 звонков, 300 заявок. Отдельным графиком будет суммироваться сумма гряда и выводиться что ТО-1 принесло 100к руб, то-2  200к и т.д.     
         | 
|||
| 
    4
    
        Crimscon    
     07.06.19 
            ✎
    15:04 
 | 
         
        (2) собирать количество событий я уже могу. Это делает ресурсом через скд. Но количество заявок плывет, потому что к одному документу может быть 2 документа.     
         | 
|||
| 
    5
    
        singlych    
     07.06.19 
            ✎
    15:05 
 | 
         
        (3) Тогда тот же вопрос про наряды.     
         | 
|||
| 
    6
    
        Crimscon    
     07.06.19 
            ✎
    15:07 
 | 
         
        (5) а с нарядов я вообще только сумму беру. Сами наряды не выводятся. А сумму мне нужно суммировать по ним. Следовательно проблема только в заявках, которые я не знаю как сворачивать.     
         | 
|||
| 
    7
    
        vicof    
     07.06.19 
            ✎
    15:08 
 | 
         
        (6) Вообще-то сами наряды у тебя выводятся на скриншотах     
         | 
|||
| 
    8
    
        Crimscon    
     07.06.19 
            ✎
    15:09 
 | 
         
        (7) это таблица. Она нужна для понятности информации. По факту будет две диаграммы. В одной соотношение звонков/заявок, в другой только сумма по видами то.     
         | 
|||
| 
    9
    
        Crimscon    
     07.06.19 
            ✎
    15:10 
 | 
         
        (7) таким образом мне нужно только узнавать есть заявка по звонку или нет. Если есть, то 1, если нет, то 0. Все остальное работает правильно. Но как это делать то?     
         | 
|||
| 
    10
    
        vicof    
     07.06.19 
            ✎
    15:13 
 | 
         
        ВЫБОР КОГДА ЕСТЬNULL(Заявка, 0) = 0 ТОГДА 0 ИНАЧЕ 1 КОНЕЦ     
         | 
|||
| 
    11
    
        Crimscon    
     07.06.19 
            ✎
    15:16 
 | 
         
        (10) пробовал. Все равно для одного события считает как 2. Потому что две строки. Будет 1+1.     
         | 
|||
| 
    12
    
        vicof    
     07.06.19 
            ✎
    15:19 
 | 
         
        (11) ты СГРУППИРОВАТЬ забыл     
         | 
|||
| 
    13
    
        Crimscon    
     07.06.19 
            ✎
    15:26 
 | 
         
        (12) а вот это может сработать. Через полчаса буду около компа, отпишусь     
         | 
|||
| 
    14
    
        Ёпрст    
     гуру 
    07.06.19 
            ✎
    15:33 
 | 
         
        (0)   И Событие.ДокументОснование = НЕОПРЕДЕЛЕНО  //это не верное условие     
         | 
|||
| 
    15
    
        Crimscon    
     07.06.19 
            ✎
    15:47 
 | 
         
        (14) Но работает ведь. Нужно чтобы документ Событие был первым в дереве подчиненности. Если не секрет, как правильно тогда?     
         | 
|||
| 
    16
    
        Crimscon    
     07.06.19 
            ✎
    15:55 
 | 
         
        (12) Хорошо, до меня не доходит как надо сгруппировать. Понимаю, что в последнем запросе. Просто группирую - ничего не меняется. Если суммировать, то как?     
         | 
|||
| 
    17
    
        bolobol    
     07.06.19 
            ✎
    16:00 
 | 
         
        (11) Если одну строку считает как 2, то к этой строке есть левое соединение     
         | 
|||
| 
    18
    
        bolobol    
     07.06.19 
            ✎
    16:04 
 | 
         
        Событие1 Заявка11 Наряд111
 
        Событие2 Заявка21 Наряд211 Событие2 Заявка22 null Событие2 Заявка23 Наряд231 Событие2 Заявка23 Наряд232 - Что должно в итоге выводиться?  | 
|||
| 
    19
    
        Crimscon    
     07.06.19 
            ✎
    16:06 
 | 
         
        (18) Звонков 2, заявок 2.     
         | 
|||
| 
    20
    
        bolobol    
     07.06.19 
            ✎
    16:07 
 | 
         
        Почему заявок 2?, если в таблице их 5     
         | 
|||
| 
    21
    
        Crimscon    
     07.06.19 
            ✎
    16:07 
 | 
         
        (18) Суть в том, что если клиент согласился на сервисное обслуживание, то дальнейшие звонки по этому человеку уже не интересны. Они уже обговаривают детали. Главное, что если был 1 звонок и по нему пришел человек, то это 1 звонок, 1 заявка. Если человек не пришел, то 1 звонок, 0 заявок.     
         | 
|||
| 
    22
    
        bolobol    
     07.06.19 
            ✎
    16:09 
 | 
         
        Это всё совсем не интересно. Таблица как выглядит? В моей - звонков вообще нет     
         | 
|||
| 
    23
    
        Crimscon    
     07.06.19 
            ✎
    16:09 
 | 
         
        (20) Потому что в числовом значении мне важно только количество звонков. Количество заявок должно считаться по принципу было/не было. Где было = 1, не было = 0. То есть Из 500 звонков 300 согласились, значит 500 звонков, 300 заявок. Заявок при этом может быть и 600, потому что на одно событие создается не один документ (условно в первый раз поменять стекла, второй колеса, третий салон), но все это после одного события.     
         | 
|||
| 
    24
    
        vicof    
     07.06.19 
            ✎
    16:13 
 | 
         
        (16) Смотреть различающиеся "нересурсные" поля по одному звонку и группировать по ним     
         | 
|||
| 
    25
    
        Crimscon    
     07.06.19 
            ✎
    16:13 
 | 
         
        (22) Вот так: https://pp.userapi.com/c848616/v848616085/1b3794/9XTaRTaIJCw.jpg
 
        Это после группировки и того, что посоветовали в (10). Должно при этом быть: ТО-3 1/1 ТО-2 1/0 ТО-0 3/2. Потому что по ТО-3 совершен 1 звонок и 1 заявка. По ТО-2 совершено 1 звонок и нет заявок. По ТО-0 совершено 3 звонка, из них на первый совершено 2 заявки, на второй 0 заявок, на третий 1 заявка.  | 
|||
| 
    26
    
        bolobol    
     07.06.19 
            ✎
    16:14 
 | 
         
        Когда Количество(...) >1 Тогда Истина Иначе Ложь КОНЕЦ КАК ЕстьЗаявка     
         | 
|||
| 
    27
    
        bolobol    
     07.06.19 
            ✎
    16:15 
 | 
         
        СГРУППИРОВАТЬ ПО Звонок     
         | 
|||
| 
    28
    
        Crimscon    
     07.06.19 
            ✎
    16:20 
 | 
         
        (24) (26) Либо я уже туплю, либо пробовал. Давайте так. Запрос выглядит вот таким образом: 
 
        ВЫБРАТЬ Событие.Ссылка КАК Звонки, Событие.ВидРемонта, Событие.ПодразделениеКомпании ПОМЕСТИТЬ ВсеЗвонки ИЗ Документ.Событие КАК Событие ГДЕ Событие.Проведен И Событие.ДокументОснование = НЕОПРЕДЕЛЕНО И Событие.ВидСобытия = ЗНАЧЕНИЕ(Перечисление.ВидыСобытий.ТелефонныйЗвонок) И Событие.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЗаявкаНаРемонт.Ссылка КАК Заявки, ЗаявкаНаРемонт.ДокументОснование КАК Звонки, ЗаявкаНаРемонт.ВидРемонта КАК ВидРемонта ПОМЕСТИТЬ ВсеЗаявки ИЗ Документ.ЗаявкаНаРемонт КАК ЗаявкаНаРемонт ГДЕ ЗаявкаНаРемонт.Проведен И ТИПЗНАЧЕНИЯ(ЗаявкаНаРемонт.ДокументОснование) = ТИП(Документ.Событие) И ЗаявкаНаРемонт.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЗаказНаряд.Ссылка КАК Наряды, ЗаказНаряд.ВидРемонта КАК ВидРемонта, ЗаказНаряд.СуммаДокумента КАК Сумма, ЗаказНаряд.ДокументОснование КАК Заявки, ЗаказНаряд.ДокументОснование.ДокументОснование КАК Звонки ПОМЕСТИТЬ ВсеНаряды ИЗ Документ.ЗаказНаряд КАК ЗаказНаряд ГДЕ ТИПЗНАЧЕНИЯ(ЗаказНаряд.ДокументОснование.Ссылка) = ТИП(Документ.ЗаявкаНаРемонт) И ТИПЗНАЧЕНИЯ(ЗаказНаряд.ДокументОснование.ДокументОснование.Ссылка) = ТИП(Документ.Событие) И ЗаказНаряд.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВсеЗвонки.Звонки, ВсеНаряды.Наряды КАК Наряды, ВсеНаряды.Сумма, ВсеЗвонки.ВидРемонта, ВсеЗвонки.ПодразделениеКомпании, КОЛИЧЕСТВО(ВЫБОР КОГДА ЕСТЬNULL(ВсеЗаявки.Заявки, 0) <> 0 ТОГДА 1 КОНЕЦ) КАК Заявки ИЗ ВсеЗвонки КАК ВсеЗвонки ЛЕВОЕ СОЕДИНЕНИЕ ВсеЗаявки КАК ВсеЗаявки ЛЕВОЕ СОЕДИНЕНИЕ ВсеНаряды КАК ВсеНаряды ПО ВсеЗаявки.Заявки = ВсеНаряды.Заявки ПО ВсеЗвонки.Звонки = ВсеЗаявки.Звонки СГРУППИРОВАТЬ ПО ВсеЗвонки.Звонки, ВсеНаряды.Сумма, ВсеЗвонки.ВидРемонта, ВсеЗвонки.ПодразделениеКомпании, ВсеНаряды.Наряды В СКД Ресурсы выглядят вот так: https://pp.userapi.com/c848616/v848616085/1b37d7/LqN6M9jMcsg.jpg Сама схема вот так: https://pp.userapi.com/c848616/v848616085/1b37ea/cOOFPC-D_c4.jpg Результат вот так: https://pp.userapi.com/c848616/v848616085/1b3794/9XTaRTaIJCw.jpg Результат должен быть как в (25), и что я делаю не правильно?  | 
|||
| 
    29
    
        vicof    
     07.06.19 
            ✎
    16:23 
 | 
         
        Оставь в последней таблице только звонок и количество нарядов, сгруппируй, а в следующей соединения делай.     
         | 
|||
| 
    30
    
        vicof    
     07.06.19 
            ✎
    16:23 
 | 
         
        Ну и сумму там же можно оставить     
         | 
|||
| 
    31
    
        bolobol    
     07.06.19 
            ✎
    16:27 
 | 
         
        КОЛИЧЕСТВО(ВЫБОР
 
        КОГДА ЕСТЬNULL(ВсеЗаявки.Заявки, 0) <> 0 ТОГДА 1 КОНЕЦ) КАК Заявки - так считаешь количество заявок, а надо считать их? Ты же писал "если есть хоть одна" - зачем тогда количество заявок?  | 
|||
| 
    32
    
        bolobol    
     07.06.19 
            ✎
    16:29 
 | 
         
        ВсеНаряды.Сумма при двух левых соединениях увеличится на количество перекрёстных соединений... короче - задвоится-затроится     
         | 
|||
| 
    33
    
        Crimscon    
     07.06.19 
            ✎
    16:30 
 | 
         
        (31) Так в том то и дело, что мне не нужно их считать. Либо есть, либо нет.     
         | 
|||
| 
    34
    
        vicof    
     07.06.19 
            ✎
    16:30 
 | 
         
        (32) поэтому переходим на (29)     
         | 
|||
| 
    35
    
        Crimscon    
     07.06.19 
            ✎
    16:30 
 | 
         
        (32) Сейчас выведено 3 ТО из 7, в двух из них сумма верная, дальше будет двоиться?     
         | 
|||
| 
    36
    
        Crimscon    
     07.06.19 
            ✎
    16:31 
 | 
         
        (35) В третьей по нулям. В принципе, тоже верно)     
         | 
|||
| 
    37
    
        singlych    
     07.06.19 
            ✎
    16:31 
 | 
         
        на еще подкину
 
        ВЫБРАТЬ ВсеЗвонки.Звонки, ВсеЗвонки.ВидРемонта, ВсеЗвонки.ПодразделениеКомпании, ВЫБОР КОГДА МАКСИМУМ(ВсеЗаявки.Заявки) ЕСТЬ NULL ТОГДА 0 ИНАЧЕ 1 КОНЕЦ КАК Заявки, СУММА(ВсеНаряды.Сумма) КАК Сумма ИЗ ВсеЗвонки КАК ВсеЗвонки ЛЕВОЕ СОЕДИНЕНИЕ ВсеЗаявки КАК ВсеЗаявки ЛЕВОЕ СОЕДИНЕНИЕ ВсеНаряды КАК ВсеНаряды ПО ВсеЗаявки.Заявки = ВсеНаряды.Заявки ПО ВсеЗвонки.Звонки = ВсеЗаявки.Звонки СГРУППИРОВАТЬ ПО ВсеЗвонки.Звонки, ВсеЗвонки.ВидРемонта, ВсеЗвонки.ПодразделениеКомпании  | 
|||
| 
    38
    
        Crimscon    
     07.06.19 
            ✎
    16:36 
 | 
         
        (37) Воо. Я пришел к этому результату в таблице, но в диаграмме не получалось. Спасибо мил человек. Выводит вроде правильно, но выше сказали что будет сумма ломаться. Посмотрю еще.     
         | 
|||
| 
    39
    
        Crimscon    
     07.06.19 
            ✎
    16:40 
 | 
         
        Всем спасибо. Нужного результата добился)     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |