Имя: Пароль:
1C
1С v8
Простой запрос в консоли и скд выполняется по разному
0 Sam1C
 
19.11.17
21:33
Добрый вечер! Обычным способ запрос  выдает нужные данные в скд тот же запрос иные. Суть выбирается из регистра накопления отрицательные остатки в разрезе номенклатуры и склада помещаются в ВТ и вторым запрос выбираются остатки в разрезе Номенклатуры и склада по уже приготовленным в ВТ Номенклатуре. В СКД выдаются данные без учета склада, т.е. выдаются только те Номенклатуры, которые имеют минус только в измерении Номенклатура, без СКД все выдается правильно с учетом склада. Собственно запрос:

ВЫБРАТЬ
    Товары.Склад КАК Склад,
    Товары.Номенклатура КАК Номенклатура,
    Товары.КоличествоКонечныйОстаток КАК КоличествоОстаток
ПОМЕСТИТЬ ТоварыСминусом
ИЗ
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК Товары
ГДЕ
    Товары.КоличествоКонечныйОстаток < 0
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
    СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоОстаток
{ВЫБРАТЬ
    Склад.*,
    Номенклатура.*,
    КоличествоОстаток}
ИЗ
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(
            ,
            ,
            ,
            ,
            Номенклатура В
                (ВЫБРАТЬ РАЗЛИЧНЫЕ
                    ТоварыСминусом.Номенклатура
                ИЗ
                    ТоварыСминусом)) КАК ТоварыНаСкладахОстаткиИОбороты

СГРУППИРОВАТЬ ПО
    ТоварыНаСкладахОстаткиИОбороты.Склад,
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура

Если за комментировать "Товары.Склад КАК Склад," в ПЕРВОМ запросе, то в консоле выдаст также как и в СКД.
1 Cyberhawk
 
19.11.17
21:36
Настройки СКД влияют на результирующий запрос
2 Sam1C
 
19.11.17
21:39
(0) Если в СКД отправляю первый запрос отдельно, выдает все правильно, т.е. в виртуальной таблице данные верные, список ТМЦ для дальнейшей обработки верен. Но в итог попадает не вся Номенклатура, а только та которая отрицательна только по измерению "Номенклатура"
3 Sam1C
 
19.11.17
21:41
(1) да я 3 часа уже мучаюсь, не каких вообще отборов или настроек нет в СКД, голый запрос и вывод детальных записей
4 Cyberhawk
 
19.11.17
21:41
"только та которая отрицательна только по измерению "Номенклатура"" // Ну так ты же сам ставишь этот фильтр во втором запросе
5 Sam1C
 
19.11.17
21:45
(4) Во втором запросе фильтр по списку Номенклатуры. Первый запрос сформировал список из 10 уникальных Номенклатур к примеру. Но второй выдает только 4, хотя должен выдать этих 10. Тем более НЕ в СКД он и выдает эти 10.
6 Sam1C
 
19.11.17
21:51
(5) Опытным путем было просто установлено, что эти 4-ре которые в свернутом виде по измерению Номенклатура с минусом. Т. е. если "Товар А" на "Складе№1" - минус 10,  а на "Складе№2" плюс 10, То в СКД он не попадает (свернуто Товар А = 0), а в запросе без СКД попадает.
7 Sam1C
 
19.11.17
22:42
Дело в 1 -ом запросе, а именно в помещении в ВТ, если не помещать в ВТ выдает верные данные, если поместить в ВТ, а потом достать список, выдает не полный список и именно в СКД, обычным запросом все ок. Ниже запрос выдает разные данные:

ВЫБРАТЬ
    Товары.Склад КАК Склад,
    Товары.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ ТоварыСминусом
ИЗ
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК Товары
ГДЕ
    Товары.КоличествоКонечныйОстаток < 0
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТоварыСминусом.Номенклатура
ИЗ
    ТоварыСминусом КАК ТоварыСминусом

СГРУППИРОВАТЬ ПО
    ТоварыСминусом.Номенклатура
8 Sam1C
 
19.11.17
22:44
(7) Если не помещать в ВТ, то СКД дает верные данные. Такое ощущение, что при помещении в ВТ, что-то ни то происходит
9 Sam1C
 
19.11.17
22:52
(0) Нервы не выдержали переписал запрос на вложенное условие, заработало и  в СКД:
ВЫБРАТЬ
    ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
    СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоОстаток
{ВЫБРАТЬ
    Склад.*,
    Номенклатура.*,
    КоличествоОстаток}
ИЗ
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
ГДЕ
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура В
            (ВЫБРАТЬ
                ОтборТМЦ.Номенклатура
            ИЗ
                (ВЫБРАТЬ
                    Товары.Склад КАК Склад,
                    Товары.Номенклатура КАК Номенклатура
                ИЗ
                    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК Товары
                ГДЕ
                    Товары.КоличествоКонечныйОстаток < 0
                ) КАК ОтборТМЦ)

СГРУППИРОВАТЬ ПО
    ТоварыНаСкладахОстаткиИОбороты.Склад,
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура
10 Franchiser
 
гуру
19.11.17
23:14
Напиши в первом запросе другие имена полей, например, как Склад_ВТ, как Номенклатурп_ВТ
11 Franchiser
 
гуру
19.11.17
23:19
Оптимизатор СКД у тебя везде склад просто выкидывает, т.к. поле не используется и не помечено как обязательное
12 TormozIT
 
гуру
20.11.17
07:21
Посмотри запрос, который получается в макете компоновки и станет понятно в чем дело. Его можно посмотреть например в консоли компоновки ИР https://www.youtube.com/watch?v=0LKGaFo9tXw
13 Sam1C
 
20.11.17
10:04
(11) (12) Спасибо, точно оптимизатор убирает первую строку запроса в этом и была проблема.
14 Sam1C
 
20.11.17
10:23
(10) только это не помогает и   Роль "Склад" - Измерение, Обязательное, но роль я так понимаю на результирующий запрос влияет, а не на ВТ.
15 DexterMorgan
 
20.11.17
10:51
(14) Начальный и конечный остаток нужно всегда вместе выбирать
16 Buster007
 
20.11.17
10:54
снимаешь галку "Автозаполнение"
17 Cyberhawk
 
20.11.17
10:56
(14) Так твое поле Склад из первой ВТ нигде не используется, вот оно и не выбирается. Хоть зауказывайся.
18 Sam1C
 
20.11.17
11:05
(16) Снимал галку, не спасает.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс