Имя: Пароль:
1C
1С v8
Как бэ по-оптимальней сделать?
0 samozvanec
 
14.11.12
16:11
Есть таблица, в ней все типы - строка. Нужно ее перекинуть в типизированную таблицу. Среди колонок - 8 ссылочных, друг с другом не особо пересекаются(реквизитами друг друга не являются). Примем вариант получать запросом каждую колонку в цикле обхода строк за максимальный бред. Как бы сделать красиво?
1 ХочуСказать
 
14.11.12
16:12
разовая операция?
делай как хочешь
лишь бы работало
2 Reset
 
14.11.12
16:12
в ней все типы - строка
Среди колонок - 8 ссылочных

вот это не понял
3 Reset
 
14.11.12
16:13
хотя вообще почти ничего не понял :)
устал к вечеру видимо
4 samozvanec
 
14.11.12
16:16
(2) таблица, в которую нужно перекинуть - типизированная. Другими словами надо считать строковые данные из одной таблицы в другую, потом буду обрабатывать

(1) операция не разовая, реестр будет составляться за год, каждый год
5 ssh2012
 
14.11.12
16:16
Если в обоих таблицах число и порядок строк совпдают, то ЗагрузитьКолонку(<Массив>, <Колонка>)
6 samozvanec
 
14.11.12
16:18
(5) вторая пустая.
7 samozvanec
 
14.11.12
16:19
мне надо со строковых данных получить нормальную, удобоваримую табличную часть документа
8 ssh2012
 
14.11.12
16:19
Посмотри метод, подходит он для твоей задачи или нет

ТаблицаЗначений (ValueTable)
ЗагрузитьКолонку (LoadColumn)
Синтаксис:
ЗагрузитьКолонку(<Массив>, <Колонка>)
Параметры:
<Массив> (обязательный)
Тип: Массив. Массив значений, который выступает в качестве источника данных для колонки.
<Колонка> (обязательный)
Тип: Число, Строка, КолонкаТаблицыЗначений. Колонка, в которую будут загружены значения из массива. В качестве значения параметра может выступать индекс колонки, имя колонки, сама колонка.
Описание:
Загружает колонку таблицы значений из массива значений.
Примечание:
Значения из массива загружаются в колонку в порядке индексов.
9 Reset
 
14.11.12
16:20
Все равно не понимаю. Почему не подходит цикл?
Для каждогоС Строка из Первая цикл
ЗаполнитьЗначенияСв-в(Вторая.Добавить(),Строка);
10 ssh2012
 
14.11.12
16:21
+(8) массив для загрузки можно получить ВыгрузитьКолонку(<Колонка>)
11 Reset
 
14.11.12
16:21
(8) Вторая пустая
12 ssh2012
 
14.11.12
16:22
(11) да, тогда это не подходит
13 samozvanec
 
14.11.12
16:22
(8) вот представь колонку:
Утюг
Вафли
Конфеты
Башмаки
Люстры

тип колонки - строка
надо перекинуть эту колонку в другую таблицу, но строковые данные заменить на ссылочные
14 Reset
 
14.11.12
16:22
А, я понял. В типизованной не строковые типы, а, в том числе, ссылочные, которые нужно получать из строковых, напр, поиском по реквизитам?
15 samozvanec
 
14.11.12
16:22
таких колонок в реестре 8, реестр составляется за год - хочу сократить время обработки
16 samozvanec
 
14.11.12
16:23
(14) именно так, речь идет о ссылочных типах
17 ssh2012
 
14.11.12
16:23
(15) имхо - изобретать не нужно ничего, делай в лоб, цикл
18 Reset
 
14.11.12
16:24
или (17) - запрос в цикле :) если разово то (1).

Или всю таблицу 1 в запрос и соединять с данными
19 samozvanec
 
14.11.12
16:25
(17) вероятность, что так и сделаю, велика. вот думаю, вдруг еще варианты есть.
20 samozvanec
 
14.11.12
16:26
(18) а вот и первый интересный вариант)
21 Лефмихалыч
 
14.11.12
16:26
(0) ты явно пытаешься нам что-то сказать...
22 samozvanec
 
14.11.12
16:28
(21) я явно пытаюсь у вас что-то узнать...
(18) насколько резво соединение по равенству строк?
23 ssh2012
 
14.11.12
16:28
(20) учти, чтобы таб поместить в запрос, колонки должны быть типизированы:) (указана длина строки)
24 samozvanec
 
14.11.12
16:29
(23) не самая большая проблема

так-то по ссылке получается тоже самое соединение по равенству строк... Не так ли?
25 Reset
 
14.11.12
16:32
(22) Если сравнивается строка, со, скажем, кодом справочника - очень резво. Если поле не индексировано, медленней, но все равно на порядки быстрее чем то же самое, но в каждой строке дергаться туда-сюда с сервера на клиент
26 Reset
 
14.11.12
16:32
кроме того, в запросе есть плюшка в виде оператора Подобно
27 samozvanec
 
14.11.12
16:33
(26) в условии связи нету...
28 Reset
 
14.11.12
16:33
Есть
29 Reset
 
14.11.12
16:34
или гоню по вечер? ща
30 ssh2012
 
14.11.12
16:34
(24) Идея была такая в (18) левое соединение .... по Номенклатура.Наименование = ТвояТаб.Колонка1
31 Reset
 
14.11.12
16:35
есть, не гоню
32 samozvanec
 
14.11.12
16:35
ну да, я понял. Идея отличная, минус пока один - заданная длина строки. А сокрЛП в запросе нет...
33 samozvanec
 
14.11.12
16:35
Как есть? я же только что смотрел
34 Reset
 
14.11.12
16:36
(33) можно использовать "произвольное"(или как там оно в конструкторе называется) выражение
35 samozvanec
 
14.11.12
16:38
оппа, это его из списка выбрать нельзя, а писать можно
36 samozvanec
 
14.11.12
16:39
(34) я думаю, на этом можно остановиться, спасибо большое!
37 Axel2009
 
14.11.12
16:43
(0) если в колонках в виде строки хранится ГУИД как ссылка на справочник, то зачем получать запросом какието данные?
получаешь ссылку по гуид и вот тебе уже ссылка в таблице значений
38 samozvanec
 
14.11.12
16:46
(37) не ГУИД, наименование
39 hhhh
 
14.11.12
17:28
(32) просто там указываешь переменная длина строки, а не фиксированная, и сокрлп не нужен
40 Fragster
 
гуру
14.11.12
17:32
Если там строками УИДы, то вот:


       Для СтрИсходная Из ТаблицаИсходная Цикл
           Стр = ТаблицаРезультат.Добавить();
           Стр.Колонка1 = XMLЗначение(ТипЗнч(Стр.Колонка1), СтрИсходная.Колонка1);
           Стр.Колонка2 = XMLЗначение(ТипЗнч(Стр.Колонка2), СтрИсходная.Колонка2);
           Стр.Колонка3 = XMLЗначение(ТипЗнч(Стр.Колонка3), СтрИсходная.Колонка3);
           Стр.Колонка4 = XMLЗначение(ТипЗнч(Стр.Колонка4), СтрИсходная.Колонка4);
       КонецЦикла;
41 Азазелло
 
14.11.12
17:41
(0) запросом уже предлагали?
42 Fragster
 
гуру
14.11.12
17:43
Для каждого, естесственно
43 Азазелло
 
14.11.12
17:44
поместить исх. таблицу во временну таблицу запроса, потом выборку по ней и левыми джойнами по наименованиям догнать до ссылок
44 samozvanec
 
15.11.12
10:41
(43) да да, на том и порешили

встал, кстати, еще один интересный вопрос. Как бы не описывать колонки в запросе?
45 samozvanec
 
15.11.12
12:16
(39) вам отдельное спасибо!