Имя: Пароль:
1C
1С v8
Соединить две таблицы
0 Lazio04
 
20.12.12
17:02
Как в запросе соединить две таблицы:

Объект Заказчик1 Сумма Объект Подрядчик1
Объект Заказчик2 Сумма Объект Подрядчик2
Объект Заказчик3 Сумма
Объект Заказчик4 Сумма
Объект Заказчик5 Сумма

В итоге получим левым или правым соединением не совсем то что надо, а требуется просто соединить:

Объект Заказчик1 Сумма Подрядчик1
Объект Заказчик2 Сумма Подрядчик2
Объект Заказчик3 Сумма null
Объект Заказчик4 Сумма null
Объект Заказчик5 Сумма null
1 ДенисЧ
 
20.12.12
17:02
ОБЪЕДИНИТЬ ВСЕ
2 Lazio04
 
20.12.12
17:05
не подходит( объектов будет много
3 sapphire
 
20.12.12
17:06
(2) Много это сколько?
4 pessok
 
20.12.12
17:07
(2) если не подходит, то херачь руками, чо
5 Lazio04
 
20.12.12
17:08
да сколько угодно. Собираю данные по всем заказчикам сначала потом по подрядчикам, ну и в итоге хотелось бы попроще данные организовать чтобы потом в отчет только кинуть
6 Lazio04
 
20.12.12
17:08
(4) писать не утрудился?
7 Popkorm
 
20.12.12
17:09
(3)  в (2) наверное думает в прямом смысле "ОБЪЕДИНИТЬ ВСЕ"
8 sapphire
 
20.12.12
17:09
(5) У меня объединяются несколько миллиардов записей и работает.
9 m-serg74
 
20.12.12
17:09
(5)
а вот это можно прокомментировать как получилось?
Объект Заказчик1 Сумма Подрядчик1
Объект Заказчик2 Сумма Подрядчик2
10 pessok
 
20.12.12
17:09
(6) да Вы, батенька, хам. в (1) написали единственный верный метод, но Вам не подходит. так херачьте руками
11 Lazio04
 
20.12.12
17:11
По моему объединить и соединить это разные вещи немного
12 vmv
 
20.12.12
17:11
(0) я думал Мисс 1С бомбанула тему, мдя акелло проомахнулся, но стиль аналогичный
13 sidalexsandr
 
20.12.12
17:12
(0) ОБЪЕДИНИТЬ можно вместо ОБЪЕДИНИТЬ ВСЕ
14 Classic
 
20.12.12
17:12
не вижу в (0) двух таблиц
15 Lazio04
 
20.12.12
17:13
1ая
Объект Заказчик1 Сумма
Объект Заказчик2 Сумма
Объект Заказчик3 Сумма
Объект Заказчик4 Сумма
Объект Заказчик5 Сумма

2ая
Объект Подрядчик1
Объект Подрядчик2
16 vmv
 
20.12.12
17:13
(0) чувак - твоя задача будет успешно решена в пакетном запросе, хватит сопли жевать - пиши пакет
17 m-serg74
 
20.12.12
17:13
(15) что на (9) ?
18 Lazio04
 
20.12.12
17:14
(17) то что хотелось бы получить
19 Popkorm
 
20.12.12
17:14
(11) у вас там прям так много подрядчиков?!Или учет гастарбайтеров,тоже подрятчики
20 Classic
 
20.12.12
17:14
(15)
Нумеруешь обе таблицы, соединяешь по номерам
21 m-serg74
 
20.12.12
17:15
(18) ну тады только добавить поле чет/нечет в обе таблицы и по нему соединять
22 sapphire
 
20.12.12
17:16
(13) Да? И ЗАЧЕМ?
23 pessok
 
20.12.12
17:17
(18) как бы структура у двух таблиц должна быть одинаковая
24 Жан Пердежон
 
20.12.12
17:17
пронумеруй обе таблицы в пределах объекта и сделай левое соединение по объектам и номерам
25 Lazio04
 
20.12.12
17:18
(20) вот это уже вариант. А объединить даст я так понимаю:

Объект Заказчик1 Сумма
Объект Заказчик2 Сумма
Объект Заказчик3 Сумма
Объект Заказчик4 Сумма
Объект Заказчик5 Сумма
Объект Подрядчик1
Объект Подрядчик2

Тогда вопрос уже к методике при обходе такой выборки мы будем проверять на соответствию типа справочника Заказчик или Подрядчик ?
26 vmv
 
20.12.12
17:19
Формулируем задачу.

Господа, необходимо получить виртуальную таблицу данных для обработки, очтета и т.д., которая в первом приближении состоит из трех колонок

Закачзчик/Подрядчик/Сумма

но я такой стеснительный, что не скажу вам в из каких таблицах БД получать эти таблицы и при каких условиях тоже не скажу - потому что я умный, а вы дураки и ничего не шарите.
27 pessok
 
20.12.12
17:20
(25) про объединить правильно понимаешь. такой ответ тебе был дан исходя из поставленной задачи, которую ты пояснил только к (18). обходить уже можно как удобнее
28 Classic
 
20.12.12
17:20
ВЫБРАТЬ
    Т1.Объект,
    Т1.Заказчик,
    Т1.Сумма,
    КОЛИЧЕСТВО(КопияТ1.Объект) КАК Номер
ПОМЕСТИТЬ НомТ1
ИЗ Т1 КАК Т1
  ЛЕВОЕ СОЕДИНЕНИЕ Т1 КАК КопияТ1
  ПО Т1.Объект = КопияТ1.Объект
     И Т1.Заказчик >= Т2.Заказчик
СГРУППИРОВАТЬ ПО
    Т1.Объект,
    Т1.Заказчик,
    Т1.Сумма

;
ВЫБРАТЬ
    Т2.Объект,
    Т2.Подрядчик,
    КОЛИЧЕСТВО(КопияТ2.Объект) КАК Номер
ПОМЕСТИТЬ НомТ2
ИЗ Т2 КАК Т2
  ЛЕВОЕ СОЕДИНЕНИЕ Т2 КАК КопияТ2
  ПО Т2.Объект = КопияТ2.Объект
     И Т2.Подрядчик >= Т2.Подрядчик
СГРУППИРОВАТЬ ПО
    Т2.Объект,
    Т2.Подрядчик

;
ВЫБРАТЬ
    НомТ1.Объект,
    НомТ1.Заказчик,
    НомТ2.Подрядчик
ИЗ НомТ1 КАК НомТ1
  ЛЕВОЕ СОЕДИНЕНИЕ НомТ2 КАК НомТ2
  ПО НомТ1.Объект = НомТ2.Объект
     И НомТ1.Номер = НомТ2.Номер
29 Лефмихалыч
 
20.12.12
17:20
(15) соединение перемножит заказчиков и подрадчиков, если по одному объекту будет несколько заказчиков или/и подрядчиков. ЖИви с этим. В остальном - левое соединение (ну, или полное - по ситуации)
30 pessok
 
20.12.12
17:20
+(26) и вообще на мисте давно нет специалистов. одни тролли!
31 Lazio04
 
20.12.12
17:23
Ладно спасибо всем. Ответ я нашел. Точнее не совсем. Хотелось бы придумать в 1с что то типа дерева запросов ну для моего примера
                Группа Объектов
       Объект .... .... ...... Объект
  Заказчики Подрядчики    Заказчики Подрядчики
32 vmv
 
20.12.12
17:23
(28) вот (28) классический спец, научил тс писать пакеты, хотя врядли это возможно, мдя
33 vmv
 
20.12.12
17:24
(31) это уже давно придумано

ключевые слова

"пакет" + "итоги по"
34 Lazio04
 
20.12.12
17:28
(33) а пример есть у кого под рукой ?
Ошибка? Это не ошибка, это системная функция.