Имя: Пароль:
1C
1С v8
Как соединить два запроса помогите пожалуйста
,
0 Капюшон
 
02.04.12
15:17
Один запрос показывает серии товаров с остатком
   "ВЫБРАТЬ
   |    ТоварыНаСкладахОстатки.СерияНоменклатуры КАК СерияНоменклатуры,
   |    ПРЕДСТАВЛЕНИЕ(ТоварыНаСкладахОстатки.СерияНоменклатуры),
   |    ТоварыНаСкладахОстатки.Качество КАК Качество,
   |    ПРЕДСТАВЛЕНИЕ(ТоварыНаСкладахОстатки.Качество),
   |    СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток
   |ИЗ
   |    РегистрНакопления.ТоварыНаСкладах.Остатки(
   |            &Дата,
   |            Номенклатура = &ВыбНоменклатура
   |                И Склад = &ВыбСклад) КАК ТоварыНаСкладахОстатки
   |
   |СГРУППИРОВАТЬ ПО
   |    ТоварыНаСкладахОстатки.СерияНоменклатуры,
   |    ТоварыНаСкладахОстатки.Качество
   |
   |УПОРЯДОЧИТЬ ПО
   |    СерияНоменклатуры,
   |    Качество,
   |    КоличествоОстаток";

А второй показывает минимальную дату прихода серии
   Запрос.Текст =
   "ВЫБРАТЬ
   |    МИНИМУМ(ТоварыНаСкладах.Регистратор.Дата) КАК РегистраторДата,
   |    ТоварыНаСкладах.СерияНоменклатуры
   |ИЗ
   |    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
   |ГДЕ
   |    ТоварыНаСкладах.Номенклатура = &ВыбНоменклатура
   |
   |СГРУППИРОВАТЬ ПО
   |    ТоварыНаСкладах.СерияНоменклатуры
   |
   |УПОРЯДОЧИТЬ ПО
   |    РегистраторДата";

А как их объединить? через Объединить все или через левое соединение ?
1 andrewks
 
02.04.12
15:19
Запрос.Текст=Текст1+";"+Текст2;
2 DarKySiK
 
02.04.12
15:20
(0) пропробуй
3 Капюшон
 
02.04.12
15:20
(1)нет. так не пойдет ) нужно чтобы данные запроса 1 сортировались по дате из запроса 2
4 DarKySiK
 
02.04.12
15:20
+ (2) попробуй и так и так и выбери по вкусу))
5 Капюшон
 
02.04.12
15:22
дак мне нужно знать какой способ объединения запросов капать
6 zladenuw
 
02.04.12
15:22
и тот и тот
7 Alex S D
 
02.04.12
15:22
левым соединением по серии че тут непонятного
8 DarKySiK
 
02.04.12
15:22
(5) а что долго оба варианта просмотреть?
9 andrewks
 
02.04.12
15:23
(5) не надо никуда капать. просто сделай. будь мужиком!
10 DarKySiK
 
02.04.12
15:23
(7) ты все испортил :(
11 andrewks
 
02.04.12
15:25
кто-нибудь знает, для чего вообще второй запрос?
12 Капюшон
 
02.04.12
15:37
(11)я знаю. второй запрос чтобы определить дату самого раннего оприходования партии.
а вообще задача вывести таблицу серий номенклатуры в порядке сортировке по дате
13 Капюшон
 
02.04.12
15:56
я соединил запрос но не знаю куда воткнуть дату

   "ВЫБРАТЬ
   |    ТоварыНаСкладахОстатки.СерияНоменклатуры КАК СерияНоменклатуры,
   |    ПРЕДСТАВЛЕНИЕ(ТоварыНаСкладахОстатки.СерияНоменклатуры),
   |    ТоварыНаСкладахОстатки.Качество КАК Качество,
   |    ПРЕДСТАВЛЕНИЕ(ТоварыНаСкладахОстатки.Качество),
   |    СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток
   |ИЗ
   |    РегистрНакопления.ТоварыНаСкладах.Остатки(
   |            &Дата,
   |            Номенклатура = &ВыбНоменклатура
   |                И Склад = &ВыбСклад) КАК ТоварыНаСкладахОстатки
   |    Левое соединение
   |    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
   |    По
   |    ТоварыНаСкладах.СерияНоменклатуры = ТоварыНаСкладахОстатки.СерияНоменклатуры
   |
   |СГРУППИРОВАТЬ ПО
   |    ТоварыНаСкладахОстатки.СерияНоменклатуры,
   |    ТоварыНаСкладахОстатки.Качество
   |
   |УПОРЯДОЧИТЬ ПО
   |    СерияНоменклатуры,
   |    Качество,
   |    КоличествоОстаток";
14 Капюшон
 
02.04.12
16:00
у меня по сути два запроса. один запрос возращает таблицу "Серия - Дата"
а первый запрос возвращает другие данные "Серия - Остаток" а как их соединить?
15 Gmerto
 
02.04.12
16:01
Пакетным запросом. В первом запросе получаешь дату, во втором её используешь.
16 dk
 
02.04.12
16:04
тебе надо левое соединение к запросу, а не к регистру
17 dk
 
02.04.12
16:06
"ВЫБРАТЬ
   |    ТоварыНаСкладахОстатки.СерияНоменклатуры КАК СерияНоменклатуры,
   |    ПРЕДСТАВЛЕНИЕ(ТоварыНаСкладахОстатки.СерияНоменклатуры),
   |    ТоварыНаСкладахОстатки.Качество КАК Качество,
   |    ПРЕДСТАВЛЕНИЕ(ТоварыНаСкладахОстатки.Качество),
   |    СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток
   |ИЗ
   |    РегистрНакопления.ТоварыНаСкладах.Остатки(
   |            &Дата,
   |            Номенклатура = &ВыбНоменклатура
   |                И Склад = &ВыбСклад) КАК ТоварыНаСкладахОстатки
   |    Левое соединение (ВЫБРАТЬ
   |    МИНИМУМ(ТоварыНаСкладах.Регистратор.Дата) КАК РегистраторДата,
   |    ТоварыНаСкладах.СерияНоменклатуры
   |ИЗ
   |    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
   |ГДЕ
   |    ТоварыНаСкладах.Номенклатура = &ВыбНоменклатура
   |
   |СГРУППИРОВАТЬ ПО
   |    ТоварыНаСкладах.СерияНоменклатуры
   |)Влож ПО Влож.СерияНоменклатуры = ТоварыНаСкладахОстатки.СерияНоменклатуры
18 Капюшон
 
02.04.12
16:12
(17)суть ясна! только на синтаксис ругается
19 Капюшон
 
02.04.12
16:21
Ошибка выдается
"Поле не входит в группу "ТоварыНаСкладахОстатки.СерияНоменклатуры"<<?>>ТоварыНаСкладахОстатки.СерияНоменклатуры Как СерияНоменклатуры
20 Shurjk
 
02.04.12
16:23
3,6 года стажа, а чем отличается соединение от объединения так и не узнал... ндаа.
21 Ненавижу 1С
 
гуру
02.04.12
16:24
если ты так собираешься найти дату самого раннего прихода, сформировавшего остатки, то не взлетит - все сложнее

смотрю v8: Помогите как запросик вывести с сортировкой по дате поступления серии
22 Капюшон
 
02.04.12
16:24
(20)я просто не занимался запросами. делал кучу другой работы.
23 Shurjk
 
02.04.12
16:25
(22) Хмм, вообще то в 1с вроде как без запросов никуда.
24 Ненавижу 1С
 
гуру
02.04.12
16:25
(23) он картриджи заправлял
25 Капюшон
 
02.04.12
16:25
(21)а почему не взлетит? если я в регистре просто смотрю дату самого раннего регистратора по этой серии?
26 Shurjk
 
02.04.12
16:25
+(21) Или лучше вот здесь посмотри там аж целых два способа описано.
27 Капюшон
 
02.04.12
16:26
(23)я с 2002 года занимаюсь 1с. и запросы мне не приходилось делать сложные ) максимум соединить остатки с ценами.. разные же направления 1с есть. я обработки писал всякие...
28 Shurjk
 
02.04.12
16:27
(27) Остатки с ценами тоже можно так насоединять что результаты будут весьма неожиданными.
29 Капюшон
 
02.04.12
16:27
(28)у меня всё получалось ) просто сейчас я вынужден разобраться в запросах..
30 Shurjk
 
02.04.12
16:28
(29) Ну да учиться никогда не поздно:)
31 Shurjk
 
02.04.12
16:29
32 hhhh
 
02.04.12
16:48
(24) да, а чем всё-таки закончилась та финансовая пирамида с заправкой картриджей?
33 Ненавижу 1С
 
гуру
02.04.12
17:05
(32)эээ, я наверное пропустил, не в курсе
34 Капюшон
 
02.04.12
17:06
на свой стыд сделал вот так:
Функция ВернутьДатуПартий()
   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |    МИНИМУМ(ТоварыНаСкладах.Регистратор.Дата) КАК РегистраторДата,
   |    ТоварыНаСкладах.СерияНоменклатуры
   |ИЗ
   |    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
   |ГДЕ
   |    ТоварыНаСкладах.Номенклатура = &ВыбНоменклатура
   |
   |СГРУППИРОВАТЬ ПО
   |    ТоварыНаСкладах.СерияНоменклатуры
   |
   |УПОРЯДОЧИТЬ ПО
   |    РегистраторДата";

   Запрос.УстановитьПараметр("ВыбНоменклатура", ВыбНоменклатура);
   ТЗ = Запрос.Выполнить().Выгрузить();
   Возврат ТЗ;
КонецФункции




   Запрос.Текст =
   "ВЫБРАТЬ
   |    ТоварыНаСкладахОстатки.СерияНоменклатуры КАК СерияНоменклатуры,
   |    ПРЕДСТАВЛЕНИЕ(ТоварыНаСкладахОстатки.СерияНоменклатуры),
   |    ТоварыНаСкладахОстатки.Качество КАК Качество,
   |    ПРЕДСТАВЛЕНИЕ(ТоварыНаСкладахОстатки.Качество),
   |    СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток
   |ИЗ
   |    РегистрНакопления.ТоварыНаСкладах.Остатки(
   |            &Дата,
   |            Номенклатура = &ВыбНоменклатура
   |                И Склад = &ВыбСклад) КАК ТоварыНаСкладахОстатки
   |
   |СГРУППИРОВАТЬ ПО
   |    ТоварыНаСкладахОстатки.СерияНоменклатуры,
   |    ТоварыНаСкладахОстатки.Качество
   |
   |УПОРЯДОЧИТЬ ПО
   |    СерияНоменклатуры,
   |    Качество,
   |    КоличествоОстаток";

   Запрос.УстановитьПараметр("ВыбНоменклатура", ВыбНоменклатура);
   Запрос.УстановитьПараметр("ВыбСклад", ВыбСклад);
   Запрос.УстановитьПараметр("Дата", Дата);

   ОбщаяТаблица = Запрос.Выполнить().Выгрузить();
   ОбщаяТаблица.Колонки.Добавить("Дата");
   Для Каждого СтрочкаТаблицы Из ОбщаяТаблица Цикл
       РазыскиваемаяСерия=ТЗ.Найти(СтрочкаТаблицы.СерияНоменклатуры,"СерияНоменклатуры");
       СтрочкаТаблицы.Дата=РазыскиваемаяСерия.РегистраторДата;
   КонецЦикла;

   ОбщаяТаблица.Сортировать("Дата");
   Для Каждого СтрочкаТаблицы Из ОбщаяТаблица Цикл
       Сообщить(СтрочкаТаблицы.СерияНоменклатуры);
   КонецЦикла;
35 andrewks
 
02.04.12
17:08
(12) это всё можно сделать в одном запросе (непакетном)
36 Капюшон
 
02.04.12
17:08
(35)дай пожалуйста наводку
37 Shurjk
 
02.04.12
17:10
(34) Ндаа учиться ты явно не хочешь.
(36) Пакетный запрос это по сути обычный только вместо пакетов там подзапросы.
38 Капюшон
 
02.04.12
17:12
(34)а там воощбе не то. там про консоль запросов пример был! мне же надо прочитать как соединять запросы по сути две таблицы надо соединить всего лишь.
39 andrewks
 
02.04.12
17:17
(36) тебе в (17) целую наводищу дали
40 Капюшон
 
02.04.12
17:20
(39)я сделал тот запрос. только в таблице ДАты небыло!
41 andrewks
 
02.04.12
17:26
(40) ну добавь в запрос поле Влож.РегистраторДата
42 Shurjk
 
02.04.12
17:26
+(39) А в (31) готовую реализацию аж в двух вариантах с подробными объяснениями.
43 Капюшон
 
02.04.12
17:33
(42)там же для СКД (((  а мне не подходит немного. но её я изучу. вообще мне надо мастером по запросам стать за короткий срок. только с чего начать..
44 Shurjk
 
02.04.12
17:39
(43) Там ниже решение и без СКД есть.
45 Shurjk
 
02.04.12
17:40
(43) Начни с методички по СУБД и по языку запросов.
46 Капюшон
 
02.04.12
17:47
(45)Спасибо!
47 Капюшон
 
02.04.12
17:49
Я сделал!
   "ВЫБРАТЬ
   |    ТоварыНаСкладахОстатки.СерияНоменклатуры КАК СерияНоменклатуры,
   |    ПРЕДСТАВЛЕНИЕ(ТоварыНаСкладахОстатки.СерияНоменклатуры),
   |    ТоварыНаСкладахОстатки.Качество КАК Качество,
   |    ПРЕДСТАВЛЕНИЕ(ТоварыНаСкладахОстатки.Качество),
   |    СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток,
   |    Влож.РегистраторДата КАК РегистраторДата
   |ИЗ
   |    РегистрНакопления.ТоварыНаСкладах.Остатки(
   |            &Дата,
   |            Номенклатура = &ВыбНоменклатура
   |                И Склад = &ВыбСклад) КАК ТоварыНаСкладахОстатки
   |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
   |            МИНИМУМ(ТоварыНаСкладах.Регистратор.Дата) КАК РегистраторДата,
   |            ТоварыНаСкладах.СерияНоменклатуры КАК СерияНоменклатуры
   |        ИЗ
   |            РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
   |        ГДЕ
   |            ТоварыНаСкладах.Номенклатура = &ВыбНоменклатура
   |        
   |        СГРУППИРОВАТЬ ПО
   |            ТоварыНаСкладах.СерияНоменклатуры) КАК Влож
   |        ПО (Влож.СерияНоменклатуры = ТоварыНаСкладахОстатки.СерияНоменклатуры)
   |
   |СГРУППИРОВАТЬ ПО
   |    ТоварыНаСкладахОстатки.СерияНоменклатуры,
   |    ТоварыНаСкладахОстатки.Качество,
   |    Влож.РегистраторДата
   |
   |УПОРЯДОЧИТЬ ПО
   |    РегистраторДата,
   |    СерияНоменклатуры,
   |    Качество,
   |    КоличествоОстаток";
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший