Имя: Пароль:
1C
1С v8
СКД и запрос выдают разные результаты
0 Dimaster
 
16.10.13
04:19
Как так может быть? Запрос из СКД выполняю в консоли запросов - и с теми же параметрами результат отличается! Уже второй день бьюсь. Т.е. в запросе есть поле ВЫБОР КОГДА ТОГДА, и в зависимости от значений оно либо истина либо ложь. Так вот, отчет СКД с ограничениями НачалоПериода и КонецПериода возвращает Ложь, а вот тот же запрос в консоле с теми же периодами - Истина(что правильно). Чтож с отчетом то такое?
1 Dimaster
 
16.10.13
04:45
В СКД расшифровка по неверному документу выдает не 1, а 2 ДОКУМЕНТА!!! КАК ТАК???
2 Dimaster
 
16.10.13
07:37
Ап. Срочно нужно решение
3 Feunoir
 
16.10.13
07:39
(2) Ошибка в пятой строке запроса в СКД
4 1Сергей
 
16.10.13
07:40
Всё делов КонецДня(...)
Инфа 146%
5 Лоботряс
 
16.10.13
08:02
быстрее бы уже сам нашел ответ забив эту тему в поисковике...
90% найденных ссылок будет на этот форум
6 Necessitudo
 
16.10.13
08:12
Хоть схему компоновки покажи что ли.
7 Лирик
 
16.10.13
08:17
Внесу свои пять копеек: переименуй параметры &НачалоПериода и &КонецПериода (например в НП и КП).
8 Defender aka LINN
 
16.10.13
08:18
(6) Ненене, рано. Надо ждать минимум до 20 поста
(4) Ставлю на Автозаполнение
9 Necessitudo
 
16.10.13
08:18
+(7) Только переименовывать их лучше в СКД на закладке "Компоновка" конструктора запроса.
10 Мэс33
 
16.10.13
10:45
(3) +100500
Я тоже там увидел ошибку.
11 Dimaster
 
17.10.13
02:33
ВЫБРАТЬ
    Вложенный.Документ,
    Вложенный.Сотрудник,
    Вложенный.СуммаЗаказа,
    Вложенный.РольСотрудника,
    Вложенный.ПроцентСотрудника,
    Вложенный.Отгружен,
    Вложенный.Оплачен,
    Вложенный.СуммаОплатыОборот,
    Вложенный.СуммаАвансаОборот,
    Вложенный.ОсталосьОтгрузить,
    Вложенный.ОплатаЗаказа,
    Вложенный.ПрибыльЗаказа,
    Вложенный.Рентабельность,
    Вложенный.ОплатаСотруднику,
    Вложенный.СебестоимостьЗаказа
ИЗ
    (ВЫБРАТЬ
        ВесьЗапрос.ЗаказПокупателя КАК Документ,
        ВесьЗапрос.Сотрудник КАК Сотрудник,
        СУММА(ВесьЗапрос.СуммаЗаказа) КАК СуммаЗаказа,
        ВесьЗапрос.РольСотрудника КАК РольСотрудника,
        ВесьЗапрос.Процент КАК ПроцентСотрудника,
        ВЫБОР
            КОГДА ЕСТЬNULL(ВесьЗапрос.ОсталосьОтгрузить, 0) = 0
                ТОГДА ИСТИНА
            ИНАЧЕ ЛОЖЬ
        КОНЕЦ КАК Отгружен,
        ВЫБОР
            КОГДА ВесьЗапрос.ОплатаЗаказа >= ВесьЗапрос.СуммаЗаказа
                ТОГДА ИСТИНА
            ИНАЧЕ ЛОЖЬ
        КОНЕЦ КАК Оплачен,
        СУММА(ВесьЗапрос.СуммаОплатыОборот) КАК СуммаОплатыОборот,
        СУММА(ВесьЗапрос.СуммаАвансаОборот) КАК СуммаАвансаОборот,
        СУММА(ВесьЗапрос.ОсталосьОтгрузить) КАК ОсталосьОтгрузить,
        СУММА(ВесьЗапрос.ОплатаЗаказа) КАК ОплатаЗаказа,
        СУММА(ВесьЗапрос.ОплатаЗаказа - ВесьЗапрос.Себестоимость) КАК ПрибыльЗаказа,
        СРЕДНЕЕ(ВЫБОР
                КОГДА ВесьЗапрос.ОплатаЗаказа <> 0
                    ТОГДА (ВесьЗапрос.ОплатаЗаказа - ВесьЗапрос.Себестоимость) / ВесьЗапрос.ОплатаЗаказа * 100
                ИНАЧЕ 0
            КОНЕЦ) КАК Рентабельность,
        СУММА((ВесьЗапрос.ОплатаЗаказа - ВесьЗапрос.Себестоимость) * ВесьЗапрос.Процент / 100) КАК ОплатаСотруднику,
        ВесьЗапрос.Себестоимость КАК СебестоимостьЗаказа
    ИЗ
        (ВЫБРАТЬ
            Заказы.ЗаказПокупателя КАК ЗаказПокупателя,
            Заказы.Сотрудник КАК Сотрудник,
            Заказы.СуммаДокумента КАК СуммаЗаказа,
            Заказы.РольСотрудника КАК РольСотрудника,
            ПроцентыСотрудниковСрезПоследних.Процент КАК Процент,
            СУММА(ОплатаСчетовИЗаказовОбороты.СуммаОплатыОборот) КАК СуммаОплатыОборот,
            СУММА(ОплатаСчетовИЗаказовОбороты.СуммаАвансаОборот) КАК СуммаАвансаОборот,
            СУММА(ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток) КАК ОсталосьОтгрузить,
            СУММА(ЕСТЬNULL(СебестоимостьЗаказов.Сумма, 0)) КАК Себестоимость,
            СУММА(ВЫБОР
                    КОГДА ОплатаСчетовИЗаказовОбороты.СуммаОплатыОборот + ОплатаСчетовИЗаказовОбороты.СуммаАвансаОборот > Заказы.СуммаДокумента
                        ТОГДА Заказы.СуммаДокумента
                    ИНАЧЕ ОплатаСчетовИЗаказовОбороты.СуммаОплатыОборот + ОплатаСчетовИЗаказовОбороты.СуммаАвансаОборот
                КОНЕЦ) КАК ОплатаЗаказа
        ИЗ
            (ВЫБРАТЬ
                ЗаказПокупателя.Ссылка КАК ЗаказПокупателя,
                ЗаказПокупателя.Куратор КАК Сотрудник,
                "Куратор" КАК РольСотрудника,
                ЗаказПокупателя.СуммаДокумента КАК СуммаДокумента
            ИЗ
                (ВЫБРАТЬ
                    ОплатаСчетовИЗаказовОбороты.СчетНаОплату КАК СчетНаОплату,
                    МАКСИМУМ(ОплатаСчетовИЗаказовОбороты.Период) КАК ДатаПоследнейОплаты
                ИЗ
                    РегистрНакопления.ОплатаСчетовИЗаказов.Обороты(&НачалоПериода, &КонецПериода, Регистратор, ) КАК ОплатаСчетовИЗаказовОбороты
                
                СГРУППИРОВАТЬ ПО
                    ОплатаСчетовИЗаказовОбороты.СчетНаОплату) КАК ВложенныйЗапрос
                    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ЗаказПокупателя
                    ПО (ЗаказПокупателя.Ссылка = ВложенныйЗапрос.СчетНаОплату)
            ГДЕ
                (ЗаказПокупателя.Куратор <> НЕОПРЕДЕЛЕНО
                        ИЛИ ЗаказПокупателя.Куратор <> ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка))
                И ЗаказПокупателя.Проведен = ИСТИНА
                И ЗаказПокупателя.ПометкаУдаления = ЛОЖЬ
            
            СГРУППИРОВАТЬ ПО
                ЗаказПокупателя.Ссылка,
                ЗаказПокупателя.Куратор,
                ЗаказПокупателя.СуммаДокумента
            
            ОБЪЕДИНИТЬ ВСЕ
            
            ВЫБРАТЬ
                ЗаказПокупателя.Ссылка,
                ЗаказПокупателя.МенеджерДизайнер,
                "Менеджер-дизайнер",
                ЗаказПокупателя.СуммаДокумента
            ИЗ
                (ВЫБРАТЬ
                    ОплатаСчетовИЗаказовОбороты.СчетНаОплату КАК СчетНаОплату,
                    МАКСИМУМ(ОплатаСчетовИЗаказовОбороты.Период) КАК ДатаПоследнейОплаты
                ИЗ
                    РегистрНакопления.ОплатаСчетовИЗаказов.Обороты(&НачалоПериода, &КонецПериода, Регистратор, ) КАК ОплатаСчетовИЗаказовОбороты
                
                СГРУППИРОВАТЬ ПО
                    ОплатаСчетовИЗаказовОбороты.СчетНаОплату) КАК ВложенныйЗапрос
                    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ЗаказПокупателя
                    ПО (ЗаказПокупателя.Ссылка = ВложенныйЗапрос.СчетНаОплату)
            ГДЕ
                (ЗаказПокупателя.МенеджерДизайнер <> НЕОПРЕДЕЛЕНО
                        ИЛИ ЗаказПокупателя.МенеджерДизайнер <> ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка))
                И ЗаказПокупателя.Проведен = ИСТИНА
                И ЗаказПокупателя.ПометкаУдаления = ЛОЖЬ
            
            СГРУППИРОВАТЬ ПО
                ЗаказПокупателя.Ссылка,
                ЗаказПокупателя.МенеджерДизайнер,
                ЗаказПокупателя.СуммаДокумента) КАК Заказы
                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПроцентыСотрудников.СрезПоследних(&КонецПериода, ) КАК ПроцентыСотрудниковСрезПоследних
                ПО Заказы.Сотрудник = ПроцентыСотрудниковСрезПоследних.Сотрудник
                ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОплатаСчетовИЗаказов.Обороты(, , , ) КАК ОплатаСчетовИЗаказовОбороты
                ПО Заказы.ЗаказПокупателя = ОплатаСчетовИЗаказовОбороты.СчетНаОплату
                ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты(, , , , ) КАК ЗаказыПокупателейОстаткиИОбороты
                ПО Заказы.ЗаказПокупателя = ЗаказыПокупателейОстаткиИОбороты.ЗаказПокупателя
                ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                    Запасы.ЗаказПокупателя КАК ЗаказПокупателя,
                    СУММА(Запасы.Сумма) КАК Сумма
                ИЗ
                    РегистрНакопления.Запасы КАК Запасы
                ГДЕ
                    Запасы.ЗатратыНаВыпуск = ИСТИНА
                    И Запасы.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
                
                СГРУППИРОВАТЬ ПО
                    Запасы.ЗаказПокупателя) КАК СебестоимостьЗаказов
                ПО Заказы.ЗаказПокупателя = СебестоимостьЗаказов.ЗаказПокупателя
        
        СГРУППИРОВАТЬ ПО
            Заказы.ЗаказПокупателя,
            Заказы.Сотрудник,
            Заказы.РольСотрудника,
            ПроцентыСотрудниковСрезПоследних.Процент,
            Заказы.СуммаДокумента
        
        ОБЪЕДИНИТЬ ВСЕ
        
        ВЫБРАТЬ
            Расходные.Ссылка,
            Расходные.Сотрудник,
            Расходные.СуммаДокумента,
            Расходные.РольСотрудника,
            ПроцентыСотрудниковСрезПоследних.Процент,
            NULL,
            NULL,
            СУММА(0),
            СУММА(ЕСТЬNULL(СебестоимостьПРодаж.Сумма, 0)),
            СУММА(РасчетыСПокупателямиОбороты.СуммаРасход)
        ИЗ
            (ВЫБРАТЬ
                РасходнаяНакладная.Ссылка КАК Ссылка,
                СУММА(РасходнаяНакладная.СуммаДокумента) КАК СуммаДокумента,
                РасходнаяНакладная.Куратор КАК Сотрудник,
                "Куратор" КАК РольСотрудника
            ИЗ
                (ВЫБРАТЬ
                    РасчетыСПокупателямиОбороты.Документ КАК Документ,
                    МАКСИМУМ(РасчетыСПокупателямиОбороты.Период) КАК Период
                ИЗ
                    РегистрНакопления.РасчетыСПокупателями.Обороты(&НачалоПериода, &КонецПериода, Регистратор, Документ ССЫЛКА Документ.РасходнаяНакладная) КАК РасчетыСПокупателямиОбороты
                ГДЕ
                    (РасчетыСПокупателямиОбороты.Документ.Заказ = НЕОПРЕДЕЛЕНО
                            ИЛИ РасчетыСПокупателямиОбороты.Документ.Заказ = ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
                            ИЛИ РасчетыСПокупателямиОбороты.Документ.Заказ = ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка))
                
                СГРУППИРОВАТЬ ПО
                    РасчетыСПокупателямиОбороты.Документ) КАК ВложенныйЗапрос
                    ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладная КАК РасходнаяНакладная
                    ПО ВложенныйЗапрос.Документ = РасходнаяНакладная.Ссылка
            ГДЕ
                (РасходнаяНакладная.Заказ = НЕОПРЕДЕЛЕНО
                        ИЛИ РасходнаяНакладная.Заказ = ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
                        ИЛИ РасходнаяНакладная.Заказ = ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка))
            
            СГРУППИРОВАТЬ ПО
                РасходнаяНакладная.Ссылка,
                РасходнаяНакладная.Куратор
            
            ОБЪЕДИНИТЬ ВСЕ
            
            ВЫБРАТЬ
                РасходнаяНакладная.Ссылка,
                РасходнаяНакладная.СуммаДокумента,
                РасходнаяНакладная.МенеджерДизайнер,
                "Менеджер-дизайнер"
            ИЗ
                (ВЫБРАТЬ
                    РасчетыСПокупателямиОбороты.Документ КАК Документ,
                    МАКСИМУМ(РасчетыСПокупателямиОбороты.Период) КАК Период
                ИЗ
                    РегистрНакопления.РасчетыСПокупателями.Обороты(&НачалоПериода, &КонецПериода, Регистратор, Документ ССЫЛКА Документ.РасходнаяНакладная) КАК РасчетыСПокупателямиОбороты
                
                СГРУППИРОВАТЬ ПО
                    РасчетыСПокупателямиОбороты.Документ) КАК ВложенныйЗапрос
                    ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладная КАК РасходнаяНакладная
                    ПО ВложенныйЗапрос.Документ = РасходнаяНакладная.Ссылка
            ГДЕ
                (РасходнаяНакладная.Заказ = НЕОПРЕДЕЛЕНО
                        ИЛИ РасходнаяНакладная.Заказ = ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
                        ИЛИ РасходнаяНакладная.Заказ = ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка))) КАК Расходные
                ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСПокупателями.Обороты(, , , ТипРасчетов = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Долг)) КАК РасчетыСПокупателямиОбороты
                ПО Расходные.Ссылка = РасчетыСПокупателямиОбороты.Документ
                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПроцентыСотрудников.СрезПоследних(&КонецПериода, ) КАК ПроцентыСотрудниковСрезПоследних
                ПО Расходные.Сотрудник = ПроцентыСотрудниковСрезПоследних.Сотрудник
                ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                    СУММА(Запасы.Сумма) КАК Сумма,
                    Запасы.ДокументПродажи КАК ДокументПродажи
                ИЗ
                    РегистрНакопления.Запасы КАК Запасы
                
                СГРУППИРОВАТЬ ПО
                    Запасы.ДокументПродажи) КАК СебестоимостьПРодаж
                ПО Расходные.Ссылка = СебестоимостьПРодаж.ДокументПродажи
        
        СГРУППИРОВАТЬ ПО
            Расходные.Ссылка,
            Расходные.Сотрудник,
            Расходные.СуммаДокумента,
            Расходные.РольСотрудника,
            ПроцентыСотрудниковСрезПоследних.Процент) КАК ВесьЗапрос
    
    СГРУППИРОВАТЬ ПО
        ВесьЗапрос.ЗаказПокупателя,
        ВесьЗапрос.Сотрудник,
        ВесьЗапрос.РольСотрудника,
        ВесьЗапрос.Процент,
        ВесьЗапрос.Себестоимость,
        ВЫБОР
            КОГДА ЕСТЬNULL(ВесьЗапрос.ОсталосьОтгрузить, 0) = 0
                ТОГДА ИСТИНА
            ИНАЧЕ ЛОЖЬ
        КОНЕЦ,
        ВЫБОР
            КОГДА ВесьЗапрос.ОплатаЗаказа >= ВесьЗапрос.СуммаЗаказа
                ТОГДА ИСТИНА
            ИНАЧЕ ЛОЖЬ
        КОНЕЦ) КАК Вложенный
12 Dimaster
 
17.10.13
02:34
Результат по прежнему разнится..
13 Dimaster
 
17.10.13
04:06
В итоге я нашел где в логике ощибся, однако почему запрос так себя ведет в СКД до сих пор не ясно..
14 Defender aka LINN
 
17.10.13
08:05
(13) А ты вообще пытался это выяснить? Если да, то как? Если нет, то почему?
15 Dimaster
 
17.10.13
16:06
Пытался через консоль сверять какие документы попадают/непопадают в выборку.. Сегодня вот узнал что есть некая консоль СКД, буду пробовать через нее прогонять..
16 Dimaster
 
20.10.13
23:45
ВЫБРАТЬ
    Вложенный.Сотрудник КАК Сотрудник,
    Вложенный.РольСотрудника КАК РольСотрудника,
    Вложенный.Документ КАК Документ,
    Вложенный.СуммаЗаказа,
    Вложенный.ОсталосьОтгрузить,
    Вложенный.ОплатаЗаказа,
    Вложенный.СебестоимостьЗаказа,
    Вложенный.КоличествоЗаказов,
    Вложенный.Отгружен,
    Вложенный.Оплачен,
    Вложенный.СреднийЧек,
    Вложенный.ПрибыльЗаказа,
    Вложенный.ОплатаСотруднику,
    Вложенный.ПроцентСотрудника,
    Вложенный.Рентабельность
ИЗ
    (ВЫБРАТЬ
        ВесьЗапрос.ЗаказПокупателя КАК Документ,
        ВесьЗапрос.Сотрудник КАК Сотрудник,
        СУММА(ВесьЗапрос.СуммаЗаказа) КАК СуммаЗаказа,
        ВесьЗапрос.РольСотрудника КАК РольСотрудника,
        СУММА(ВесьЗапрос.ОсталосьОтгрузить) КАК ОсталосьОтгрузить,
        СУММА(ВесьЗапрос.ОплатаЗаказа) КАК ОплатаЗаказа,
        ВесьЗапрос.Себестоимость КАК СебестоимостьЗаказа,
        СУММА(КоличестваЗаказов.ЗаказПокупателя) КАК КоличествоЗаказов,
        ЕСТЬNULL(ПроцентыСотрудниковСрезПоследних.Процент, 0) КАК ПроцентСотрудника,
        ВесьЗапрос.Отгружен КАК Отгружен,
        ВЫБОР
            КОГДА ВесьЗапрос.ОплатаЗаказа >= ВесьЗапрос.СуммаЗаказа
                    И ВесьЗапрос.ОплатаПрошлого < ВесьЗапрос.СуммаЗаказа
                ТОГДА ИСТИНА
            ИНАЧЕ ЛОЖЬ
        КОНЕЦ КАК Оплачен,
        ВЫБОР
            КОГДА КоличестваЗаказов.ЗаказПокупателя <> 0
                ТОГДА ВесьЗапрос.ОплатаЗаказа / КоличестваЗаказов.ЗаказПокупателя
            ИНАЧЕ 0
        КОНЕЦ КАК СреднийЧек,
        СУММА(ВесьЗапрос.ОплатаЗаказа - ВесьЗапрос.Себестоимость) КАК ПрибыльЗаказа,
        СУММА((ВесьЗапрос.ОплатаЗаказа - ВесьЗапрос.Себестоимость) * ЕСТЬNULL(ПроцентыСотрудниковСрезПоследних.Процент, 0) / 100) КАК ОплатаСотруднику,
        СРЕДНЕЕ(ВЫБОР
                КОГДА ВесьЗапрос.ОплатаЗаказа <> 0
                    ТОГДА (ВесьЗапрос.ОплатаЗаказа - ВесьЗапрос.Себестоимость) / ВесьЗапрос.ОплатаЗаказа
                ИНАЧЕ 0
            КОНЕЦ) КАК Рентабельность
    ИЗ
        (ВЫБРАТЬ
            Заказы.ЗаказПокупателя КАК ЗаказПокупателя,
            Заказы.Сотрудник КАК Сотрудник,
            Заказы.СуммаДокумента КАК СуммаЗаказа,
            Заказы.РольСотрудника КАК РольСотрудника,
            СУММА(ЕСТЬNULL(ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток, 0)) КАК ОсталосьОтгрузить,
            СУММА(ЕСТЬNULL(СебестоимостьЗаказов.Сумма, 0)) КАК Себестоимость,
            СУММА(ЕСТЬNULL(ОплатаСчетовИЗаказовОбороты.СуммаАвансаОборот, 0) + ЕСТЬNULL(ОплатаСчетовИЗаказовОбороты.СуммаОплатыОборот, 0)) КАК ОплатаЗаказа,
            ВЫБОР
                КОГДА ЕСТЬNULL(ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток, 0) <= 0
                    ТОГДА ИСТИНА
                ИНАЧЕ ЛОЖЬ
            КОНЕЦ КАК Отгружен,
            СУММА(ЕСТЬNULL(ОплатаСчетовИЗаказовОбороты1.СуммаАвансаОборот, 0) + ЕСТЬNULL(ОплатаСчетовИЗаказовОбороты1.СуммаОплатыОборот, 0)) КАК ОплатаПрошлого
        ИЗ
            (ВЫБРАТЬ
                ВложенныйЗапрос.ЗаказПокупателя.Ссылка КАК ЗаказПокупателя,
                ВложенныйЗапрос.ЗаказПокупателя.Куратор КАК Сотрудник,
                "Куратор" КАК РольСотрудника,
                ВложенныйЗапрос.ЗаказПокупателя.СуммаДокумента КАК СуммаДокумента
            ИЗ
                (ВЫБРАТЬ
                    ОплатаСчетовИЗаказовОбороты.СчетНаОплату КАК ЗаказПокупателя
                ИЗ
                    РегистрНакопления.ОплатаСчетовИЗаказов.Обороты(&НачалоПериода, &КонецПериода, Регистратор, СчетНаОплату ССЫЛКА Документ.ЗаказПокупателя) КАК ОплатаСчетовИЗаказовОбороты
                
                СГРУППИРОВАТЬ ПО
                    ОплатаСчетовИЗаказовОбороты.СчетНаОплату) КАК ВложенныйЗапрос
            
            СГРУППИРОВАТЬ ПО
                ВложенныйЗапрос.ЗаказПокупателя.Куратор,
                ВложенныйЗапрос.ЗаказПокупателя.СуммаДокумента,
                ВложенныйЗапрос.ЗаказПокупателя.Ссылка
            
            ОБЪЕДИНИТЬ ВСЕ
            
            ВЫБРАТЬ
                ВложенныйЗапрос.СчетНаОплату.Ссылка,
                ВложенныйЗапрос.СчетНаОплату.МенеджерДизайнер,
                "Менеджер-дизайнер",
                ВложенныйЗапрос.СчетНаОплату.СуммаДокумента
            ИЗ
                (ВЫБРАТЬ
                    ОплатаСчетовИЗаказовОбороты.СчетНаОплату КАК СчетНаОплату
                ИЗ
                    РегистрНакопления.ОплатаСчетовИЗаказов.Обороты(&НачалоПериода, &КонецПериода, Регистратор, СчетНаОплату ССЫЛКА Документ.ЗаказПокупателя) КАК ОплатаСчетовИЗаказовОбороты
                
                СГРУППИРОВАТЬ ПО
                    ОплатаСчетовИЗаказовОбороты.СчетНаОплату) КАК ВложенныйЗапрос
            
            СГРУППИРОВАТЬ ПО
                ВложенныйЗапрос.СчетНаОплату.МенеджерДизайнер,
                ВложенныйЗапрос.СчетНаОплату.СуммаДокумента,
                ВложенныйЗапрос.СчетНаОплату.Ссылка) КАК Заказы
                ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОплатаСчетовИЗаказов.Обороты(, &КонецПериода, , ) КАК ОплатаСчетовИЗаказовОбороты
                ПО Заказы.ЗаказПокупателя = ОплатаСчетовИЗаказовОбороты.СчетНаОплату
                ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , ) КАК ЗаказыПокупателейОстаткиИОбороты
                ПО Заказы.ЗаказПокупателя = ЗаказыПокупателейОстаткиИОбороты.ЗаказПокупателя
                ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                    Запасы.ЗаказПокупателя КАК ЗаказПокупателя,
                    СУММА(Запасы.Сумма) КАК Сумма
                ИЗ
                    РегистрНакопления.Запасы КАК Запасы
                ГДЕ
                    Запасы.ЗатратыНаВыпуск = ИСТИНА
                    И Запасы.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
                
                СГРУППИРОВАТЬ ПО
                    Запасы.ЗаказПокупателя) КАК СебестоимостьЗаказов
                ПО Заказы.ЗаказПокупателя = СебестоимостьЗаказов.ЗаказПокупателя
                ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОплатаСчетовИЗаказов.Обороты(, &НачалоПериода, , ) КАК ОплатаСчетовИЗаказовОбороты1
                ПО Заказы.ЗаказПокупателя = ОплатаСчетовИЗаказовОбороты1.СчетНаОплату
        
        СГРУППИРОВАТЬ ПО
            Заказы.ЗаказПокупателя,
            Заказы.Сотрудник,
            Заказы.РольСотрудника,
            Заказы.СуммаДокумента,
            ВЫБОР
                КОГДА ЕСТЬNULL(ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток, 0) <= 0
                    ТОГДА ИСТИНА
                ИНАЧЕ ЛОЖЬ
            КОНЕЦ
        
        ОБЪЕДИНИТЬ ВСЕ
        
        ВЫБРАТЬ
            Расходные.Документ,
            Расходные.Сотрудник,
            Расходные.СуммаДокумента,
            Расходные.РольСотрудника,
            СУММА(0),
            СУММА(ЕСТЬNULL(СебестоимостьПРодаж.Сумма, 0)),
            СУММА(РасчетыСПокупателямиОбороты.СуммаРасход),
            ИСТИНА,
            СУММА(ЕСТЬNULL(РасчетыСПокупателямиОбороты1.СуммаРасход, 0))
        ИЗ
            (ВЫБРАТЬ
                "Куратор" КАК РольСотрудника,
                ВложенныйЗапрос.Документ.Куратор КАК Сотрудник,
                ВложенныйЗапрос.Документ.СуммаДокумента КАК СуммаДокумента,
                ВложенныйЗапрос.Документ.Ссылка КАК Документ
            ИЗ
                (ВЫБРАТЬ
                    РасчетыСПокупателямиОбороты.Документ КАК Документ
                ИЗ
                    РегистрНакопления.РасчетыСПокупателями.Обороты(&НачалоПериода, &КонецПериода, , Документ ССЫЛКА Документ.РасходнаяНакладная) КАК РасчетыСПокупателямиОбороты) КАК ВложенныйЗапрос
            
            ОБЪЕДИНИТЬ ВСЕ
            
            ВЫБРАТЬ
                "Менеджер-дизайнер",
                ВложенныйЗапрос.Документ.МенеджерДизайнер,
                ВложенныйЗапрос.Документ.СуммаДокумента,
                ВложенныйЗапрос.Документ.Ссылка
            ИЗ
                (ВЫБРАТЬ
                    РасчетыСПокупателямиОбороты.Документ КАК Документ
                ИЗ
                    РегистрНакопления.РасчетыСПокупателями.Обороты(&НачалоПериода, &КонецПериода, Регистратор, Документ ССЫЛКА Документ.РасходнаяНакладная) КАК РасчетыСПокупателямиОбороты
                
                СГРУППИРОВАТЬ ПО
                    РасчетыСПокупателямиОбороты.Документ) КАК ВложенныйЗапрос) КАК Расходные
                ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСПокупателями.Обороты(, &КонецПериода, , ТипРасчетов = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Долг)) КАК РасчетыСПокупателямиОбороты
                ПО Расходные.Документ = РасчетыСПокупателямиОбороты.Документ
                ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСПокупателями.Обороты(, &НачалоПериода, , ) КАК РасчетыСПокупателямиОбороты1
                ПО Расходные.Документ = РасчетыСПокупателямиОбороты1.Документ
                ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                    СУММА(Запасы.Сумма) КАК Сумма,
                    Запасы.ДокументПродажи КАК ДокументПродажи
                ИЗ
                    РегистрНакопления.Запасы КАК Запасы
                
                СГРУППИРОВАТЬ ПО
                    Запасы.ДокументПродажи) КАК СебестоимостьПРодаж
                ПО Расходные.Документ = СебестоимостьПРодаж.ДокументПродажи
        ГДЕ
            (Расходные.Документ.Заказ = ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
                    ИЛИ Расходные.Документ.Заказ = НЕОПРЕДЕЛЕНО)
        
        СГРУППИРОВАТЬ ПО
            Расходные.РольСотрудника,
            Расходные.Сотрудник,
            Расходные.СуммаДокумента,
            Расходные.Документ) КАК ВесьЗапрос
            ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                ВесьЗапрос.Сотрудник КАК Сотрудник,
                ВесьЗапрос.РольСотрудника КАК РольСотрудника,
                КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВесьЗапрос.ЗаказПокупателя) КАК ЗаказПокупателя
            ИЗ
                (ВЫБРАТЬ
                    Заказы.ЗаказПокупателя КАК ЗаказПокупателя,
                    Заказы.Сотрудник КАК Сотрудник,
                    Заказы.СуммаДокумента КАК СуммаЗаказа,
                    Заказы.РольСотрудника КАК РольСотрудника,
                    ПроцентыСотрудниковСрезПоследних.Процент КАК Процент,
                    СУММА(ОплатаСчетовИЗаказовОбороты.СуммаОплатыОборот) КАК СуммаОплатыОборот,
                    СУММА(ОплатаСчетовИЗаказовОбороты.СуммаАвансаОборот) КАК СуммаАвансаОборот,
                    СУММА(ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток) КАК ОсталосьОтгрузить,
                    СУММА(ЕСТЬNULL(СебестоимостьЗаказов.Сумма, 0)) КАК Себестоимость,
                    СУММА(ВЫБОР
                            КОГДА ОплатаСчетовИЗаказовОбороты.СуммаОплатыОборот + ОплатаСчетовИЗаказовОбороты.СуммаАвансаОборот > Заказы.СуммаДокумента
                                ТОГДА Заказы.СуммаДокумента
                            ИНАЧЕ ОплатаСчетовИЗаказовОбороты.СуммаОплатыОборот + ОплатаСчетовИЗаказовОбороты.СуммаАвансаОборот
                        КОНЕЦ) КАК ОплатаЗаказа,
                    Заказы.ДатаПоследнейОплаты КАК ДатаПоследнейОплаты
                ИЗ
                    (ВЫБРАТЬ
                        ЗаказПокупателя.Ссылка КАК ЗаказПокупателя,
                        ЗаказПокупателя.Куратор КАК Сотрудник,
                        "Куратор" КАК РольСотрудника,
                        ЗаказПокупателя.СуммаДокумента КАК СуммаДокумента,
                        ВложенныйЗапрос.ДатаПоследнейОплаты КАК ДатаПоследнейОплаты
                    ИЗ
                        (ВЫБРАТЬ
                            ОплатаСчетовИЗаказовОбороты.СчетНаОплату КАК СчетНаОплату,
                            МАКСИМУМ(ОплатаСчетовИЗаказовОбороты.Период) КАК ДатаПоследнейОплаты
                        ИЗ
                            РегистрНакопления.ОплатаСчетовИЗаказов.Обороты(, , Регистратор, ) КАК ОплатаСчетовИЗаказовОбороты
                        
                        СГРУППИРОВАТЬ ПО
                            ОплатаСчетовИЗаказовОбороты.СчетНаОплату) КАК ВложенныйЗапрос
                            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ЗаказПокупателя
                            ПО (ЗаказПокупателя.Ссылка = ВложенныйЗапрос.СчетНаОплату)
                    ГДЕ
                        (ЗаказПокупателя.Куратор <> НЕОПРЕДЕЛЕНО
                                ИЛИ ЗаказПокупателя.Куратор <> ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка))
                        И ЗаказПокупателя.Проведен = ИСТИНА
                        И ЗаказПокупателя.ПометкаУдаления = ЛОЖЬ
                    
                    СГРУППИРОВАТЬ ПО
                        ЗаказПокупателя.Ссылка,
                        ЗаказПокупателя.Куратор,
                        ЗаказПокупателя.СуммаДокумента,
                        ВложенныйЗапрос.ДатаПоследнейОплаты
                    
                    ОБЪЕДИНИТЬ ВСЕ
                    
                    ВЫБРАТЬ
                        ЗаказПокупателя.Ссылка,
                        ЗаказПокупателя.МенеджерДизайнер,
                        "Менеджер-дизайнер",
                        ЗаказПокупателя.СуммаДокумента,
                        ВложенныйЗапрос.ДатаПоследнейОплаты
                    ИЗ
                        (ВЫБРАТЬ
                            ОплатаСчетовИЗаказовОбороты.СчетНаОплату КАК СчетНаОплату,
                            МАКСИМУМ(ОплатаСчетовИЗаказовОбороты.Период) КАК ДатаПоследнейОплаты
                        ИЗ
                            РегистрНакопления.ОплатаСчетовИЗаказов.Обороты(, , Регистратор, ) КАК ОплатаСчетовИЗаказовОбороты
                        
                        СГРУППИРОВАТЬ ПО
                            ОплатаСчетовИЗаказовОбороты.СчетНаОплату) КАК ВложенныйЗапрос
                            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ЗаказПокупателя
                            ПО (ЗаказПокупателя.Ссылка = ВложенныйЗапрос.СчетНаОплату)
                    ГДЕ
                        (ЗаказПокупателя.МенеджерДизайнер <> НЕОПРЕДЕЛЕНО
                                ИЛИ ЗаказПокупателя.МенеджерДизайнер <> ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка))
                        И ЗаказПокупателя.Проведен = ИСТИНА
                        И ЗаказПокупателя.ПометкаУдаления = ЛОЖЬ
                    
                    СГРУППИРОВАТЬ ПО
                        ЗаказПокупателя.Ссылка,
                        ЗаказПокупателя.МенеджерДизайнер,
                        ЗаказПокупателя.СуммаДокумента,
                        ВложенныйЗапрос.ДатаПоследнейОплаты) КАК Заказы
                        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПроцентыСотрудников.СрезПоследних(&КонецПериода, ) КАК ПроцентыСотрудниковСрезПоследних
                        ПО Заказы.Сотрудник = ПроцентыСотрудниковСрезПоследних.Сотрудник
                        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОплатаСчетовИЗаказов.Обороты(, , , ) КАК ОплатаСчетовИЗаказовОбороты
                        ПО Заказы.ЗаказПокупателя = ОплатаСчетовИЗаказовОбороты.СчетНаОплату
                        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , ) КАК ЗаказыПокупателейОстаткиИОбороты
                        ПО Заказы.ЗаказПокупателя = ЗаказыПокупателейОстаткиИОбороты.ЗаказПокупателя
                        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                            Запасы.ЗаказПокупателя КАК ЗаказПокупателя,
                            СУММА(Запасы.Сумма) КАК Сумма
                        ИЗ
                            РегистрНакопления.Запасы КАК Запасы
                        ГДЕ
                            Запасы.ЗатратыНаВыпуск = ИСТИНА
                            И Запасы.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
                        
                        СГРУППИРОВАТЬ ПО
                            Запасы.ЗаказПокупателя) КАК СебестоимостьЗаказов
                        ПО Заказы.ЗаказПокупателя = СебестоимостьЗаказов.ЗаказПокупателя
                
                СГРУППИРОВАТЬ ПО
                    Заказы.ЗаказПокупателя,
                    Заказы.Сотрудник,
                    Заказы.РольСотрудника,
                    ПроцентыСотрудниковСрезПоследних.Процент,
                    Заказы.СуммаДокумента,
                    Заказы.ДатаПоследнейОплаты
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    Расходные.Ссылка,
                    Расходные.Сотрудник,
                    Расходные.СуммаДокумента,
                    Расходные.РольСотрудника,
                    ПроцентыСотрудниковСрезПоследних.Процент,
                    NULL,
                    NULL,
                    СУММА(0),
                    СУММА(ЕСТЬNULL(СебестоимостьПРодаж.Сумма, 0)),
                    СУММА(РасчетыСПокупателямиОбороты.СуммаРасход),
                    Расходные.ДатаПоследнейОплаты
                ИЗ
                    (ВЫБРАТЬ
                        РасходнаяНакладная.Ссылка КАК Ссылка,
                        СУММА(РасходнаяНакладная.СуммаДокумента) КАК СуммаДокумента,
                        РасходнаяНакладная.Куратор КАК Сотрудник,
                        "Куратор" КАК РольСотрудника,
                        ВложенныйЗапрос.Период КАК ДатаПоследнейОплаты
                    ИЗ
                        (ВЫБРАТЬ
                            РасчетыСПокупателямиОбороты.Документ КАК Документ,
                            МАКСИМУМ(РасчетыСПокупателямиОбороты.Период) КАК Период
                        ИЗ
                            РегистрНакопления.РасчетыСПокупателями.Обороты(, , Регистратор, Документ ССЫЛКА Документ.РасходнаяНакладная) КАК РасчетыСПокупателямиОбороты
                        ГДЕ
                            (РасчетыСПокупателямиОбороты.Документ.Заказ = НЕОПРЕДЕЛЕНО
                                    ИЛИ РасчетыСПокупателямиОбороты.Документ.Заказ = ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
                                    ИЛИ РасчетыСПокупателямиОбороты.Документ.Заказ = ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка))
                        
                        СГРУППИРОВАТЬ ПО
                            РасчетыСПокупателямиОбороты.Документ) КАК ВложенныйЗапрос
                            ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладная КАК РасходнаяНакладная
                            ПО ВложенныйЗапрос.Документ = РасходнаяНакладная.Ссылка
                    ГДЕ
                        (РасходнаяНакладная.Заказ = НЕОПРЕДЕЛЕНО
                                ИЛИ РасходнаяНакладная.Заказ = ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
                                ИЛИ РасходнаяНакладная.Заказ = ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка))
                    
                    СГРУППИРОВАТЬ ПО
                        РасходнаяНакладная.Ссылка,
                        РасходнаяНакладная.Куратор,
                        ВложенныйЗапрос.Период
                    
                    ОБЪЕДИНИТЬ ВСЕ
                    
                    ВЫБРАТЬ
                        РасходнаяНакладная.Ссылка,
                        РасходнаяНакладная.СуммаДокумента,
                        РасходнаяНакладная.МенеджерДизайнер,
                        "Менеджер-дизайнер",
                        ВложенныйЗапрос.Период
                    ИЗ
                        (ВЫБРАТЬ
                            РасчетыСПокупателямиОбороты.Документ КАК Документ,
                            МАКСИМУМ(РасчетыСПокупателямиОбороты.Период) КАК Период
                        ИЗ
                            РегистрНакопления.РасчетыСПокупателями.Обороты(, , Регистратор, Документ ССЫЛКА Документ.РасходнаяНакладная) КАК РасчетыСПокупателямиОбороты
                        
                        СГРУППИРОВАТЬ ПО
                            РасчетыСПокупателямиОбороты.Документ) КАК ВложенныйЗапрос
                            ЛЕВОЕ СОЕДИНЕНИЕ Докумен
17 Necessitudo
 
23.10.13
16:20
Удивлю наверное, но компоновка данных может менять текст запроса в целях оптимизации.
18 WildSery
 
23.10.13
16:35
Поддерживаю - отлаживать такие ошибки следует исключительно в консоли СКД, поскольку компоновка слишком интеллектуально меняет текст запроса.
19 Dimaster
 
27.10.13
10:09
В общем в итоге оказалось что если Начало периода отличается от &НачалоПериода то надо ставить что то типа {&ДругаяДата} иначе СКД сама вместо параметра подставляет &НачалоПериода
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой