Имя: Пароль:
1C
1С v8
Как объединить 2 таблицы значений?
, ,
0 mirrr
 
03.09.12
16:37
Есть 2 ТЗ, у которых есть колонки: "номенклатура" и "сумма". Как из них сделать одну ТЗ, свернутую по номенклатуре?
1 Boleev
 
03.09.12
16:38
да много вариантов
2 xenos
 
03.09.12
16:38
Отправить обе в запрос а там объединить
3 Heckfy
 
03.09.12
16:38
Запрос-Внутреннее соединение-выгрузить-свернуть.
4 Maxus43
 
03.09.12
16:39
(3) и чо будет?
5 Maxus43
 
03.09.12
16:39
(2) +1
6 ДенисЧ
 
03.09.12
16:39
тзНовая = тз1.Скопировать();
Для Каждого стр из тз2 Цикл
 ЗАполнитьЗначенияСвойств(тзНовая.Добавить(), стр);
КонецЦикла;
7 mirrr
 
03.09.12
16:41
(2), (3) перед использованием в запросе ТЗ надо проиндексировать?
8 unregistered
 
03.09.12
16:41
(0) Из общего модуля типовой бухни:


// Добавляет в таблицу значений строки из другой таблицы значений и
// в них значения колонок с совпадающими наименованиями.
// Параметры:
//  ТаблицаИсточник - таблица значений, откуда берутся значения.
//  ТаблицаПриемник - таблица значений, куда добавляются строки.
Процедура ЗагрузитьВТаблицуЗначений(ТаблицаИсточник, ТаблицаПриемник) Экспорт
  Для каждого СтрокаТаблицыИсточника Из ТаблицаИсточник Цикл
    СтрокаТаблицыПриемника = ТаблицаПриемник.Добавить();
    ЗаполнитьЗначенияСвойств(СтрокаТаблицыПриемника, СтрокаТаблицыИсточника);
  КонецЦикла;
КонецПроцедуры // ЗагрузитьВТаблицуЗначений()
9 Boleev
 
03.09.12
16:42
тупые одинэсники
10 unregistered
 
03.09.12
16:42
+ к (8): потом естественно ТвояТЗ.Свернуть("Номенклатура", "Сумма")
11 Reset
 
03.09.12
16:46
(6) Можно выпендрюсь? Так в 50% случаев будет немного быстрее :P
тзНовая=?(тз1.Количество()>тз1.Количество(),тз1,тз2).Скопировать();
Для Каждого стр из ?(тз1.Количество()>тз1.Количество(),тз1,тз2) Цикл
 ЗАполнитьЗначенияСвойств(тзНовая.Добавить(), стр);
КонецЦикла;
12 Reset
 
03.09.12
16:47
выпендрился блин
"тз1.Количество()>тз1.Количество()" --> "тз1.Количество()>тз2.Количество(),"
13 Reset
 
03.09.12
16:47
копипаста зло
14 fisher
 
03.09.12
16:48
(7) Не надо. Но лучше делай как в (8). Это более оптимальный в большинстве случаев вариант.
15 mirrr
 
03.09.12
16:51
(14) имел ввиду, что перед использованием в запросе поля ТЗ должны быть типизированы.
16 Maxus43
 
03.09.12
16:52
(15) да
17 palpetrovich
 
03.09.12
16:59
(11) а вот интересно, в строке "Для Каждого стр из ?(тз1.Количество()>тз1.Количество(),тз1,тз2) Цикл" условие будет вычисляться постоянно или один раз? :)
18 Reset
 
03.09.12
16:59
(17) Один
19 palpetrovich
 
03.09.12
17:04
(18) проверял? ...вот к примеру, если-б я выполнял этот цикл "вруную", я-б вычислял постоянно ...я к чему это, я (может ошибочно) предпочитаю конструкцию  
Количество = ?(тз1.Количество()>тз1.Количество(),тз1,тз2)
Для Каждого стр из Количество Цикл
20 Reset
 
03.09.12
17:12
(19) Да, многократно.
(19) Нет, не ошибочно. Тот или иной вариант может быть читабельнее в разных случаях.

еще 1 ошибку нашел в (11). Вот так вроде работоспособно [не проверял :D]
тзНовая=?(тз1.Количество()>тз2.Количество(),тз1,тз2).Скопировать();
Для Каждого стр из ?(тз1.Количество()>тз2.Количество(),тз2,тз1) Цикл
 ЗАполнитьЗначенияСвойств(тзНовая.Добавить(), стр);
КонецЦикла;
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.