Имя: Пароль:
1C
1С v8
Связи в пакетном запросе
0 Тессеракт
 
09.03.21
17:09
Добрый день! Прошу помочь, связываю первые 2 пакета. Если выполнять отдельно 2й пакет, то сумма колонки SumX = 3552000, в третьем пакете 3622000. В чем может быть дело? Даже если в 3м пакете делаю правое соединение(т.е к пакету 2 подсоединяю пакет 1) то тоже суммы не верные. Как вариант, думаю, что в регистраторах только где то по 2 строки одной и той же номенклатуры. тогда и по номеру строки тоже что ли связываться?
Б.П 3.0

ВЫБРАТЬ  /////1 пакет
    ХозрасчетныйДвиженияССубконто.Регистратор КАК Regi,
    ХозрасчетныйДвиженияССубконто.Регистратор.Номер КАК Nregi,
    ВЫБОР
        КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.СубконтоКт1) = ТИП(справочник.контрагенты)
            ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт2
        ИНАЧЕ ХозрасчетныйДвиженияССубконто.СубконтоКт1
    КОНЕЦ КАК Nomen,
    ВЫБОР
        КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.СубконтоКт1) = ТИП(справочник.контрагенты)
            ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт2.Артикул
        ИНАЧЕ ХозрасчетныйДвиженияССубконто.СубконтоКт1.Артикул
    КОНЕЦ КАК Art,
    СУММА(ХозрасчетныйДвиженияССубконто.КоличествоКт) КАК Kol,
    СУММА(ХозрасчетныйДвиженияССубконто.Сумма) КАК Sum,
    ВЫБОР
        КОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт2 ССЫЛКА Документ.КомплектацияНоменклатуры
                ИЛИ ХозрасчетныйДвиженияССубконто.СубконтоКт2 ССЫЛКА Документ.Партия
                ИЛИ ХозрасчетныйДвиженияССубконто.СубконтоКт2 ССЫЛКА Документ.ПоступлениеТоваровУслуг
            ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт2
        ИНАЧЕ ВЫБОР
                КОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт3 ССЫЛКА Документ.КомплектацияНоменклатуры
                        ИЛИ ХозрасчетныйДвиженияССубконто.СубконтоКт3 ССЫЛКА Документ.Партия
                        ИЛИ ХозрасчетныйДвиженияССубконто.СубконтоКт3 ССЫЛКА Документ.ПоступлениеТоваровУслуг
                    ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт3
                ИНАЧЕ ""
            КОНЕЦ
    КОНЕЦ КАК Part,
    ВЫБОР
        КОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт2 ССЫЛКА Документ.КомплектацияНоменклатуры
                ИЛИ ХозрасчетныйДвиженияССубконто.СубконтоКт2 ССЫЛКА Документ.Партия
                ИЛИ ХозрасчетныйДвиженияССубконто.СубконтоКт2 ССЫЛКА Документ.ПоступлениеТоваровУслуг
            ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт2.Номер
        ИНАЧЕ ХозрасчетныйДвиженияССубконто.СубконтоКт3.Номер
    КОНЕЦ КАК Npart
ПОМЕСТИТЬ Себес
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(&НачалоПериода, &КонецПериода, , , ) КАК ХозрасчетныйДвиженияССубконто
ГДЕ
    ХозрасчетныйДвиженияССубконто.СчетДт В ИЕРАРХИИ(&Счет2Себес)
    И ВЫБОР
            КОГДА &скомисс = ЛОЖЬ
                ТОГДА ХозрасчетныйДвиженияССубконто.СчетКт В (&СчетСебес)
            КОГДА &скомисс = ИСТИНА
                ТОГДА ХозрасчетныйДвиженияССубконто.СчетКт В (&Счет1Себес)
                        ИЛИ ХозрасчетныйДвиженияССубконто.СчетКт В (&СчетСебес)
        КОНЕЦ

СГРУППИРОВАТЬ ПО
    ВЫБОР
        КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.СубконтоКт1) = ТИП(справочник.контрагенты)
            ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт2
        ИНАЧЕ ХозрасчетныйДвиженияССубконто.СубконтоКт1
    КОНЕЦ,
    ВЫБОР
        КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.СубконтоКт1) = ТИП(справочник.контрагенты)
            ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт2.Артикул
        ИНАЧЕ ХозрасчетныйДвиженияССубконто.СубконтоКт1.Артикул
    КОНЕЦ,
    ХозрасчетныйДвиженияССубконто.Регистратор,
    ХозрасчетныйДвиженияССубконто.Регистратор.Номер,
    ВЫБОР
        КОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт2 ССЫЛКА Документ.КомплектацияНоменклатуры
                ИЛИ ХозрасчетныйДвиженияССубконто.СубконтоКт2 ССЫЛКА Документ.Партия
                ИЛИ ХозрасчетныйДвиженияССубконто.СубконтоКт2 ССЫЛКА Документ.ПоступлениеТоваровУслуг
            ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт2.Номер
        ИНАЧЕ ХозрасчетныйДвиженияССубконто.СубконтоКт3.Номер
    КОНЕЦ,
    ВЫБОР
        КОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт2 ССЫЛКА Документ.КомплектацияНоменклатуры
                ИЛИ ХозрасчетныйДвиженияССубконто.СубконтоКт2 ССЫЛКА Документ.Партия
                ИЛИ ХозрасчетныйДвиженияССубконто.СубконтоКт2 ССЫЛКА Документ.ПоступлениеТоваровУслуг
            ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт2
        ИНАЧЕ ВЫБОР
                КОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт3 ССЫЛКА Документ.КомплектацияНоменклатуры
                        ИЛИ ХозрасчетныйДвиженияССубконто.СубконтоКт3 ССЫЛКА Документ.Партия
                        ИЛИ ХозрасчетныйДвиженияССубконто.СубконтоКт3 ССЫЛКА Документ.ПоступлениеТоваровУслуг
                    ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт3
                ИНАЧЕ ""
            КОНЕЦ
    КОНЕЦ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ  ////2 пакет
    ХозрасчетныйДвиженияССубконто.Регистратор КАК Regi,
    ХозрасчетныйДвиженияССубконто.СубконтоКт3 КАК Nomen,
    ХозрасчетныйДвиженияССубконто.СубконтоКт3.Артикул КАК Art,
    СУММА(ХозрасчетныйДвиженияССубконто.КоличествоКт) КАК Kol,
    СУММА(ХозрасчетныйДвиженияССубконто.Сумма) КАК SumX
ПОМЕСТИТЬ Выручка
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(&НачалоПериода, &КонецПериода, , , ) КАК ХозрасчетныйДвиженияССубконто
ГДЕ
    ВЫБОР
            КОГДА &скомисс = ЛОЖЬ
                ТОГДА НЕ ХозрасчетныйДвиженияССубконто.Регистратор ССЫЛКА Документ.ОтчетКомиссионераОПродажах
                        И ХозрасчетныйДвиженияССубконто.СчетДт В ИЕРАРХИИ (&Счет2Выручка)
                        И ХозрасчетныйДвиженияССубконто.СчетКт В (&СчетВыручка)
            ИНАЧЕ ХозрасчетныйДвиженияССубконто.СчетДт В ИЕРАРХИИ (&Счет2Выручка)
                    И ХозрасчетныйДвиженияССубконто.СчетКт В (&СчетВыручка)
        КОНЕЦ

СГРУППИРОВАТЬ ПО
    ХозрасчетныйДвиженияССубконто.СубконтоКт3.Артикул,
    ХозрасчетныйДвиженияССубконто.Регистратор,
    ХозрасчетныйДвиженияССубконто.СубконтоКт3
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ  ////3 финализирующий пакет
    Себес.Regi КАК Regi,
    Себес.Nregi КАК Nregi,
    Себес.Nomen КАК НоменБП,
    Себес.Art КАК Art,
    Себес.Kol КАК Kol,
    Себес.Sum КАК Sum,
    Себес.Part КАК Part,
    Себес.Npart КАК Npart,
    Выручка.Kol КАК kolVR,
    ВЫРАЗИТЬ(ВЫБОР
            КОГДА Выручка.Kol <> 0
                ТОГДА Выручка.SumX * Себес.Kol / Выручка.Kol
            ИНАЧЕ Выручка.SumX
        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК SumVR,
        Выручка.SumX как SumX
ИЗ
    Себес КАК Себес
        полное СОЕДИНЕНИЕ Выручка КАК Выручка
        ПО Себес.Regi = Выручка.Regi
            И Себес.Art = Выручка.Art
//ГДЕ
//    Себес.Regi = &реги
//    И Себес.Nomen = &номен

УПОРЯДОЧИТЬ ПО
    Себес.Regi.Дата,
    Себес.Regi,
    Себес.Art
1 mistеr
 
09.03.21
17:17
(0) Постарайся упростить пример до возможности понимания без наличия твоей базы.
2 Тессеракт
 
09.03.21
17:22
(1) лови
ВЫБРАТЬ  /////1 пакет
    ХозрасчетныйДвиженияССубконто.Регистратор КАК Regi,
    ВЫБОР
        КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.СубконтоКт1) = ТИП(справочник.контрагенты)
            ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт2.Артикул
        ИНАЧЕ ХозрасчетныйДвиженияССубконто.СубконтоКт1.Артикул
    КОНЕЦ КАК Art,
    СУММА(ХозрасчетныйДвиженияССубконто.Сумма) КАК Sum
ПОМЕСТИТЬ Себес
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(&НачалоПериода, &КонецПериода, , , ) КАК ХозрасчетныйДвиженияССубконто


;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ  ////2 пакет
    ХозрасчетныйДвиженияССубконто.Регистратор КАК Regi,
    ХозрасчетныйДвиженияССубконто.СубконтоКт3.Артикул КАК Art,
    СУММА(ХозрасчетныйДвиженияССубконто.Сумма) КАК SumX
ПОМЕСТИТЬ Выручка
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(&НачалоПериода, &КонецПериода, , , ) КАК ХозрасчетныйДвиженияССубконто

;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ  ////3 финализирующий пакет
    Себес.Regi КАК Regi,
    Себес.Art КАК Art,
    Себес.Sum КАК Sum,
    Выручка.SumX как SumX
ИЗ
    Себес КАК Себес
        полное СОЕДИНЕНИЕ Выручка КАК Выручка
        ПО Себес.Regi = Выручка.Regi
            И Себес.Art = Выручка.Art
3 mistеr
 
09.03.21
17:40
1. Условия на счета — в параметры вирт. таблиц.
2. Обязательно Субконто в параметрах.
3. Постарайся избежать полного соединения.
4 dka80
 
09.03.21
17:50
В первом запросе есть дублирующиеся строки по полям регистратор и артикул
5 dka80
 
09.03.21
17:53
Хотя не, у тебя же группировка там
6 TormozIT
 
гуру
09.03.21
18:54
Кажется автор запросы называет пакетами, а пакет запросом. Правильно - пакетный запрос или пакет запросов. Неправильно - запрос пакетов или пакеты запроса.
7 Тессеракт
 
09.03.21
19:02
(3) без полного- та же история по колонке
8 Тессеракт
 
09.03.21
19:03
(6) попрыгай- отойдет) лучше б что по теме написал)
9 Ёпрст
 
09.03.21
19:08
(0) делай через Объеденить всё -  увидишь где "не сходится".
10 Тессеракт
 
09.03.21
19:13
(9) объединить же в одну таблицу 2 пакета засовывает с уравниванием по полям? Подскажи, как в таком случае можно понять?
11 mistеr
 
09.03.21
19:18
Используй для связи вместо артикула ссылку на номенклатуру. Возможно дубли по артикулам.
12 Тессеракт
 
09.03.21
19:25
(11) ты правильно заметил, спасибо. Но дело оказалось не в этом. Первый пакет не сгруппировал суммы по регистратору и номенклатуре. разбираюсь почему
Независимо от того, куда вы едете — это в гору и против ветра!