Имя: Пароль:
1C
1С v8
Объединение двух строк в одну
0 alexsandrinia
 
24.08.11
09:05
Программно создаю 2 запроса, у них есть один общий столбец. Как можно вывести 2 строки (по каждой из запросов)в одну, у которых имеется общий столбец?
1 Wobland
 
24.08.11
09:06
строки в запросах не складываются. всё остальное не понял. что значит "программно", что такое "общий", "столбец" уж ладно ;) и т.д.
2 alexsandrinia
 
24.08.11
09:08
(1) например, есть 2 таблицы
A B   B F
C D   G K
нужно, чтоб получилось A F
3 ДенисЧ
 
24.08.11
09:09
Таки соединение...
4 Дикообразко
 
24.08.11
09:09
сгруппировать/свернуть ?
5 alexsandrinia
 
24.08.11
09:11
ЗапросНУ = Новый Запрос;
   ЗапросНУ.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
                    |    СоответствиеСчетовБУиНУ.СчетБУ КАК СчетБУ_НУ,
                    |    СоответствиеСчетовБУиНУ.СчетНУ КАК СчетНУ_НУ,
                    |    НУ.Организация КАК ОрганизацияНУ,
                    |    НУ.СчетДтНУ КАК СчетДтНУ,
                    |    НУ.СчетКтНУ КАК СчетКтНУ,
                    |    НУ.ВидУчетаДтНУ КАК ВидУчетаДтНУ,
                    |    НУ.ВидУчетаКтНУ КАК ВидУчетаКтНУ,
                    |    НУ.СуммаНУ
                    |ИЗ
                    |    (ВЫБРАТЬ
                    |        ОтражениеЗарплатыВРеглУчете.Организация.Ссылка КАК Организация,
                    |        Налоговый.СчетДт КАК СчетДтНУ,
                    |        Налоговый.СчетКт КАК СчетКтНУ,
                    |        Налоговый.ВидУчетаДт КАК ВидУчетаДтНУ,
                    |        Налоговый.ВидУчетаКт КАК ВидУчетаКтНУ,
                    |        СУММА(Налоговый.Сумма) КАК СуммаНУ
                    |    ИЗ
                    |        РегистрБухгалтерии.Налоговый КАК Налоговый
                    |            ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтражениеЗарплатыВРеглУчете КАК ОтражениеЗарплатыВРеглУчете
                    |            ПО Налоговый.Регистратор = ОтражениеЗарплатыВРеглУчете.Ссылка
                    |    ГДЕ
                    |        ОтражениеЗарплатыВРеглУчете.Проведен = ИСТИНА
                    |        И ОтражениеЗарплатыВРеглУчете.ПериодРегистрации МЕЖДУ &НачалоПериода И &КонецПериода
                    |        И Налоговый.Период МЕЖДУ &НачалоПериода И &КонецПериода
                    |    
                    |    СГРУППИРОВАТЬ ПО
                    |        ОтражениеЗарплатыВРеглУчете.Организация.Ссылка,
                    |        Налоговый.ВидУчетаКт,
                    |        Налоговый.СчетКт,
                    |        Налоговый.ВидУчетаДт,
                    |        Налоговый.СчетДт) КАК НУ
                    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоответствиеСчетовБУиНУ КАК СоответствиеСчетовБУиНУ
                    |        ПО НУ.СчетДтНУ = СоответствиеСчетовБУиНУ.СчетНУ
                    |
                    |УПОРЯДОЧИТЬ ПО
                    |    ОрганизацияНУ,
                    |    СчетДтНУ.Код,
                    |    ВидУчетаДтНУ,
                    |    СчетКтНУ.Код,
                    |    ВидУчетаКтНУ";
                 
   ЗапросБУ = Новый Запрос;
   ЗапросБУ.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
                    |    СоответствиеСчетовБУиНУ.СчетБУ КАК СчетБУ_БУ,
                    |    СоответствиеСчетовБУиНУ.СчетНУ КАК СчетНУ_БУ,
                    |    БУ.СчетДтБУ КАК СчетДтБУ,
                    |    БУ.СчетКтБУ КАК СчетКтБУ,
                    |    БУ.СуммаБУ КАК СуммаБУ,
                    |    БУ.Организация КАК ОрганизацияБУ
                    |ИЗ
                    |    (ВЫБРАТЬ
                    |        Хозрасчетный.СчетДт КАК СчетДтБУ,
                    |        Хозрасчетный.СчетКт КАК СчетКтБУ,
                    |        СУММА(Хозрасчетный.Сумма) КАК СуммаБУ,
                    |        ОтражениеЗарплатыВРеглУчете.Организация.Ссылка КАК Организация
                    |    ИЗ
                    |        РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
                    |            ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтражениеЗарплатыВРеглУчете КАК ОтражениеЗарплатыВРеглУчете
                    |            ПО Хозрасчетный.Регистратор = ОтражениеЗарплатыВРеглУчете.Ссылка
                    |    ГДЕ
                    |        ОтражениеЗарплатыВРеглУчете.Проведен = ИСТИНА
                    |        И ОтражениеЗарплатыВРеглУчете.ПериодРегистрации МЕЖДУ &НачалоПериода И &КонецПериода
                    |        И Хозрасчетный.Период МЕЖДУ &НачалоПериода И &КонецПериода
                    |    
                    |    СГРУППИРОВАТЬ ПО
                    |        Хозрасчетный.СчетКт,
                    |        ОтражениеЗарплатыВРеглУчете.Организация.Ссылка,
                    |        Хозрасчетный.СчетДт) КАК БУ
                    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоответствиеСчетовБУиНУ КАК СоответствиеСчетовБУиНУ
                    |        ПО БУ.СчетДтБУ = СоответствиеСчетовБУиНУ.СчетБУ
                    |
                    |УПОРЯДОЧИТЬ ПО
                    |    ОрганизацияБУ,
                    |    БУ.СчетДтБУ.Код,
                    |    БУ.СчетКтБУ.Код";
   
                   



вот код
6 ЛЮС
 
24.08.11
09:17
Формируешь ОДИН запрос из двух подзапросов, они у тебя уже есть. Делаешь внутреннее соединение (по организации и СчетНУ_БУ), и получаешь нужные поля из общего запроса.
7 alexsandrinia
 
24.08.11
09:18
сейчас попробую, заранее спасибо!
8 alexsandrinia
 
24.08.11
09:25
(6) Подзапросы сделать как виртуальные таблицы?
9 ЛЮС
 
24.08.11
09:29
(8) Можно но не нужно.
В приведенных примерах (...) КАК БУ - это и есть подзапрос. Дальше по аналогии.
10 alexsandrinia
 
24.08.11
09:30
(9) как вложенные запросы делать,значит?
11 alexsandrinia
 
24.08.11
09:43
(8) почему нельзя как виртуальные таблицы делать эти 2 подзапроса?
12 ЛЮС
 
24.08.11
09:48
(11) никто не говорит, что нельзя. Но целесообразность? Может эти данные из ВТ будут где-то еще использоваться?
13 alexsandrinia
 
24.08.11
09:53
(12) нет, нигде не будут больше использоваться. сделал, но почему то получается вот как:
08.03    69.11       08.03    69.11
08.03    69.11       08.03    70
08.03    70       08.03    69.11
08.03    70       08.03    70

вместо этого:

08.03    69.11       08.03    69.11
08.03    70       08.03    70
и так по оставшимся счетам...
14 kuza2000
 
24.08.11
09:59
Получилось пересечение, где-то условие соединения подзапросов не указано :)
15 ЛЮС
 
24.08.11
10:00
Значит надо еще добавлять условий при соединении на счета.
16 kuza2000
 
24.08.11
10:01
А вообще, подзапросы сложные, лучше результат сохранить во временные таблицы, и объединять уже их. Код будет проще. И вероятность сюрпризов с производительностью впоследствии меньше.
17 ЛЮС
 
24.08.11
10:17
(16) При разбиении на ВТ Код становится проще и структурированнее, но при этом больше и сложнее для восприятия в целом. И какие же сюрпризы ожидаются для сабжа? Только добавятся операции по загрузке/выгрузке в память.
18 alexsandrinia
 
24.08.11
10:41
возвращаюсь к (12), немного разъяснений. есть:
Табл.1 и  Табл.2
а б       а с
а в       а д
нужно соединить эти таблицы так, чтобы было:
б с
в д

но пока получается только
а б   а  с
а б   а  д
а в   а  с
а в   а  д
19 acsent
 
24.08.11
10:43
(18) По какому признаку строка из 1 таблицы соответствует строке из 2? Но номеру строки?
20 Ненавижу 1С
 
гуру
24.08.11
10:44
(18) почему так?

б с
в д

а не

в с
б д

вопрос?
21 alexsandrinia
 
24.08.11
10:46
(19) скорее всего да, по номеру строки
22 ЛЮС
 
24.08.11
10:52
(21) скорее всего - очень многообещающе.
А если количество строк различно? А если значения будут повторяться во 2/4 колонке?
23 alexsandrinia
 
24.08.11
10:54
(22) я и не знаю, как, надо придумать. дали просто как должно выглядеть в итоге и всё...
24 alexsandrinia
 
24.08.11
11:25
(15) больше вроде нет никаких условий, остальное всё одинаковое (имея ввиду данные)
25 alexsandrinia
 
24.08.11
11:38
ну что? у кого есть какие варианты?
26 ЛЮС
 
24.08.11
12:01
(22) Прежде чем решать КАК делать запрос, нужно четко определить ЧТО нужно увидеть.

Можешь копать в сторону нумерации строк в запросе. Когда пронумеруешь - можно будет по ним делать соединение. А вот как их пронумеровать - задача не тривиальная, но и не зубодробительная.
Хинт: используй ВТ, соединение таблицы с собой же, сравнение больше/меньше по сортируемому полю и группировки.
27 alexsandrinia
 
24.08.11
12:49
(26) мне нужно, чтоб выводились счета Дт и Кт по БУ и НУ в одной таблице