Версия для печати темы (http://pro1c.org.ua/index.php?s=474ab170f4381584c9fb9c4d20b467a0&showtopic=49158)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Вся 1С _ Объединить запросом две таблицы с условием по количеству.

Автор: vadium 29.11.18, 8:14

Есть две таблицы с колонками "Количество", соединяемые по некоторым ключевым полям, но может возникнуть ситуация, когда в обеих таблицах есть дублирующиеся строки, соответственно соединение в запросе даст комбинацию в 4 строки, а нужно сделать так чтобы присоединяемая таблица передала количество, меньшее чем первая.
Пример:
Таблица1

y  K  13
z  R  15
x  A   1
x  B   2


Таблица2
z  H  14
y  M  11
x  C   2
x  D   1


Итогом является результирующая Таблица3
y  KH  13
z  RM  11
и 4 комбинации
x  AC  1
x  AD  1
x  BC  2
x  BD  1

Хотелось бы чтобы при объединении по x получилась такая (или похожая) картинка:
x  AC 1
x  BC 1
x  BD 1

Такое реально? Какое-то условие с итогом по ключевым полям?

Автор: vadium 29.11.18, 10:06

Запрос (сильно упрощённый) такой:

ВЫБРАТЬ
    РасходнаяТовары.Товар,
    РасходнаяТовары.Серия,

    РасходнаяТовары.ЦенаБезНДС,
    СУММА(РасходнаяТовары.Кво) КАК Кво,
    СУММА(РасходнаяТовары.СуммаСНДС) КАК СуммаСНДС,
    СУММА(Парт.Колво) КАК Колво,
    СУММА(Парт.Сумма) КАК Сумма,
    Парт.Партия
ИЗ
    Документ.Расходная.Товары КАК РасходнаяТовары
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Партия КАК Парт
        ПО РасходнаяТовары.Ссылка = Парт.Регистратор
            И РасходнаяТовары.Серия = Парт.Серия
ГДЕ
    РасходнаяТовары.Ссылка = &Ссылка
    И РасходнаяТовары.Товар = &Товар

СГРУППИРОВАТЬ ПО
    РасходнаяТовары.Товар,
    РасходнаяТовары.Серия,
    РасходнаяТовары.ЦенаБезНДС,
    Парт.Партия
В исходных данных в Расходной:

Товар                       Серия     КвоР    ЦенаБНДС    СуммаСНДС
полыни н-ка 25мл стекло    050918    2,0           6               14,4
полыни н-ка 25мл стекло    050918    1,0           7                8,4


и соответственно Партии:

Товар                         Серия      КвоП    СуммаП          Партия
полыни н-ка 25мл стекло       050918    1,0          5         Приходная накладная ЗЮ-123
полыни н-ка 25мл стекло       050918    2,0         14        Приходная накладная МЮ-321

Итог работы данного запроса:
Товар                        Серия    КвоР    КвоП    ЦенаБНДС    СуммаСНДС    СуммаП           Партия
полыни н-ка 25мл стекло    050918      2        1            5,06           10,83             4,8       Приходная накладная ЗЮ-123
полыни н-ка 25мл стекло    050918      2        2            5,06           10,83             9,56     Приходная накладная МЮ-321
полыни н-ка 25мл стекло    050918      1        1            5,23             5,6               4,8      Приходная накладная ЗЮ-123
полыни н-ка 25мл стекло    050918      1        2            5,23             5,6              9,56      Приходная накладная МЮ-321
Объединять по количествам нельзя, в общем случае эти строки независимы и пересекающиеся количества - совпадения.
Итогом должна служить таблица вида:

Товар                        Серия    КвоР    КвоП    ЦенаБНДС    СуммаСНДС    СуммаП         Партия
полыни н-ка 25мл стекло    50918       1         1             6                7,2               5          Приходная накладная ЗЮ-123
полыни н-ка 25мл стекло    50918       1         1             6                7,2               7          Приходная накладная МЮ-321
полыни н-ка 25мл стекло    50918       1         1             7                8,4               7          Приходная накладная МЮ-321

Реально ли такого добиться?

Автор: alx389d 29.11.18, 10:11

vadium @ Сегодня, 8:14 * ,
Не понятно по какому критерию вы получили результирующую таблицу 3, там где KH и RM. см. скрин.



По последней вашей табличке(тому что хотите получить) - не понятно:
Почему должна пропасть комбинация "AD", но остаться, например, комбинация "BC" - значения в колонках с количеством одинаковые и там и там. В первом случае единицы, во втором двойки.
Почему для комбинации "BC" значение в количестве должно стать 1 - для B в первой таблице колво у вас 2, для С во второй - тоже 2.

Не знаю, может кто более понятливый подойдет и подскажет вам smile.gif Мне каж-ся, здесь лучше попробовать описать прикладную задачу(что вы делаете)

Автор: Petre 29.11.18, 10:21

vadium @ Today, 10:06 * ,
Т. е. у вас в рн разрешено дублирование номенклатур?

Автор: alx389d 29.11.18, 10:52

данные для списания по партиям по фифо/лифо чтоли запросом хотите вытащить?
в партии МЮ-321 было 2, стало 1. Кол-во расходной распределяется..не, запросом на 1С не реально такого добиться на практике. Это будет слишком монструзно, ранжировать строчки, накопительные итоги, соединения таблиц самих с собой. Не реально, нет.

Автор: vadium 29.11.18, 11:31

Petre @ Сегодня, 10:21 * ,
Да, потому что разные отпускные цены, соответственно получаются несколько строк.

alx389d @ Сегодня, 10:52 * ,
Спасибо. Очень надеялся что моих знаний просто не хватает, и есть хитрый способ. Ну что ж! Придётся делать старым добрым перебором, чтоб ему...! smile.gif

Автор: alx389d 29.11.18, 11:36

vadium @ Сегодня, 11:31 * ,
для 1С это будет ну оочень уж хитрый способ, кроме вас(разработчика) его потом мало кто поймет, такое лучше не делать smile.gif Если бы 1Споддерживала window functions скуля или курсоры..а так нет, надо кодить, даsmile.gif

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
http://pro1c.org.ua