Имя: Пароль:
1C
1C 7.7
v7: Как объединить результат 2х запросов с одинаковыми полями?
0 _alex_mst_
 
18.07.12
16:11
Как объединить результат 2х запросов с одинаковыми полями?
1 1Сергей
 
18.07.12
16:16
чёрные?
2 Ёпрст
 
18.07.12
16:16
написать 1 общий запрос
"объеденить" в ТЗ
"объеденить" при обходе по группировкам через Получить
3 _alex_mst_
 
19.07.12
09:13
Можно примерный код?
4 Ёпрст
 
19.07.12
09:14
(3) нам отсюдда не видно, что ты хочешь объеденить и как.
5 _alex_mst_
 
19.07.12
09:17
фрагмент первого запроса (именно группировки и сумма):
|Группировка Номенклатура без групп;
|Группировка Месяц все;
|Функция КоличествоОбщ    = Сумма(Количество);

фрагмент второго:
|Группировка Номенклатура без групп;
|Группировка Месяц все;
|Функция КоличествоСумма = Сумма(Количество);

нужно их слить в один
оба запроса на основе разных документов формируются за один и тот же период, но поля одинаковые
6 Ёпрст
 
19.07.12
09:18
(5) дык пиши общий запрос, делов то.
7 _alex_mst_
 
19.07.12
09:18
нужно чтобы потом при обходе (выводе в табДок) данные количества были просуммированы
8 Ёпрст
 
19.07.12
09:18
один общий запрос
9 _alex_mst_
 
19.07.12
09:20
|Номенклатура = Документ.Реализация.Номенклатура;
//|Количество = Документ.Реализация.Количество;
//|Склад = Документ.Реализация.Склад;
10 Ёпрст
 
19.07.12
09:20
|Период С...ПО...
|Количество= Документ.Вася.Количество,Документ.Федя.Количество;
|Номенклатура = Документ.Вася.Номенклатура,Документ.Федя.Номенклатура;
|Функция КоличествоСумма = Сумма(Количество);
|Группировка Номенклатура без групп;
|Группировка Месяц все;
11 _alex_mst_
 
19.07.12
09:23
тут в доке Вася - делается выборка по всем складам, а в доке федя только один склад. Номенклатура тоже в доке вася разная, в доке федя только одна. количество сосуммируется только при совпадении полей склад и номенклатура (помесячно)? (я давно уже с 7-кой не общался..)
12 Ёпрст
 
19.07.12
09:25
(11) и че ?
Да хоть 100 складов и вся разная номенклатура
13 _alex_mst_
 
19.07.12
09:49
А если есть определенные реквизиты только для 1 док-та, по которым есть условие:
|Количество= Документ.Вася.Количество,Документ.Федя.Количество;
|Номенклатура = Документ.Вася.Номенклатура,Документ.Федя.Номенклатура;
|Флаг = Документ.Вася.Флаг;
|Условие(Флаг=1);

то данные док-та федя не попадут в результат?
14 _alex_mst_
 
19.07.12
09:50
возможно ли туда дописать что-то типа?:
|Флаг = Документ.Вася.Флаг, "1";

т.е. для док-та федя значение флага всегда =1
15 Ёпрст
 
19.07.12
09:51
(13) то условие будет действовать ТОЛЬКо для этого вида документа
16 _alex_mst_
 
19.07.12
10:02
В оригинале условие такое:
Условие(Флаг = Строка("РР"));

и оно отсекает данные второго документа (в котором нет этого реквизита)
17 1Сергей
 
19.07.12
10:05
(16) покажи чего наваял
18 Ёпрст
 
19.07.12
10:06
(16) врешь ведь.. и условие, ну ни в п..у!
19 Ёпрст
 
19.07.12
10:06
приводить строку к строке..
20 Ёпрст
 
19.07.12
10:06
это полный пэ.
21 _alex_mst_
 
19.07.12
10:07
Период с '01.01.12' по '10.01.12';
ОбрабатыватьДокументы Проведенные;
Склад = Документ.док1.Склад, Документ.док2.Склад;
Номенклатура = Документ.док1.Номенклатура, Документ.док2.Номенклатура;
Покупатель = Документ.док1.Покупатель, Документ.док2.Контрагент;
ВидОплаты = Документ.док1.ВидОплаты;
Флаг = Документ.док1.Флаг;
Количество = Документ.док1.Расход, Документ.док2.Количество;
Группировка Склад упорядочить по Склад.Наименование;
Группировка Номенклатура без групп;
Группировка Месяц все;
Функция КоличествоОбщ    = Сумма(Количество);
Условие (Номенклатура.ВидНоменклатуры <> Перечисление.ВидыНоменклатуры.Услуга);
Условие (Флаг = Строка("РЛЗ"));
22 _alex_mst_
 
19.07.12
10:08
нижнее условие убираю - все хорошо, возвращаю, данные отсекаются
23 _alex_mst_
 
19.07.12
10:08
в первой версии запроса (когда не было необходимости второй док подтягивать) всё норм работало
24 Ёпрст
 
19.07.12
10:09
(21)


|ВидНоменклатуры  = Документ.док1.Номенклатура.ВидНоменклатуры, Документ.док2.Номенклатура.ВидНоменклатуры;
//Условие (Номенклатура.ВидНоменклатуры <> Перечисление.ВидыНоменклатуры.Услуга);
|Условие (ВидНоменклатуры <> Перечисление.ВидыНоменклатуры.Услуга);
|Условие (СокрЛП(Флаг) = ""РЛЗ"");
25 пипец
 
19.07.12
10:10
есть в запросе конструкция <когда>
ЗЫ конструктор не отменяли
26 _alex_mst_
 
19.07.12
10:16
(24) не помогло
27 Ёпрст
 
19.07.12
10:18
(26) да ну ?
:))

без условия флаг, что выводит ?
28 _alex_mst_
 
19.07.12
10:18
без условия "флаг" выводит данные обоих доков
29 Ёпрст
 
19.07.12
10:20
+

нижнее условие убираю - все хорошо, возвращаю, данные отсекаются

всё правильно, отсекаются "данные", где Документ.док1.Флаг = "РЛЗ"

ЗЫ: заместо Группировка Месяц все; воткни Группировка Документ; - увидишь сам, какие документы фильтруются
30 _alex_mst_
 
19.07.12
10:20
сам удивляюсь ))))
31 Ёпрст
 
19.07.12
10:20
(28) а с условием ?
+ Флаг - реквизит документа с каким типом ? Строка ?
32 _alex_mst_
 
19.07.12
10:21
мне нужна группировка помесячно - для вывода в табдок
флаг - строка(3)
33 _alex_mst_
 
19.07.12
10:22
нет такого как в 8-ке: прописать в это поле для второго дока фиксированное значение?
34 Ёпрст
 
19.07.12
10:23
(32) потом её сделаешь, в начале проверь, какие документы в выборку попали.
Мот их и нет вовсе.
35 Ёпрст
 
19.07.12
10:23
(33) есть, но только в прямом запросе
36 _alex_mst_
 
19.07.12
10:24
если разделить на два запроса - то всё хорошо, может есть способ потом результаты объединить по полям?
37 _alex_mst_
 
19.07.12
10:25
типа запрос1, запрос2 = запрос3 :)
а потом уже запрос3 обходить по группировкам
38 Mikeware
 
19.07.12
10:25
(36)см. (2)
А вообще, юзай прямые запросы, и забудь черные как страшный сон...
39 Ёпрст
 
19.07.12
10:28
(36) у тебя всё и в одном работает.
40 _alex_mst_
 
19.07.12
10:30
(38) что за прямые запросы? )))
41 Ёпрст
 
19.07.12
10:31
(40) тебе рано еще об этом, ты обычный заставь работать.

как в (29) проверил ?
Какие документы в выборке ?
42 _alex_mst_
 
19.07.12
10:35
(41) с условием флаг - доков второго типа в выборке нету
43 Ёпрст
 
19.07.12
10:38
а так ?
|Условие ((СокрЛП(Флаг) = ""РЛЗ"")ИЛИ(ПустоеЗначение(Флаг)=1));
44 _alex_mst_
 
19.07.12
10:45
О! теперь оба типа!
только мне нужно чтобы доки второго типа брались только по складу "Склад56", а первого - по всем
45 Ёпрст
 
19.07.12
10:47
пилять, я стал забывать, как там в чорном запросе фильтруется.

Аналогично - Склад объяви как переменную из одного вида документа и условие на пустоезначение склад
46 Ёпрст
 
19.07.12
10:48
можешь еще условие на вид дока воткнуть, для надежности.
47 _alex_mst_
 
19.07.12
10:51
ок, спсб!
48 Mikeware
 
19.07.12
10:51
(41) заставить работать обычный - занятие не для слабонервных :-)
49 VladZ
 
19.07.12
10:51
(0) Вариант 1: объединить в один запрос.
Вариант 2: выгрузить в индексированные таблицы, таблицы заджоинить.
50 Ёпрст
 
19.07.12
10:53
(48) ну..черный можно использовать при иерархии и пользовательских функций, иногда удобно. Хотя и не пишу уже такие запросы
51 _alex_mst_
 
19.07.12
10:54
(48) это точно! с 8-кой куда всё проще в этом плане :)))
52 _alex_mst_
 
19.07.12
10:54
так что за прямые запросы то?
53 Ёпрст
 
19.07.12
10:57
(52)
http://www.1cpp.ru/forum/YaBB.pl?board=query

читай там FAQ, и скачай статью.. если есть время - разберешься
Ошибка? Это не ошибка, это системная функция.