Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Соединить два документа без повторений в одной колонке
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
vbi
Я в запросе выбираю Документ1 и Документ2 соединив внутренним соединением по какому-то реквизиту. В результате я получаю примерно такую картину:

Документ1 Документ2

ДокОдин5 ДокДва3
ДокОдин6 ДокДва4
ДокОдин6 ДокДва5
ДокОдин7 ДокДва6

В результате в левой колонке мы имеем повторение одного документа (потому что для одного документа с левой колонки существуют несколько документов правой колонки).

Мне нужно получить эту выборку так, чтоб документы в левой колонке были все разные. А если для одного документа с левой колонки существует несколько документов из правой - то в правой колонке просто выбирался первый попавшийся. Чтоб было так:

Документ1 Документ2

ДокОдин5 ДокДва3
ДокОдин6 ДокДва4
ДокОдин7 ДокДва6

(ДокДва5 - нам не нужен, главное что в первой колонке все документы разные).
Вопрос: Как это сделать средствами запроса?
pablo
Цитата
просто выбирался первый попавшийся

А вот тут поподробнее. Как только Вы сформулируете, какой из соответствующих документов вам нужен, так сразу будет видно, какое условие дописать в соединение.
vbi
Ну так вот пример:
вот выборка:
Цитата
Документ1 Документ2
ДокОдин5 ДокДва3
ДокОдин6 ДокДва4
ДокОдин6 ДокДва5
ДокОдин7 ДокДва6

Очевидно что первая попавшаяся пара в которой есть "ДокОдин6" : ДокОдин6 ДокДва4. вот ее и нужно оставить. Хотя мне для задачи не важно какую именно пару выбрать, можно и "ДокОдин6 ДокДва5", главное добится того, чтоб в колонке "Документ1" не было одинаковых значений (тип значений в обоих колонках - ссылка)
aaa
Создать временную таблицу используя оператор Различные
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ПриходнаяНакладнаяТовары.Номенклатура
ПОМЕСТИТЬ В1
ИЗ
    Документ.ПриходнаяНакладная.Товары КАК ПриходнаяНакладнаяТовары
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    РасходнаяНакладнаяТовары.Номенклатура
ПОМЕСТИТЬ В2
ИЗ
    Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    В1.Номенклатура,
    В2.Номенклатура КАК Номенклатура1
ИЗ
    В1 КАК В1
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ В2 КАК В2
        ПО В1.Номенклатура = В2.Номенклатура
vbi
Да так работает, согласен, но мне нужно в результате получить не номенклатуру а ссылку на расходную накладную:
ВЫБРАТЬ
    РеализацияТоваровУслугТовары.Ссылка КАК Расходная,
    ПоступлениеТоваровУслугТовары.Ссылка КАК Приходная
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
        ПО РеализацияТоваровУслугТовары.Номенклатура = ПоступлениеТоваровУслугТовары.Номенклатура

В Вашей форме это будет выглядить так:
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ПриходнаяНакладнаяТовары.Номенклатура,
    ПриходнаяНакладнаяТовары.Ссылка
ПОМЕСТИТЬ В1
ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПриходнаяНакладнаяТовары
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    РасходнаяНакладнаяТовары.Номенклатура,
    РасходнаяНакладнаяТовары.Ссылка
ПОМЕСТИТЬ В2
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РасходнаяНакладнаяТовары
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    В1.Ссылка,
    В2.Ссылка КАК Ссылка1
ИЗ
    В1 КАК В1
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ В2 КАК В2
        ПО В1.Номенклатура = В2.Номенклатура



По идее задача сводится к еще более простой форме:
Как сделать так, чтоб запрос:
ВЫБРАТЬ РАЗЛИЧНЫЕ
    РасходнаяНакладнаяТовары.Номенклатура КАК Номенклатура,
    РасходнаяНакладнаяТовары.Ссылка КАК Ссылка
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РасходнаяНакладнаяТовары

возвращал выборку только по одному товару из каждого документа - тогда в колонке ссылка - все значения были бы разные. А так каждый документ может содержать несколько товаров, потому в колонке ссылка значения повторяются
Vofka
Цитата
По идее задача сводится к еще более простой форме:
Как сделать так, чтоб запрос:
ВЫБРАТЬ РАЗЛИЧНЫЕ
    РасходнаяНакладнаяТовары.Номенклатура КАК Номенклатура,
    РасходнаяНакладнаяТовары.Ссылка КАК Ссылка
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РасходнаяНакладнаяТовары


возвращал выборку только по одному товару из каждого документа - тогда в колонке ссылка - все значения были бы разные. А так каждый документ может содержать несколько товаров, потому в колонке ссылка значения повторяются


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


rulez.gif
aaa
Немного опоздал с ответом. Именно так и должно делаться думаю. Не так VBI ?
vbi
Цитата(Vofka @ 11.11.11, 13:45) необходимо зарегистрироваться для просмотра ссылки
ВЫБРАТЬ РАЗЛИЧНЫЕ
     МИНИМУМ(РасходнаяНакладнаяТовары.Номенклатура) КАК Номенклатура,
     РасходнаяНакладнаяТовары.Ссылка КАК Ссылка
ИЗ
     Документ.РеализацияТоваровУслуг.Товары КАК РасходнаяНакладнаяТовары
СГРУППИРОВАТЬ ПО
     РасходнаяНакладнаяТовары.Ссылка

rulez.gif

Оказалось все так просто, респект огромный! Да именно так icon_beer17.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.