Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

СКД и Консоль запросов

СКД и Консоль запросов
Я
   Василий_Ростов
 
13.08.18 - 11:36
Какая то странная вещь, в консоле запросов следущий запрос отрабатывает правильно, а в СКД - неверные дает результат
Подскажите что можно сделать?

ВЫБРАТЬ
    ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(2000, 1, 1), ДЕНЬ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) КАК Период
ПОМЕСТИТЬ Календарь
ИЗ
    (ВЫБРАТЬ
        0 КАК a
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        1
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        2
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        3
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        4
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        5
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        6
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        7
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        8
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        9) КАК aa
        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            0 КАК b
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            1
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            3
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            4
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            5
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            6
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            7
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            8
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            9) КАК bb
        ПО (ИСТИНА)
        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            0 КАК c
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            1
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            3
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            4
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            5
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            6
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            7
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            8
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            9) КАК cc
        ПО (ИСТИНА)
        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            0 КАК d
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            1
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            3
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            4
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            5
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            6
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            7
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            8
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            9) КАК dd
        ПО (ИСТИНА)
ГДЕ
    ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(2000, 1, 1), ДЕНЬ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) МЕЖДУ &НачалоПериода И &КонецПериода
;

////////////////////////////////////////////////////////////////////////////////

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

СГРУППИРОВАТЬ ПО
    взОстатки.Неделя,
    взОстатки.Магазин,
    взОстатки.Номенклатура,
    взОстатки.Номенклатура.Родитель,
    взОстатки.КоличествоОстаток,
    взОстатки.Ср_Остаток,
    ЕСТЬNULL(Продажи.КоличествоОборот, 0),
    ЕСТЬNULL(Продажи.СтоимостьОборот, 0),
    ВЫБОР
        КОГДА взОстатки.Ср_Остаток >= 1
                И ЕСТЬNULL(Продажи.КоличествоОборот, 0) >= 0
            ТОГДА 1
        КОГДА взОстатки.Ср_Остаток < 1
                И ЕСТЬNULL(Продажи.КоличествоОборот, 0) >= 0
            ТОГДА 0
    КОНЕЦ
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ФлагНеделя.Магазин,
    ФлагНеделя.Номенклатура,
    КОЛИЧЕСТВО(ФлагНеделя.Флаг) КАК Флаг,
    ФлагНеделя.Группа,
    ВЫРАЗИТЬ((РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) + 1) / 7 КАК ЧИСЛО(5, 0)) КАК Количество_Недель,
    СУММА(ФлагНеделя.КоличествоОборот) КАК КоличествоОборот,
    СУММА(ФлагНеделя.СтоимостьОборот) КАК СтоимостьОборот,
    СУММА(ФлагНеделя.КоличествоОстаток) КАК КоличествоОстаток,
    СУММА(ФлагНеделя.Ср_Остаток) КАК Ср_Остаток
ПОМЕСТИТЬ Флаг_Продаж
ИЗ
    ФлагНеделя КАК ФлагНеделя
ГДЕ
    ФлагНеделя.Флаг = 1

СГРУППИРОВАТЬ ПО
    ФлагНеделя.Магазин,
    ФлагНеделя.Номенклатура,
    ФлагНеделя.Группа
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    Флаг_Продаж.Магазин,
    Флаг_Продаж.Номенклатура,
    Флаг_Продаж.Флаг КАК Флаг,
    Флаг_Продаж.Группа,
    Флаг_Продаж.Количество_Недель,
    Флаг_Продаж.КоличествоОборот / Флаг_Продаж.Флаг КАК Ср_Нед_Продажи_Шт,
    Флаг_Продаж.СтоимостьОборот / Флаг_Продаж.Флаг КАК Ср_Нед_Продажи_Руб,
    Флаг_Продаж.КоличествоОстаток КАК КоличествоОстаток,
    Флаг_Продаж.Ср_Остаток,
    Флаг_Продаж.КоличествоОборот,
    Флаг_Продаж.СтоимостьОборот
ИЗ
    Флаг_Продаж КАК Флаг_Продаж
 
 
   Василий_Ростов
 
1 - 13.08.18 - 11:37
В частности, значение поля флаг и Ср_Нед_Продажи_Шт и Ср_Нед_Продажи_Руб
   Fragster
 
2 - 13.08.18 - 11:39
Выкинуть запрос из (0) и почитать про дополнение периода в СКД
   Fragster
 
3 - 13.08.18 - 11:39
ну заодно и про роли
   Fragster
 
4 - 13.08.18 - 11:39
роли полей
   Borteg
 
5 - 13.08.18 - 11:40
(0) зачем такой код в скд? там все реализовано.
   Василий_Ростов
 
6 - 13.08.18 - 11:42
Определение недель и среднедневного остатка мне досталось от предыдущих программистов, хотел не переделывая просто доделать свое.А не получается((( Про что именно прочитать?
   Tonik992
 
7 - 13.08.18 - 11:44
Ниосилил такую портянку, извините.
Автор, вы предлагаете самостоятельно все это дело поочередном мне запустить и проверить что в первом, а что во втором случае получается и на непонятно какой базе?
Скидывайте результат запроса в консоли и в скд.
   Василий_Ростов
 
8 - 13.08.18 - 11:54
<a href="https://ibb.co/bXBpbU"><img src="https://preview.ibb.co/j7RcVp/image.jpg"; alt="image" border="0"></a>
Консоль
   Василий_Ростов
 
9 - 13.08.18 - 11:54
   Василий_Ростов
 
10 - 13.08.18 - 11:55
 
 Рекламное место пустует
   Василий_Ростов
 
11 - 13.08.18 - 11:55
Поле Флаг - В консоле выделена строка, а в Отчете - 1 строка
   Tonik992
 
12 - 13.08.18 - 11:59
Качество фоток конечно ужасное -)
   Tonik992
 
13 - 13.08.18 - 12:00
А в СКД сделайте "полное фото" - чтобы было видно поля группировок
   Tonik992
 
14 - 13.08.18 - 12:01
Скорее всего надо действовать по поручению Fragster - (4)
СКД при работе с вирт. таблицей остатков может некорректно выводить остаточные ресурсы т.к. неверно настроены Роля на вкладке "Наборы данных"
   Василий_Ростов
 
15 - 13.08.18 - 12:03
Роли? Для тех полей которые рассчетные? Мне с ними позаниматься?
   Василий_Ростов
 
16 - 13.08.18 - 12:04
   hhhh
 
17 - 13.08.18 - 12:06
(16) вкладка "Наборы данных" - это та, что слева, а не та, что справа.
   Tonik992
 
18 - 13.08.18 - 12:06
https://xn----1-bedvffifm4g.xn--p1ai/1c-v8/skd/ - вот в этом курсе, "занятие 7" про Роли полей компоновки данных очень хорошо разъяснено.

Вообще рекомендую полностью этот курс посмотреть, многие вопросы отпадут
   Василий_Ростов
 
19 - 13.08.18 - 12:14
   Tonik992
 
20 - 13.08.18 - 12:26
Вот тут вам надо пошаманить.
   Василий_Ростов
 
21 - 13.08.18 - 12:27
знать бы как шаманить, уже бы начал и хоть дайте намек
   Василий_Ростов
 
22 - 13.08.18 - 13:03
УТ 10.3
   hhhh
 
23 - 13.08.18 - 13:53
(22) зачем скд в ут 10.3? Там все отчеты без скд. На универсальном отчете.
   DTX 4th
 
24 - 13.08.18 - 13:58
(23) Универсальные отчеты - это ужасно
   Василий_Ростов
 
25 - 13.08.18 - 14:37
Угу только не такие Чокнутые отчеты. Уже слов и эмоций нема. Довел вроде все до нормы, а тут хренак СКД не хотит взлетать
   Василий_Ростов
 
26 - 13.08.18 - 14:39
Почему нельзя просто взять Средние продажи из запроса, я его уже по-тихому ненавижу
   Василий_Ростов
 
27 - 13.08.18 - 14:48
Разобрался только что СКД плохо понимает внутренние таблицы. Остался вопрос как переделать по другому запрос?
   Василий_Ростов
 
28 - 13.08.18 - 14:49
Временные таблицы то есть
   Василий_Ростов
 
29 - 14.08.18 - 12:06
Закрывайте, переписал запрос


Список тем форума
Рекламное место пустует  Рекламное место пустует
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует