Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Соединить два документа без повторений в одной колонке , средствами языка запроса          
vbi Подменю пользователя
сообщение 10.11.11, 18:12
Сообщение #1

Оратор
Иконка группы
Группа: Местный
Сообщений: 381
Из: Украина, Луцк
Спасибо сказали: 74 раз
Рейтинг: 66.6

Я в запросе выбираю Документ1 и Документ2 соединив внутренним соединением по какому-то реквизиту. В результате я получаю примерно такую картину:

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

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

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

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

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

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

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


Signature
Впроваджую, супроводжую

pablo Подменю пользователя
сообщение 11.11.11, 8:46
Сообщение #2

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 193 раз
Рейтинг: 0

Цитата
просто выбирался первый попавшийся

А вот тут поподробнее. Как только Вы сформулируете, какой из соответствующих документов вам нужен, так сразу будет видно, какое условие дописать в соединение.


Signature
Правильно поставленный вопрос содержит до 90% ответа.

vbi Подменю пользователя
сообщение 11.11.11, 9:32
Сообщение #3

Оратор
Иконка группы
Группа: Местный
Сообщений: 381
Из: Украина, Луцк
Спасибо сказали: 74 раз
Рейтинг: 66.6

Ну так вот пример:
вот выборка:
Цитата
Документ1 Документ2
ДокОдин5 ДокДва3
ДокОдин6 ДокДва4
ДокОдин6 ДокДва5
ДокОдин7 ДокДва6

Очевидно что первая попавшаяся пара в которой есть "ДокОдин6" : ДокОдин6 ДокДва4. вот ее и нужно оставить. Хотя мне для задачи не важно какую именно пару выбрать, можно и "ДокОдин6 ДокДва5", главное добится того, чтоб в колонке "Документ1" не было одинаковых значений (тип значений в обоих колонках - ссылка)


Signature
Впроваджую, супроводжую

aaa Подменю пользователя
сообщение 11.11.11, 13:14
Сообщение #4

Молчаливый
*
Группа: Пользователи
Сообщений: 2
Спасибо сказали: 1 раз
Рейтинг: 0

Создать временную таблицу используя оператор Различные
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ПриходнаяНакладнаяТовары.Номенклатура
ПОМЕСТИТЬ В1
ИЗ
    Документ.ПриходнаяНакладная.Товары КАК ПриходнаяНакладнаяТовары
;

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

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

Спасибо сказали: vbi,

vbi Подменю пользователя
сообщение 11.11.11, 13:38
Сообщение #5

Оратор
Иконка группы
Группа: Местный
Сообщений: 381
Из: Украина, Луцк
Спасибо сказали: 74 раз
Рейтинг: 66.6

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

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

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

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



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

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


Signature
Впроваджую, супроводжую

Vofka Подменю пользователя
сообщение 11.11.11, 13:45
Сообщение #6

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

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


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


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


rulez.gif

Спасибо сказали: vbi,

aaa Подменю пользователя
сообщение 11.11.11, 14:06
Сообщение #7

Молчаливый
*
Группа: Пользователи
Сообщений: 2
Спасибо сказали: 1 раз
Рейтинг: 0

Немного опоздал с ответом. Именно так и должно делаться думаю. Не так VBI ?

vbi Подменю пользователя
сообщение 11.11.11, 14:10
Сообщение #8

Оратор
Иконка группы
Группа: Местный
Сообщений: 381
Из: Украина, Луцк
Спасибо сказали: 74 раз
Рейтинг: 66.6

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

rulez.gif

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


Signature
Впроваджую, супроводжую

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 17.06.25, 11:03
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!