Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
30 сен 2024, 08:29

При соединений ВТ некоторые строки "размножаются"

Автор maxxi, 11 мар 2023, 21:03

0 Пользователей и 1 гость просматривают эту тему.

maxxi

Здравствуйте, есть внешняя обработка такого вида:
Таблица Значений получает данные запросом из 2 ВТ (Левое соединение).
После того как соединяю 2 ВТ, некоторое "Контрагенты" размножаются и становятся по 2-9 шт.
Без соединения все показывается  ОК.
Соединяю так: "ВТ1_Контрагенты.Ссылка=ВТ2_Контрагенты.Ссылка".

Подскажите пожалуйста, где моя ошибка.
Спасибо большое.

maxxi

ВТ1:
ВЫБРАТЬ
    ВТ_Клиент_ВидКлиента.Ссылка КАК Ссылка,
    ВТ_Клиент_ВидКлиента.ВидКлиента КАК ВидКлиента,
    ВТ_ОстаткиОбороты.НазваниеКлиента КАК НазваниеКлиента,
    ВТ_ОстаткиОбороты.НачальныйОстаток КАК НачальныйОстаток,
    ВТ_ОстаткиОбороты.Приход КАК Приход,
    ВТ_ОстаткиОбороты.Расход КАК Расход,
    ВТ_ОстаткиОбороты.КонечныйОстаток КАК КонечныйОстаток,
    ВТ_ОстаткиОбороты.Валюта КАК Валюта
ПОМЕСТИТЬ ВТ_Остатки_Приход
ИЗ
    ВТ_ОстаткиОбороты КАК ВТ_ОстаткиОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Клиент_ВидКлиента КАК ВТ_Клиент_ВидКлиента
        ПО ВТ_ОстаткиОбороты.НазваниеКлиента.Ссылка = ВТ_Клиент_ВидКлиента.Ссылка
ГДЕ
    ВТ_Клиент_ВидКлиента.ВидКлиента.Порядок = 1



////// Получаю 667 строк (НазваниеКонтрагентов)


ВТ2:
ВЫБРАТЬ
    ВозвратТовара.Ссылка КАК Ссылка,
    ВозвратТовара.Клиент КАК Клиент,
    ВозвратТовара.СуммаДокумента КАК СуммаДокумента,
    СУММА(ВозвратТовараТовары.СуммаВозврата) КАК СуммаВозврата,
    СУММА(ВозвратТовараТовары.Сумма) КАК Сумма,
    ВозвратТовара.ВалютаДокумента КАК ВалютаДокумента,
    ВозвратТовара.Склад КАК Склад,
    ВозвратТовара.Дата КАК Дата
ПОМЕСТИТЬ ВТ_ВозвратТовара
ИЗ
    Документ.ВозвратТовараТовары КАК ВозвратТовараТовары
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВозвратТовара КАК ВозвратТовара
        ПО ВозвратТовараТовары.Ссылка = ВозвратТовара.Ссылка
ГДЕ
    ВозвратТовара.Дата МЕЖДУ &НачДата И &КонДата
СГРУППИРОВАТЬ ПО
    ВозвратТовара.Ссылка,
    ВозвратТовараТовары.КайтишВалюта,
    ВозвратТовараТовары.Склад,
    ВозвратТовара.Клиент,
    ВозвратТовара.СуммаДокумента,
    ВозвратТовара.ВалютаДокумента,
    ВозвратТовара.Склад,
    ВозвратТовара.Дата


//////Получаю количество документов, 51 шт , умножим эту цифру на х2, (Валюта Документа: Доллар и Рубли)

Связываю так:
ВЫБРАТЬ
    ВТ_ВозвратТовара.Клиент КАК Клиент,
    ВТ_ВозвратТовара.ДСуммаДокумента КАК СуммаДокумента,
    ВТ_ВозвратТовара.СуммаВозврата КАК СуммаВозврата,
    ВТ_ВозвратТовара.Сумма КАК Сумма,
    ВТ_ВозвратТовара.ВалютаДокумента КАК ВалютаДокумента,
    ВТ_Остатки_Приход.НачальныйОстаток КАК НачальныйОстаток,
    ВТ_Остатки_Приход.Приход КАК Приход,
    ВТ_Остатки_Приход.Расход КАК Расход,
    ВТ_Остатки_Приход.КонечныйОстаток КАК КонечныйОстаток,
    ВТ_Остатки_Приход.Валюта КАК Валюта
ИЗ
    ВТ_ВозвратТовара КАК ВТ_ВозвратТовара
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки_Приход КАК ВТ_Остатки_Приход
        ПО (ВТ_Остатки_Приход.НазваниеКлиента=ВТ_ВозвратТовара.Клиент.Ссылка)

Получаю 101 строк. При том некоторое контрагенты "размножаются".

LexaK

maxxi, добавьте еще связь по Валюте, должно уменьшить количество дублей
ИЗ
    ВТ_ВозвратТовара КАК ВТ_ВозвратТовара
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки_Приход КАК ВТ_Остатки_Приход
        ПО (ВТ_Остатки_Приход.НазваниеКлиента=ВТ_ВозвратТовара.Клиент.Ссылка)
        и (ВТ_Остатки_Приход.Валюта=ВТ_ВозвратТовара.ВалютаДокумента)

чтобы совсем избежать дублей, проверьте каждую ВТ отдельно, по скольку в каждой контрагенты повторяются?
и предварительно сверните/проагрегируйте по ним, тогда дублей не будет!
если помогло нажмите: Спасибо!

maxxi

LexaK, дубли уменьшились  целых на 33 шт.
До связывания этих двух ВТ, дублей вообще нет.
Они появляются после связывания и я  заметил, что количество дублей равно количеству сколько раз Контрагент возвращал товар.

maxxi

LexaK, Группировка=свернуть не получается.

LexaK

Цитата: maxxi от 12 мар 2023, 10:15и я  заметил, что количество дублей равно количеству сколько раз Контрагент возвращал товар.
все правильно, сколько возвратов по одному контрагенту, столько раз он и повторяется.
у вас документ возврата является измерением - что вы в этом случае хотите?
изменяйте структуру результата, прежде чем строить запрос надо четко представлять что вы планируете получить!
если помогло нажмите: Спасибо!

maxxi

LexaK, Мне надо что бы все возвраты суммировались.

LexaK

Цитата: maxxi от 12 мар 2023, 11:05LexaK, Мне надо что бы все возвраты суммировались.
как вариант, убрать из результата ссылку на документ Возврат, примерно так

внимание!!! могут быть опечатки
ВЫБРАТЬ
    максимум(ВозвратТовара.Ссылка) КАК Ссылка,
    ВозвратТовара.Клиент КАК Клиент,
    Сумма(ВозвратТовара.СуммаДокумента) КАК СуммаДокумента,
    СУММА(ВозвратТовараТовары.СуммаВозврата) КАК СуммаВозврата,
    СУММА(ВозвратТовараТовары.Сумма) КАК Сумма,
    ВозвратТовара.ВалютаДокумента КАК ВалютаДокумента,
    максимум(ВозвратТовара.Склад) КАК Склад,
    максимум(ВозвратТовара.Дата) КАК Дата
ПОМЕСТИТЬ ВТ_ВозвратТовара
ИЗ
    Документ.ВозвратТовара.Товары КАК ВозвратТовараТовары
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВозвратТовара КАК ВозвратТовара
        ПО ВозвратТовараТовары.Ссылка = ВозвратТовара.Ссылка
ГДЕ
    ВозвратТовара.Дата МЕЖДУ &НачДата И &КонДата
и ВозвратТовара.проведен //только проведенные учитывать надо
СГРУППИРОВАТЬ ПО
//    ВозвратТовара.Ссылка,
//    ВозвратТовараТовары.КайтишВалюта,
//    ВозвратТовараТовары.Склад,
    ВозвратТовара.Клиент,
//    ВозвратТовара.СуммаДокумента,
    ВозвратТовара.ВалютаДокумента
//    ВозвратТовара.Склад
//    ВозвратТовара.Дата
если помогло нажмите: Спасибо!

maxxi


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск