Имя: Пароль:
1C
1С v8
Вопрос по работе с СКД
0 Baglandir
 
15.08.13
16:08
Написал запрос в консоле отчетов работает так как надо.
А вот СКД мне добавляет я параметра "НачалоПериода" и "КонецПериода"
. И сделать с ними в скд я ничего не могу. они там не удаляются.
И причем работают ети параметры  поверх моих, Тоесть я например задаю значение НачалоПрошлогоКвартала = 01.04.2013 а НачалоПериода  пустое - то у меня по регистру продаж берутся все движения с начала периода....


Если кто сталкивался с таким - помогите.


Вот сам запрос в нем кстати такого параметра как "НачалоПериода" вообще нету

ВЫБРАТЬ
    ТоварныйКредит.K,
    ТоварныйКредит.ПервыйКварталПрошлогоГодаСтоимостьОтгрузок,
    ТоварныйКредит.ТекущийКварталПрошлогоГодаСтоимостьОтгрузок,
    ТоварныйКредит.Контрагент,
    ТоварныйКредит.ДоговорКонтрагента,
    ТоварныйКредит.SS,
    ТоварныйКредит.V,
    ТоварныйКредит.N,
    ВЫБОР
        КОГДА ТоварныйКредит.N = 0
                ИЛИ ТоварныйКредит.V = 0
                ИЛИ ТоварныйКредит.SS = 0
                ИЛИ ТоварныйКредит.K = 0
            ТОГДА 0
        ИНАЧЕ ВЫБОР
                КОГДА ТоварныйКредит.N <= 30
                    ТОГДА (ТоварныйКредит.V * ТоварныйКредит.N / 30 + ТоварныйКредит.SS / 1.5) * ТоварныйКредит.K
                ИНАЧЕ (ТоварныйКредит.V * ТоварныйКредит.N / 30 + ТоварныйКредит.SS * 30 / ТоварныйКредит.N) * ТоварныйКредит.K
            КОНЕЦ
    КОНЕЦ КАК ТоварныйКредитДляКОнтрагента
ИЗ
    (ВЫБРАТЬ
        ЕСТЬNULL(РасчетКоефициентаК.К, 1) КАК K,
        РасчетКоефициентаК.ПервыйКварталПрошлогоГодаСтоимостьОтгрузок КАК ПервыйКварталПрошлогоГодаСтоимостьОтгрузок,
        РасчетКоефициентаК.ТекущийКварталПрошлогоГодаСтоимостьОтгрузок КАК ТекущийКварталПрошлогоГодаСтоимостьОтгрузок,
        ЕСТЬNULL(РасчетКоефициентаК.Контрагент, РасчетПоказателейVSS.Контрагент) КАК Контрагент,
        ЕСТЬNULL(РасчетКоефициентаК.ДоговорКонтрагента, РасчетПоказателейVSS.ДоговорКонтрагента) КАК ДоговорКонтрагента,
        РасчетПоказателейVSS.SS КАК SS,
        РасчетПоказателейVSS.V КАК V,
        ЕСТЬNULL(РасчетКоефициентаК.N, РасчетПоказателейVSS.N) КАК N
    ИЗ
        (ВЫБРАТЬ
            ВЫБОР
                КОГДА ПродажиТекущегоКварталаПрошлогоГода.СтоимостьОборот = 0
                        ИЛИ ПродажиПрошлогоКварталаПрошлогоГода.СтоимостьОборот = 0
                    ТОГДА 1
                ИНАЧЕ ПродажиТекущегоКварталаПрошлогоГода.СтоимостьОборот / ПродажиПрошлогоКварталаПрошлогоГода.СтоимостьОборот
            КОНЕЦ КАК К,
            ПродажиПрошлогоКварталаПрошлогоГода.СтоимостьОборот КАК ПервыйКварталПрошлогоГодаСтоимостьОтгрузок,
            ПродажиТекущегоКварталаПрошлогоГода.СтоимостьОборот КАК ТекущийКварталПрошлогоГодаСтоимостьОтгрузок,
            ЕСТЬNULL(ПродажиПрошлогоКварталаПрошлогоГода.Контрагент, ПродажиТекущегоКварталаПрошлогоГода.Контрагент) КАК Контрагент,
            ЕСТЬNULL(ПродажиПрошлогоКварталаПрошлогоГода.ДоговорКонтрагента, ПродажиТекущегоКварталаПрошлогоГода.ДоговорКонтрагента) КАК ДоговорКонтрагента,
            ЕСТЬNULL(ПродажиПрошлогоКварталаПрошлогоГода.ДоговорКонтрагентаДопустимоеЧислоДнейЗадолженности, ПродажиТекущегоКварталаПрошлогоГода.ДоговорКонтрагентаДопустимоеЧислоДнейЗадолженности) КАК N
        ИЗ
            (ВЫБРАТЬ
                ПродажиОбороты.Контрагент КАК Контрагент,
                ПродажиОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,
                ПродажиОбороты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности КАК ДоговорКонтрагентаДопустимоеЧислоДнейЗадолженности,
                СУММА(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьОборот,
                СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот
            ИЗ
                РегистрНакопления.Продажи.Обороты(&НачалоТекущегоПериодаВПрошломГоду, &КонецТекущегоПериодаВПрошломГоду, Месяц, ) КАК ПродажиОбороты
            
            СГРУППИРОВАТЬ ПО
                ПродажиОбороты.ДоговорКонтрагента,
                ПродажиОбороты.Контрагент,
                ПродажиОбороты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности) КАК ПродажиТекущегоКварталаПрошлогоГода
                ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                    ПродажиОбороты.Контрагент КАК Контрагент,
                    ПродажиОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,
                    ПродажиОбороты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности КАК ДоговорКонтрагентаДопустимоеЧислоДнейЗадолженности,
                    СУММА(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьОборот,
                    СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот
                ИЗ
                    РегистрНакопления.Продажи.Обороты(&НачалоКварталаПрошлогоГода, &КонецКварталаПрошлогоГода, Месяц, ) КАК ПродажиОбороты
                
                СГРУППИРОВАТЬ ПО
                    ПродажиОбороты.ДоговорКонтрагента,
                    ПродажиОбороты.Контрагент,
                    ПродажиОбороты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности) КАК ПродажиПрошлогоКварталаПрошлогоГода
                ПО ПродажиТекущегоКварталаПрошлогоГода.Контрагент = ПродажиПрошлогоКварталаПрошлогоГода.Контрагент
                    И ПродажиТекущегоКварталаПрошлогоГода.ДоговорКонтрагента = ПродажиПрошлогоКварталаПрошлогоГода.ДоговорКонтрагента
                    И ПродажиТекущегоКварталаПрошлогоГода.ДоговорКонтрагентаДопустимоеЧислоДнейЗадолженности = ПродажиПрошлогоКварталаПрошлогоГода.ДоговорКонтрагентаДопустимоеЧислоДнейЗадолженности) КАК РасчетКоефициентаК
            ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                SS.СуммаОборот КАК SS,
                РасчетПоказателяV.V КАК V,
                ЕСТЬNULL(SS.Контрагент, РасчетПоказателяV.Контрагент) КАК Контрагент,
                ЕСТЬNULL(SS.ДоговорКонтрагента, РасчетПоказателяV.ДоговорКонтрагента) КАК ДоговорКонтрагента,
                ЕСТЬNULL(SS.ДоговорКонтрагентаДопустимоеЧислоДнейЗадолженности, РасчетПоказателяV.ДопустимоеЧислоДнейЗадолженности) КАК N
            ИЗ
                (ВЫБРАТЬ
                    ДвиженияДенежныхСредствОбороты.Контрагент КАК Контрагент,
                    СУММА(ДвиженияДенежныхСредствОбороты.СуммаОборот) КАК СуммаОборот,
                    СУММА(ДвиженияДенежныхСредствОбороты.СуммаУпрОборот) КАК СуммаУпрОборот,
                    ДвиженияДенежныхСредствОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,
                    ДвиженияДенежныхСредствОбороты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности КАК ДоговорКонтрагентаДопустимоеЧислоДнейЗадолженности
                ИЗ
                    РегистрНакопления.ДвиженияДенежныхСредств.Обороты(&НачалоКварталаТекущегоГода, &КонецКварталаТекущегоГода, Месяц, ) КАК ДвиженияДенежныхСредствОбороты
                
                СГРУППИРОВАТЬ ПО
                    ДвиженияДенежныхСредствОбороты.Контрагент,
                    ДвиженияДенежныхСредствОбороты.ДоговорКонтрагента,
                    ДвиженияДенежныхСредствОбороты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности) КАК SS
                    ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                        РасчетV.СтоимостьОборот КАК V,
                        РасчетV.ДоговорКонтрагента КАК ДоговорКонтрагента,
                        РасчетV.ДоговорКонтрагентаДопустимоеЧислоДнейЗадолженности КАК ДопустимоеЧислоДнейЗадолженности,
                        РасчетV.Контрагент КАК Контрагент
                    ИЗ
                        (ВЫБРАТЬ
                            ПродажиОбороты.Контрагент КАК Контрагент,
                            ПродажиОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,
                            ПродажиОбороты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности КАК ДоговорКонтрагентаДопустимоеЧислоДнейЗадолженности,
                            СУММА(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьОборот,
                            СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот
                        ИЗ
                            РегистрНакопления.Продажи.Обороты(&НачалоКварталаТекущегоГода, &КонецКварталаТекущегоГода, Месяц, ) КАК ПродажиОбороты
                        
                        СГРУППИРОВАТЬ ПО
                            ПродажиОбороты.ДоговорКонтрагента,
                            ПродажиОбороты.Контрагент,
                            ПродажиОбороты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности) КАК РасчетV) КАК РасчетПоказателяV
                    ПО SS.Контрагент = РасчетПоказателяV.Контрагент
                        И SS.ДоговорКонтрагента = РасчетПоказателяV.ДоговорКонтрагента
                        И SS.ДоговорКонтрагентаДопустимоеЧислоДнейЗадолженности = РасчетПоказателяV.ДопустимоеЧислоДнейЗадолженности) КАК РасчетПоказателейVSS
            ПО РасчетКоефициентаК.Контрагент = РасчетПоказателейVSS.Контрагент
                И РасчетКоефициентаК.ДоговорКонтрагента = РасчетПоказателейVSS.ДоговорКонтрагента
                И РасчетКоефициентаК.N = РасчетПоказателейVSS.N) КАК ТоварныйКредит
1 Нуф-Нуф
 
15.08.13
16:09
{}
2 Нуф-Нуф
 
15.08.13
16:09
а запрос просто жесть
3 Baglandir
 
15.08.13
16:10
(1) он простой, просто немного объемный :)
4 genosse
 
15.08.13
16:12
в СКД когда открываешь конструктор запроса, перейди на закладку "Схема компоновки данных", по кнопке настройка ткни, вот те параметры которые там указаны и используются в СКД
5 Нуф-Нуф
 
15.08.13
16:13
дело во вложенных запросах и соединении с виртуальными таблицами
6 Baglandir
 
15.08.13
16:17
(4) Открыл конструктор запроса, перешол на вкладку "компоновкиа данных" (Вкладки схемы компоновкиа данных не нашол) На данной вкладке просто поле с названием моего запроса и флаг "обязательный"
(5) А в чем именно дело , СКД не работает из сложеными запросами ?  соединений с фиртуальными таблицами в запросе нету
7 genosse
 
15.08.13
16:19
Нужно открыть там где используется сама таблица регистра, вбей туда свои параметры
8 Нуф-Нуф
 
15.08.13
16:20
(6) виртуальную таблицу Обороты соединяешь с подзапросом, в котором виртуальная таблица Обороты. страшный сон оптимизатора.
9 genosse
 
15.08.13
16:20
(8) СКД оптимизирует этот запрос, все будет ок
10 Нуф-Нуф
 
15.08.13
16:21
(9) таки да?
11 genosse
 
15.08.13
16:23
(10) 146 процентная гарантия
12 Нуф-Нуф
 
15.08.13
16:26
(11) нуну
13 Нуф-Нуф
 
15.08.13
16:27
(11) продолжай жить в своем розовом мире )))
14 genosse
 
15.08.13
16:28
(13) проверил? оптимизатор не исправил чтоль?
15 Нуф-Нуф
 
15.08.13
16:32
(14) сформируй отчет в консоли, и посмотри какой запрос будет результирующим? изменения будут минимальны.

речь шла про скулевский оптимизатор
16 grayshadow
 
15.08.13
17:36
СКД любит совать свои параметры куда не надо:)
если (как в вашем случае) они не нужны, то ставим ограничение доступности, и пусть себе болтаются, на результат не влияют
вопрос: чему у вас равны остальные 2 параметра:
&НачалоКварталаТекущегоГода, &КонецКварталаТекущегоГода
??
не смогла прочитать весь запрос, но насторожило "полное соединение", может данные "с начала времен" и должны выбираться?