Имя: Пароль:
1C
1С v8
Полное соединение таблиц в СКД
,
0 extrim-style
 
30.01.12
12:34
Отчет на скд. Есть 2 таблицы. Необходимо их полное соединение по одному из полей. Добавил их как источники данных. А теперь как связать? Через НаборДанных-Объединение?
1 Wobland
 
30.01.12
12:36
объединение объединяет, соединение соединяет. через внешний источник, может?
2 Wobland
 
30.01.12
12:36
или всё в один запрос запихать
3 extrim-style
 
30.01.12
12:39
(1) Нужно полное соединение. То есть наборами данных, это я неправильно?
4 extrim-style
 
30.01.12
12:40
Может проще это полное соединение в коде сделать через запрос? А результат в СКД уже передавать? Просто подумалось, что в СКД должно быть проще.
5 Wobland
 
30.01.12
12:41
>в коде сделать через запрос
можно и не в коде...
6 extrim-style
 
30.01.12
12:43
(5) а как мне таблицы тогда в СКД передавать?
7 extrim-style
 
30.01.12
12:45
а всё понял, кажись
8 extrim-style
 
30.01.12
12:59
добавляю таблицы как источники данных, а потом выбираю в запросе их во временные таблицы, так?
9 extrim-style
 
30.01.12
14:13
(5) а как в СКД это сделать?
10 extrim-style
 
30.01.12
14:26
Выбрал 2 таблицы в скд как 2 источника данных. Как теперь их обработать в запросе СКД?
11 Wobland
 
30.01.12
14:30
я предлагал один источник со своим соединением забабашить
12 extrim-style
 
30.01.12
14:32
(11) я имел ввиду не 2 источника, а 2 набора, конечно
13 Wobland
 
30.01.12
14:33
(12) значит, я один набор предлагал ;)
14 extrim-style
 
30.01.12
14:34
(13) как это? как передать 2 таблицы в один набор?
15 Wobland
 
30.01.12
14:35
(14) я ж не вижу, что у тебя там. один запрос сделать можешь?
16 extrim-style
 
30.01.12
14:39
ну я начал делать как в (8), 2 таблицы как 2 набора данных и 3-й набор запрос, в котором выбираю эти таблицы во временные
17 extrim-style
 
30.01.12
14:41
+(16) тока не получается так
18 1nf
 
30.01.12
14:41
Автор, а чем тебя не устраивает набор данных - запрос, и в нем соединение как тебе угодно любых таблиц?
19 extrim-style
 
30.01.12
14:42
(15) да что там смотреть. В коде есть 2 таблицы. Я их передаю в скд, как 2 набора данных. Дальше - как сделать их полное соединение?
20 extrim-style
 
30.01.12
14:42
(18) как таблицы передать в скд? как наборы данных?
21 1nf
 
30.01.12
14:47
таблицы откуда берешь?
22 extrim-style
 
30.01.12
14:52
(21) из кода. сложный алгоритм
23 extrim-style
 
30.01.12
14:53
+(22) это я к тому, что нельзя их запросом сразу
24 Wobland
 
30.01.12
14:58
выбрать * из тз1 полное соединение тз2? будет одна таблица
25 extrim-style
 
30.01.12
15:02
Вот так делал:

ВЫБРАТЬ
   ТЗ.СтатьяЗатрат КАК СтатьяЗатрат,
   ТЗ.Количество КАК Количество,
   ТЗ.Сумма КАК Сумма,
   ТЗ.ЦентрЗатрат КАК ЦентрЗатрат,
   ТЗ.Контрагент КАК Контрагент
ПОМЕСТИТЬ ТаблТз
ИЗ
   СписокСтатей КАК ТЗ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТЗ2.СтатьяЗатрат КАК СтатьяЗатрат,
   ТЗ2.Количество КАК Количество,
   ТЗ2.Сумма КАК Сумма,
   ТЗ2.ЦентрЗатрат КАК ЦентрЗатрат,
   ТЗ2.Контрагент КАК Контрагент
ПОМЕСТИТЬ ТаблТз2
ИЗ
   СписокСтатей2 КАК ТЗ2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТаблТз.СтатьяЗатрат,
   ТаблТз.Количество,
   ТаблТз.Сумма,
   ТаблТз.ЦентрЗатрат,
   ТаблТз.Контрагент,
   ТаблТз2.СтатьяЗатрат КАК СтатьяЗатрат2,
   ТаблТз2.Количество КАК Количество2,
   ТаблТз2.Сумма КАК Сумма2,
   ТаблТз2.ЦентрЗатрат КАК ЦентрЗатрат2,
   ТаблТз2.Контрагент КАК Контрагент2
ПОМЕСТИТЬ СоединениеСтатей
ИЗ
   ТаблТз КАК ТаблТз
       ПОЛНОЕ СОЕДИНЕНИЕ ТаблТз2 КАК ТаблТз2
       ПО ТаблТз.СтатьяЗатрат = ТаблТз2.СтатьяЗатрат
;

Где СписокСтатей и СписокСтатей2 - имя объекта, содержащего данные, для каждого набора данных. Ругается - "{(9, 2)}: Таблица не найдена "СписокСтатей"
<<?>>СписокСтатей КАК ТЗ". И непосредственно к НаборуДанных.ЛюбоеПоле не могу обратиться.
26 extrim-style
 
30.01.12
15:15
ЧЯДНТ?
27 extrim-style
 
30.01.12
15:21
Может таблицу в качестве параметра надо передавать?
28 extrim-style
 
30.01.12
15:54
Сделал (25) просто в коде, а не в СКД. Пишет "Ошибка при вызове метода контекста (Выполнить): {(2, 2)}: Тип не может быть выбран в запросе
<<?>>ТЗ.СтатьяЗатрат КАК СтатьяЗатрат, ТЗСтатей = Запрос.Выполнить().Выгрузить();"
29 extrim-style
 
30.01.12
16:12
Хелп!
30 extrim-style
 
30.01.12
16:27
Простой вопрос. Подскажите, как в общем случае сделать в СКД полное соединение 2 таблиц, взятых из кода?
31 extrim-style
 
30.01.12
16:35
Помогите кто-нибудь. Вопрос вроде простой...
32 mozzga
 
30.01.12
16:39
первые два запроса делай с объединением и кадай в ВТ, а потом ВТ вяжи
33 extrim-style
 
30.01.12
16:41
(32) всмысле сделать объединение из 2-х НаборовДанных-таблиц? А потом ВТ из него? Правильно я понял?
34 extrim-style
 
30.01.12
16:43
+(33) а зачем мне их объединять?
35 viktor_vv
 
30.01.12
16:45
(28) Колонки таблицы значений типизированные должны быть.
36 extrim-style
 
30.01.12
17:01
(35) упс. действительно типизация потерялась) спс
а как в скд сделать полное соединение 2-х таблиц из кода не подскажешь?
37 viktor_vv
 
30.01.12
17:08
Насчет полного не знаю. Но курить в сторону
Набор данных - Объект. Потом объединение наборов данных, хотя оно скорее на левое соединение смахивает.
38 fisher
 
30.01.12
17:20
(0) Источники в СКД только ЛЕВЫМ соединением соединяются (неявно). Т.е. в разные наборы данных ты их зря загружаешь. Проще всего отработать эмуляцию полного соединения таблиц в коде, а результирующую таблицу уже в СКД загружать для вывода.
39 fisher
 
30.01.12
17:22
(38) + Или загрузить обе таблицы во временные, сделать полное соединение запросом, получить результат в таблицу и уже её грузить в СКД.
40 extrim-style
 
30.01.12
18:38
(38) 2 разные таблицы можно загрузить только в 2 разных набора данных. Да, объединение - только левое (или внутреннее).
Чем проще? - если в (39) по сути тоже самое только в скд. Если тоже самое, то лучше бы это в СКД сделать.
(39) что-то не воткну. вот я, допустим, загрузил одну таблицу в НаборДанных1. Имя объекта, содержащего данные - СтатьиЗатрат. НаборДанных2 - запрос. Как мне в нем обращаться к загруженной таблице? Так, как в (25) не получается. У Хрусталевой не нашел. В описаниях 1С вапще ниочем.
41 Wobland
 
30.01.12
18:43
(40) я тут многое пропустил, похоже, но (38) - это о том, что я имел в виду изначально.
можешь же в СКД грузить одну-единственную ТЗ? вот и сделай эту ТЗ результатом полного соединения
42 extrim-style
 
30.01.12
18:54
(41) ну а непосредственно в СКД что полное соединение нельзя реализовать? Я загрузил таблицу в набор. Что мне теперь из неё только поля можно выбрать? А обращаться из другого набора нельзя к ней? Так как в (25)?
43 Wobland
 
30.01.12
18:59
(42) отвечу на первый вопрос. СКД умеет только слева. по природе своей
44 extrim-style
 
30.01.12
19:04
(43) а как же ПОЛНОЕ СОЕДИНЕНИЕ в запросе?
45 Wobland
 
30.01.12
19:07
(44) умеет только левое со своими наборам данных. всю ветку пытаюсь объяснить тебе, что засунь ты своё соединение в запрос и отдай СКД. спасибо фишеру, думал, я сам не понимаю чего-то.
46 shuhard
 
30.01.12
19:09
(44) в запросе с полным соединением всё ОК
47 extrim-style
 
30.01.12
19:11
(46) ну вот, а как мне к загруженной таблице обращаться через запрос (из другого набора данных)?
48 shuhard
 
30.01.12
19:15
(47) см (45)
49 fisher
 
30.01.12
19:50
(47) Никак. Запросы - это одно. Они почти один к одному СУБД выполняются. А соединение наборов данных в СКД - это уже другое. Это уже личное шаманство СКД с результатирующими данными наборов. Поэтому прямые параллели по функционалу проводить нельзя.
50 extrim-style
 
30.01.12
20:08
(49) жаль. На всякий случай прошелся еще по курсу скд от spec8 - всё так.
Значит остаётся только соединять в коде, а потом отправлять в СКД.
Всем спасибо за помощь!
51 Wobland
 
30.01.12
20:30
(50) алилуйя! не поленился просмотреть ветку и поискать (2)
52 extrim-style
 
30.01.12
21:29
(51) =)