Имя: Пароль:
1C
1С v8
Как соединить две таблицы в запросе в одной есть период в другой нет
0 Cerera
 
30.09.13
16:01
Есть таблица 1 (продажи):
Контрагент, Номенклатура, Период, Количество
Есть таблица 2 (регистр сведений):
Контрагент, Номенклатура, Предполагаемое количество

Когда я вложенный запрос делаю, соединяю их по Номенклатура, Контрагенту, то рядом с периодом идёт количество, а на следующей строчке идет предполагаемое количество по тем же измерениям, а мне надо, чтоб

Если номенклатура, контрагент совпадают, то чтоб "предполагаемое количество" шло рядом с каждой строчкой периода.

Пример:

Товар1, Контагент1, 01.01.2013, 100, 150
Товар1, Контагент1, 01.02.2013, 120, 150
Товар1, Контагент1, 01.03.2013, 90, 150

Как бы так их соединить?
1 butterbean
 
30.09.13
16:02
какбе просто левое соединение по номенклатуре и контрагенту
2 Cerera
 
30.09.13
16:07
(1)не подойдет. потому что мне надо, чтоб если в РС есть данные, а в продажах нет, то чтоб выходили всё равно строчки.
3 butterbean
 
30.09.13
16:08
(2) ну тогда полное соединение
4 Жан Пердежон
 
30.09.13
16:09
выбирай:
ПОЛНОЕ СОЕДИНЕНИЕ
ОБЪЕДИНИТЬ
5 Cerera
 
30.09.13
16:10
(4)полное соединение знаю, объединить не понимаю.
6 samozvanec
 
30.09.13
16:10
"чтоб "предполагаемое количество" шло рядом с каждой строчкой периода"
что бы это могло значить?
7 Cerera
 
30.09.13
16:13
(6)Продажи могут быть за каждый месяц. необходимо, чтобы значение "предполагаемое количество" из регистра сведений подставлялось рядом с каждым месяцем.
8 samozvanec
 
30.09.13
16:14
если ты хочешь в той же строке отдельной колонкой, то соединение. но у тебя, судя по всему, в первой таблице значения полей, по которым идет связь, могут повторяться. соответственно, он тебе предполагаемые продажи в каждой строчке покажет. не знаю, насколько это юзабельно.

если объединишь и отсортируешь по контрагенту и номенклатуре. то одной отдельно строкой покажет. опять же в отдельную колонку предполагаемое количество можно вывести.
9 Sabbath
 
30.09.13
16:17
(2) А чему тогда период равен, если нет продаж, а есть строчки РС?
Короче юзай полное соединение и не забудь ЕСТЬNULL
10 Cerera
 
30.09.13
16:18
(9)если есть строчки в РС то пусть показывает только предполагаемый объем.
11 Sabbath
 
30.09.13
16:20
(10) Это понятно, но колонку с периодом придется чем-то заполнить) Как я понял, раз ты упоминал период, то он нужен какой-то. Кстати, что имеется ввиду под периодом? Если это как бы месяц, то все ок, вопросов нет)
12 Sabbath
 
30.09.13
16:22
+(11) Хотя нет, вопросы есть, ведь по периоду строки не будет, елси не будет строки в продажах, а будет только одна строка с предполагаемым объемом с неизвестным периодом
13 Cerera
 
30.09.13
16:25
(12)(11)а дело в том что результат запроса добавляется в документ в табличную часть обрабатываясь построчно.
а в табличной части уже на каждую пару "Контрагент" - "номенклатура" одна строчка. но в отдельных колонках идут данные по продажам за месяц. а если предполагаемый объем <>0 а продаж не было ни за один месяц, то просто эти столбики с продажами будут пустыми.
14 Sabbath
 
30.09.13
16:26
(0) Если такая проблема, как в (12), то тебе надо получить таблицу периодов, присоединить ее декартовым соединением к РС с предполагаемым обемом, а потом это по периоду, контрагенту и номенклатуре к продажам. Период, естественно, привести к началу месяца. Как я понял, суть твоего отчета в этом.

Декартово соединение это типа
выбрать ... из
Таблица1, Таблица2

Тогда присоединит все, ко всему.

А таблицу периодов получай в цикле, например, и засовывай в запрос. Хотя, вероятно, есть решения оптимальней.
15 Sabbath
 
30.09.13
16:29
(13) Подойдет вариант (14), хотя есть и другие
16 Sabbath
 
30.09.13
16:34
В варианте (14) продажи уже подсоединяются левым соединением, естественно (продажи справа)
17 Cerera
 
30.09.13
16:39
понял. пробую.
18 Sabbath
 
30.09.13
16:44
(17) Давай, мне уже идти, так что разбирайся дальше сам, это должно работать. Потом расскажешь)
19 Strogg
 
30.09.13
16:46
ОБЪЕДИНИТЬ ВСЕ.
Как-то так...
20 Sabbath
 
30.09.13
16:49
(19) осталось написать, что с чем объединять, ибо этого мало для решения задачи) А решить можно и через объединение, но мой ответ в (14)
21 Strogg
 
30.09.13
16:50
(20), ну, объединять ему особо вариантов нет. По контрагенту и по номенклатуре. В качестве периода использовать пустую дату, навскидку.
22 Sabbath
 
30.09.13
16:52
(21) суть в том, что нужна как раз не пустая дата, а разные, почитай тред
23 Sabbath
 
30.09.13
16:53
+(22) а именно (13)
24 Strogg
 
30.09.13
16:56
(22) если в РС нет периода, то никаким образом не сделать, кроме пустой даты в одном запросе(потом сгруппировать по контрагенту, номенклатуре, а даты сложить). Можно только создать другой запрос, где дополнить период и передать в качестве виртуальной таблицы. Но это уже совсем другой вопрос...