Вход | Регистрация
 

2 таблицы значений в одном запросе.

2 таблицы значений в одном запросе.
Я
   yyyuuu
 
23.01.19 - 07:39
Здравствуйте Друзья.
Хочу поместить две таблицы значений в 1 запрос. Ну а там обработать так как мне надо. Подскажите пожалуйста что не так. Потому что, делая любое соеденение оно не работает вообще. То есть. В 1 таблице 22 значения во второй 5, Я их хочу соеденить по левой. То есть с лева все, в шо справа не подошло по Нул. Но почему то Нулов вообще нету, и значений стало 27. В чем дело не понимаю.


    //
    Таблица = Новый ТаблицаЗначений;
    //
    Таблица.Колонки.Добавить("Паспорт",   Новый ОписаниеТипов("Число",,,   Новый КвалификаторыЧисла(10,0)));
    Таблица.Колонки.Добавить("Резервуар", Новый ОписаниеТипов("Число",,,   Новый КвалификаторыЧисла(10,0)));
    Таблица.Колонки.Добавить("Товар",     Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(200)));
    //
    Таблица1 = Новый ТаблицаЗначений;
    Таблица1.Колонки.Добавить("Грузополучатель", Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(200)));
    Таблица1.Колонки.Добавить("Груз",            Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(200)));
    //
    ВыбранныйДок = Налив;
    //**
    НомерДокумента = Налив.Номер;
    Попытка
        //**
            НужныйДокумент = Документы.Налив.НайтиПоНомеру(НомерДокумента);
            Сообщить("Найеден");
        //**
    Исключение
        //**
        Сообщить(ОписаниеОшибки());
        //**
    КонецПопытки;    
    //**Из табличной части " Вагоны" Документ "Налив"
    Для Каждого Строка Из НужныйДокумент.Вагоны Цикл//Налив.Вагоны Цикл
        //
        //Пишем строку
        Стр = Таблица.Добавить();
        Стр.Товар     = Строка.ВидТоплива;
        Стр.Паспорт   = Строка.Паспорт;
        Стр.Резервуар = Строка.Резервуар;
        //
    КонецЦикла;
    //
    Для Каждого Строка1 Из НужныйДокумент.Накладные Цикл
        //
        Стр1 = Таблица1.Добавить();
        Стр1.Грузополучатель = Строка1.Грузополучатель;
        Стр1.Груз            = Строка1.Груз;
        //
    КонецЦикла;
    //
    //СтрокаБезГрузополучателя = Таблица.НайтиСтроки(Новый Структура("Грузополучатель", ""));
    //Для Каждого СтрокаТаблицы Из СтрокаБезГрузополучателя Цикл
    //    Таблица.Удалить(СтрокаТаблицы);
    //КонецЦикла;
    Сообщить("Конец");
    //**
    //==============================================================================
    Запрос                             = Новый Запрос;
    МенеджерВременныхТаблиц         = Новый МенеджерВременныхТаблиц;
    Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
    //
    Запрос.УстановитьПараметр("Налив",      Таблица );
    Запрос.УстановитьПараметр("Накладные",  Таблица1);
    //    
    
    //==============================================================
    //**
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Налив.Паспорт,
        |    Налив.Резервуар,
        |    Налив.Товар
        |ПОМЕСТИТЬ ВремТаб
        |ИЗ
        |    &Налив КАК Налив
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    Накладные.Груз,
        |    Накладные.Грузополучатель
        |ПОМЕСТИТЬ ВремТаб2
        |ИЗ
        |    &Накладные КАК Накладные
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВремТаб.Паспорт,
        |    ВремТаб.Резервуар,
        |    ВремТаб.Товар КАК Товар,
        |    ВремТаб2.Груз,
        |    ВремТаб2.Грузополучатель
        |ИЗ
        |    ВремТаб КАК ВремТаб
        |        ЛЕВОЕ СОЕДИНЕНИЕ ВремТаб2 КАК ВремТаб2
        |        ПО ВремТаб.Товар = ВремТаб2.Груз";
    
    РезультатЗапроса = Запрос.Выполнить();
    ТабЗн              = РезультатЗапроса.Выгрузить();    
    
    //===================================================================
 
 
   yyyuuu
 
1 - 23.01.19 - 07:42
Может Я как то не так делаю
   Ordnung
 
2 - 23.01.19 - 07:44
Ессно, не так, у тебя вместо объединения идёт выборка разных полей из таблиц.
   yyyuuu
 
3 - 23.01.19 - 07:46
Тогда как мне сделать правильно, Я прям запутался что то. Вроде все как по учебнику, а оказывается выборка разных полей идет)
   Ordnung
 
4 - 23.01.19 - 07:46
Убери из финального запроса ВремТаб2.Груз
   yyyuuu
 
5 - 23.01.19 - 07:50
(4) Все ровно не оно, так и отработало
   catena
 
6 - 23.01.19 - 07:50
В какой из времтаб 5, в какой 22?
   yyyuuu
 
7 - 23.01.19 - 07:51
Как и до этого
   yyyuuu
 
8 - 23.01.19 - 07:51
Запрос.УстановитьПараметр("Налив",      Таблица ); = 22
Запрос.УстановитьПараметр("Накладные",  Таблица1); = 5
   yyyuuu
 
9 - 23.01.19 - 07:52
В итоге получаю 27 почему, вообще не понимаю
   Ordnung
 
10 - 23.01.19 - 07:52
У тебя точно груз и товар одного типа значений?
 
 Рекламное место пустует
   Альбатрос
 
11 - 23.01.19 - 07:53
(9) Покажи таблицы скрином. И первую и вторую
   Ordnung
 
12 - 23.01.19 - 07:53
+(10) А, это строки. Пробелов никаких там нет лишних в этих строках?
   catena
 
13 - 23.01.19 - 07:53
(8)Правая таблица идет целиком. Поменяйте в соединении их местами.
   yyyuuu
 
14 - 23.01.19 - 07:54
Таблица1.Колонки.Добавить("Груз",            Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(200)));

Таблица.Колонки.Добавить("Товар",     Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(200)));
   Альбатрос
 
15 - 23.01.19 - 07:54
Сдается мне у тебя во второй что-то типа:
Груз1 - грузополучатель1
Груз1 - Грузополучатель2
   yyyuuu
 
16 - 23.01.19 - 07:57
   yyyuuu
 
17 - 23.01.19 - 07:59
(13) не уверен что поможет но попробовал, и не помогло)
   arsik
 
18 - 23.01.19 - 07:59
(16) ну все правильно. У тебя "Регулярка чтьот там" - 2 раза соединяется. Итого + 5 строк, т.к. в первой ТЗ у тебя их по этому товару 5
   yyyuuu
 
19 - 23.01.19 - 07:59
(12) не пробелов ничего, как будто не соеденяет а просто обьеденил, и подставил соотвествия сам)
   yyyuuu
 
20 - 23.01.19 - 08:01
(18) так в чем все дело)
   arsik
 
21 - 23.01.19 - 08:03
(20) Тебе нужно почитать про соединения в запросах
https://helpme1c.ru/yazyk-zaprosov-1s-8-3-dlya-nachinayushhix-programmistov-soedineniya
   yyyuuu
 
22 - 23.01.19 - 08:06
Все спасибо, сейчас гляну.
Только Я понять не могу какое соединение не делал, результат один и тоже всегда
   arsik
 
23 - 23.01.19 - 08:09
(22) Для примера попробуй во второй таблице оставить строку только "БГС-Л". Все понятно станет.
   yyyuuu
 
24 - 24.01.19 - 01:59
Друзья, Я думал соеденения работаю так. Пример левое. Все с левой с правой только по условию. Но Я понять не могу, почему появляются лишние записи еще 5. Я думал в 22 моих  поставит соотвествие и все. Запутался немного
   yyyuuu
 
25 - 24.01.19 - 02:00
(23) попробую) Думаю натолкнет на мысли)
   Fram
 
26 - 24.01.19 - 02:01
(24) а если справился по условию более одной записи соответствует?
   Fram
 
27 - 24.01.19 - 02:02
*справился=справа
   yyyuuu
 
28 - 24.01.19 - 02:04
(26) У меня все подходят по условию, Я понять не могу откуда еще 5 добавились. Вот тут прям сижу и понять не могу. Сейчас рисовать буду)
   yyyuuu
 
29 - 24.01.19 - 02:13
(23)Заменил во второй на "бгс-л"

Получилось 44 записи. 

[url=https://radikal.ru/big/kvjnlbwxa1nax][img]https://c.radikal.ru/c30/1901/a0/c474f1cade4ft.jpg[/img][/url]

Ну и соотвествие подставил только по найденой то есть все одинаковое вышло. Если записи 22 откуда взялись еще 22?) Что то сам дойти не могу)
   Fram
 
30 - 24.01.19 - 02:17
Ещё раз (26) прочитай
   yyyuuu
 
31 - 24.01.19 - 02:20
Понял, для кажлдой записи из первой таблицы делает 5 запсей из второй потому что подошло
   Fram
 
32 - 24.01.19 - 02:30
(31) держи конфетку )
   yyyuuu
 
33 - 25.01.19 - 02:26
В общем немного по думал, по копался. В итоге сделал все одним запросом а дальше нужное только загрузил в таблицу значений и с соеденением разобрался, нарисовал карнтинку по ней посмотрел все и понял - Да действительно разобрался)
 
 
   yyyuuu
 
34 - 25.01.19 - 02:26
Всем спасибо, помогли ребят)


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует