Имя: Пароль:
1C
 
Копировать строки таблицы значений
0 Полата
 
14.12.09
21:01
Добрый день.
Подскажите, можно ли скопировать строки таблицы значений в другую НЕПУСТУЮ таблицу значений без перебора всех колонок?

Заранее балгодарю.
1 Волшебник
 
14.12.09
21:06
Да
2 Полата
 
14.12.09
21:09
Подскажите, пожалуйста, каким образом.
3 Икогнито
 
14.12.09
21:16
1.добавить нужные строки в массив
2. Скопировать необходимые колонки из таблицы источника в новую таблицу
3. Перебирая массив использовать функцию ЗаполнитьЗначения()
4 Икогнито
 
14.12.09
21:18
(3) п. 2 можно опустить, если в таблице приемнике существуют одноименные, совпадающие по типам колонки.
5 Икогнито
 
14.12.09
21:19
при желании и п.1 тоже можно пропустить
6 ice777
 
14.12.09
21:21
(3) п.3 самый короткий и разумный путь не писать много кода. И без промежуточных таблиц, конечно.
7 Полата
 
14.12.09
21:22
ЗаполнитьЗначения(<Значение>, <Колонки>) - заполняет все строки таблицы значений указанным значением.  Мне не надо заполнять имеющиеся строки таблицы источника какими-либо значениями... Или не догоняю чего-то?
8 Икогнито
 
14.12.09
21:24
Глобальный контекст
ЗаполнитьЗначенияСвойств (FillPropertyValues)
Синтаксис:
ЗаполнитьЗначенияСвойств(<Приемник>, <Источник>, <Список свойств>, <Исключая свойства>)
Параметры:
<Приемник> (обязательный)
Тип: Произвольный. Значение, чьи свойства будут заполнены значениями соответствующих свойств <Источника>.
<Источник> (обязательный)
Тип: Произвольный. Значения свойств данного объекта будут установлены в соответствующие свойства <Приемника>.
<Список свойств> (необязательный)
Тип: Строка. Список имен свойств, разделенный запятыми, которые необходимо заполнить.
<Исключая свойства> (необязательный)
Тип: Строка. Список имен свойств, разделенный запятыми, которые необходимо исключить из заполнения.
Описание:
Копирует значения свойств <Источника> в свойства <Приемника>. Сопоставление производится по именам свойств.
Если указаны копируемые свойства, то в заполнении участвуют только они, параметр <Исключая свойства> игнорируется.
В противном случае, если указан параметр <Исключая свойства>, то свойства перечисленные в нем, исключаются из обработки.
9 Murzz
 
14.12.09
21:26
запросом с использованием временных таблиц делайте. Довольно быстро работает
10 Murzz
 
14.12.09
21:27
(9) таблицы значений должны быть типизированными
11 Икогнито
 
14.12.09
21:29
ЗаполнитьЗначенияСвойств(СтрокаТЗПриемник, СтрокаТЗИсточник)
12 Икогнито
 
14.12.09
21:29
(9) имхо, гемор несусветный
13 Шёпот теней
 
15.12.09
08:47
ОбщийМодуль - ОбщегоНазначения :

// Добавляет в таблицу значений строки из другой таблицы значений и
// в них значения колонок с совпадающими наименованиями.
//
Процедура ЗагрузитьВТаблицуЗначений(ТаблицаИсточник, ТаблицаПриемник) Экспорт

... возможно это то, что Вы ищите ...

... там есть и :        
ЗаполнитьЗначенияСвойств(СтрокаТаблицыПриемника, СтрокаТаблицыИсточника);
которую вам советуют в (11) ...

... вот ...
14 DUDE
 
15.12.09
09:01
(11) :) Не все работают с типовыми конфами чтобы вот так по ссылке найти процедуру .
15 Рэйв
 
15.12.09
09:03
(0)А чем ТЗ2=ТЗ1.Скопировать() не устраивает?
16 Шёпот теней
 
15.12.09
09:38
ТЗ2=ТЗ1.Скопировать() даст полную копию ТЗ а

1. ЗаполнитьЗначенияСвойств(СтрокаТаблицыПриемника, СтрокаТаблицыИсточника); в цикле
или
2. ЗагрузитьВТаблицуЗначений(ТаблицаИсточник, ТаблицаПриемник)

присоединяет одну таблицу к другой ...

... вот ...
17 Рэйв
 
15.12.09
10:07
(16)Не углядел, что в непустую:)
Тогда можно так гдето:

//--------------
Запрос=новый Запрос;
Запрос.МенеджерВременныхТаблиц= Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("т1",ТЗ1);
Запрос.УстановитьПараметр("т2",ТЗ2);
Запрос.Текст="Выбрать Т1.Кол  Поместить  тРез1
| Из &т1 КАК Т1 ";
Запрос.Выполнить();
Запрос.Текст="
|Выбрать Т2.Кол
|Поместить  тРез2
|Из &т2 КАК Т2 ";
Запрос.Выполнить();
Запрос.Текст="Выбрать * Из тРез1 объединить Выбрать * Из тРез2";
тРез=Запрос.Выполнить().Выгрузить();
//---------
только у ТЗ естественно должны колонки совпадать и быть типизированными
18 73
 
15.12.09
10:11
(12) Спорное утверждение.
Если добавить надо большое количество строк - наиболее разумно использовать запрос.

   Запрос = Новый Запрос("
   |ВЫБРАТЬ
   |    ТЗ1.*
   |ПОМЕСТИТЬ ТЗ1
   |ИЗ
   |    &ТЗ1 КАК ТЗ1
   |;
   |
   |ВЫБРАТЬ
   |    ТЗ2.*
   |ПОМЕСТИТЬ ТЗ2
   |ИЗ
   |    &ТЗ2 КАК ТЗ2
   |;
   |//далее делай что хошь с этими ТЗ
   |Выбрать *
   |Из ТЗ1
   |Объединить Все
   |Выбрать *
   |Из ТЗ2
   |");

   Запрос.УстановитьПараметр("ТЗ1", ТЗ1);
   Запрос.УстановитьПараметр("ТЗ2", ТЗ2);
19 TheNewOne
 
15.12.09
10:21
(18) А в клиент-серверном варианте такой запрос не будет ли выполняться на сервере?.
20 Рэйв
 
15.12.09
10:26
(19)Вот таких тонкостей фик его знает
21 73
 
15.12.09
10:31
(19) Скорее всего на сервере. Помещать-то куда-то надо.
Но при большом количестве строк с точки зрения быстродействия это оправдано.
При сотнях тысяч строк - запрос в разы быстрее. При сотнях строк - медленнее.
В любом случае, замер производительности рулит.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший