![]() |
![]() |
|
Копировать строки таблицы значений | ☑ | ||
---|---|---|---|---|
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) Скорее всего на сервере. Помещать-то куда-то надо.
Но при большом количестве строк с точки зрения быстродействия это оправдано. При сотнях тысяч строк - запрос в разы быстрее. При сотнях строк - медленнее. В любом случае, замер производительности рулит. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |