Имя: Пароль:
1C
1С v8
Работа запроса в СКД и в консоли запросов: разница!
0 Grusswelle
 
25.11.11
12:04
Сабж! От чего может зависеть?! Текст запроса, параметры - всё Ctrl+C - Ctrl+V...

ВЫБРАТЬ
   ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.Контрагент,
   ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.алкПунктРазгрузки КАК ПунктРазгрузки,
   ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом КАК Накладная,
   ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.СуммаДокумента КАК СуммаДокумента,
   ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности КАК Отсрочка,
   ВЫБОР
       КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОтгрузки <> &ПустаяДата
           ТОГДА РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОтгрузки, ДЕНЬ, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности), &Период, ДЕНЬ)
       ИНАЧЕ РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Дата, ДЕНЬ, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности), &Период, ДЕНЬ)
   КОНЕЦ КАК ДнейПросрочки,
   ВЫБОР
       КОГДА РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ВЫБОР
                       КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОтгрузки <> &ПустаяДата
                           ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОтгрузки
                       ИНАЧЕ ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Дата
                   КОНЕЦ, ДЕНЬ, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности), &Период, ДЕНЬ) > 0
           ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток
       ИНАЧЕ 0
   КОНЕЦ КАК СуммаПросроченнойЗадолженности,
   СоответствиеОрганизаций.Организация1,
   ВЫБОР
       КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Организация = СоответствиеОрганизаций.Организация1
           ТОГДА ВЫБОР
                   КОГДА РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ВЫБОР
                                   КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОтгрузки <> &ПустаяДата
                                       ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОтгрузки
                                   ИНАЧЕ ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Дата
                               КОНЕЦ, ДЕНЬ, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности), &Период, ДЕНЬ) > 0
                       ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток
                   ИНАЧЕ 0
               КОНЕЦ
       ИНАЧЕ 0
   КОНЕЦ КАК Д1,
   ВЫБОР
       КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Организация = СоответствиеОрганизаций.Организация1
           ТОГДА 0
       ИНАЧЕ ВЫБОР
               КОГДА РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ВЫБОР
                               КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОтгрузки <> &ПустаяДата
                                   ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОтгрузки
                               ИНАЧЕ ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Дата
                           КОНЕЦ, ДЕНЬ, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности), &Период, ДЕНЬ) > 0
                   ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток
               ИНАЧЕ 0
           КОНЕЦ
   КОНЕЦ КАК Д2,
   ДОБАВИТЬКДАТЕ(ВЫБОР
           КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОтгрузки <> &ПустаяДата
               ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОтгрузки
           ИНАЧЕ ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Дата
       КОНЕЦ, ДЕНЬ, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности) КАК ДатаОплаты,
   ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДоговорКонтрагента.Менеджер, "Не указан представитель") КАК Представитель,
   ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Номер КАК НомерНакладной,
   ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОтгрузки КАК ДатаНакладной,
   0 КАК Д0,
   ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток КАК Долг,
   ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.ДопустимаяСуммаЗадолженности КАК ДопустимаяСуммаЗадолженности,
   ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДоговорКонтрагента.Менеджер.Родитель.ПроцентШтрафа КАК ПроцентШтрафаРуководителя,
   ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДоговорКонтрагента.Менеджер.ПроцентШтрафа КАК ПроцентШтрафаМенеджера,
   ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.СуммаДокумента2 КАК СуммаДокумента2
ИЗ
   РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(, ДокументРасчетовСКонтрагентом ССЫЛКА Документ.РеализацияТоваровУслуг) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
           ПользователиРазрешенныеМенеджеры.Менеджер КАК РазрешенныйМенеджер
       ИЗ
           Справочник.Пользователи.РазрешенныеМенеджеры КАК ПользователиРазрешенныеМенеджеры
       ГДЕ
           ПользователиРазрешенныеМенеджеры.Ссылка = &Пользователь) КАК ЗапросРазрешенныхМенеджеров
       ПО (ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.Менеджер В (ЗапросРазрешенныхМенеджеров.РазрешенныйМенеджер)
               ИЛИ ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.Менеджер.Родитель В (ЗапросРазрешенныхМенеджеров.РазрешенныйМенеджер)
               ИЛИ ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.Менеджер.Родитель.Родитель В (ЗапросРазрешенныхМенеджеров.РазрешенныйМенеджер)
               ИЛИ ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.Менеджер.Родитель.Родитель.Родитель В (ЗапросРазрешенныхМенеджеров.РазрешенныйМенеджер)
               ИЛИ ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.Менеджер.Родитель.Родитель.Родитель.Родитель В (ЗапросРазрешенныхМенеджеров.РазрешенныйМенеджер)),
   РегистрСведений.СоответствиеОрганизаций КАК СоответствиеОрганизаций
ГДЕ
   (ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОтгрузки <> &ПустаяДата
           ИЛИ ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Дата <> &ПустаяДата)
1 Grusswelle
 
25.11.11
12:06
ЗЫ: пользователь один и тот же, никаких RLS  и т. д....
2 PVV65
 
25.11.11
12:10
В консоли запросов ты получаешь результат запроса, а в СКД результат запроса является исходной таблицей для компоновки, которая может еще очень многое сделать. Поэтому без схемы сравнивать два результата бессмысленно.
3 Grusswelle
 
25.11.11
12:18
(2) Не не не, убрал все группировки, вычисляемые поля и т. д., сравниваю два "плоских" результата.
4 Dzenn
 
гуру
25.11.11
12:20
Судя по коду, в частности по нагромождению неявных соединений, ты явно делаешь задачу через ..опу. А когда задача делается через ..опу, совет может быть только один - учиться делать не через ..опу. Например, ввести дополнительные регистры контроля прав и/или регистр, аккумулирующий данные под этот специфический отчёт. Стремись к тому, чтобы запрос был простым, как выстрел из дробовика, а не сложным, как путь нейтрона в синхрофазотроне. Думай как облегчить решение задачи, разложить её на более мелкие.
5 Grusswelle
 
25.11.11
12:24
(4) Моя задача как раз оптимизировать. Про простоту запроса и задач - согласен.
6 Defender aka LINN
 
25.11.11
12:27
(3) Это еще не говорит о том, что в консоли и в СКД выполняется один и тот же запрос.
7 Grusswelle
 
25.11.11
12:30
(6) Да. Буду делать так:
1. ТИИ базы;
2. Если не поможет - трейсить запросы SQL Server'а.
8 Defender aka LINN
 
25.11.11
12:34
(7) ППЦ. А просто ПОСМОТРЕТЬ текст запроса результирующий - не, не наш метод?
9 Inform
 
25.11.11
12:36
(0) Сравни запросы, с помощью http://its.1c.ru/db/metod81#content:3058:1 можно посмотреть запрос который геренит СКД.
10 Grusswelle
 
25.11.11
12:36
(9) О! Спасибо!
11 Axel2009
 
25.11.11
12:37
d xtv в чем разница то?
12 rs_trade
 
25.11.11
12:38
(7) на хрена все это делать? ты еще к поясу сходи поклонись.
13 Grusswelle
 
25.11.11
12:40
(12)Что предложить можешь?
14 Defender aka LINN
 
25.11.11
12:42
Хотя я и так могу причину назвать. У тебя тоже эта мерзкая галка стоит.
15 Grusswelle
 
25.11.11
12:46
(14) ??