|
есть ли способ получения массива из табличного документа без обхода каждой ячейки? | ☑ | ||
---|---|---|---|---|
0
Мимохожий Однако
04.10.19
✎
10:36
|
От одного из моих клиентов поступило предложение сделать чтение табличного документа более быстрым. Он предположил, что обход по ячейкам областей слишком медленный. Поэтому и сабж.
|
|||
1
Asmody
04.10.19
✎
10:39
|
[Он предположил] - я предположил, что он тупой. Но что это меняет?
|
|||
2
Мимохожий Однако
04.10.19
✎
10:41
|
(1) Вывод: Обходи ячейки и не занимайся поиском других вариантов. Их нет.
|
|||
3
ам794123
04.10.19
✎
10:44
|
(0) сохрани его в эксел, а оттуда прочти данные запросом
|
|||
4
xenos
04.10.19
✎
10:45
|
Открой типовую 1С обработку по работе с табличными документами. Например ЗагрузкаИзТаблицы или как-то так.
|
|||
5
Мимохожий Однако
04.10.19
✎
10:57
|
(3) Пример кода скинь
(4) Там такой же обход по строкам и ячейкам ... Проблемы получить табличный документ нет |
|||
6
ам794123
04.10.19
✎
11:00
|
||||
7
Cyberhawk
04.10.19
✎
11:02
|
Через построитель конечно же читается
|
|||
8
Cyberhawk
04.10.19
✎
11:02
|
Дарю:
Функция ПреобразоватьТабличныйДокументВТаблицуЗначений(Знач ТабДок) Экспорт ПоследняяСтрока = ТабДок.ВысотаТаблицы; ПоследняяКолонка = ТабДок.ШиринаТаблицы; ОбластьЯчеек = ТабДок.Область(1, 1, ПоследняяСтрока, ПоследняяКолонка); ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластьЯчеек); ПостроительОтчета = Новый ПостроительОтчета; ПостроительОтчета.ИсточникДанных = ИсточникДанных; ПостроительОтчета.Выполнить(); ТЗ = ПостроительОтчета.Результат.Выгрузить(); Возврат ТЗ; КонецФункции |
|||
9
Мимохожий Однако
04.10.19
✎
11:11
|
(8) Это у меня есть спасибо. Как я понимаю. Сначала в ТЗ, а потом из ТЗ В массив. Но при этом всё равно будет обход по каждой строке и колонке ТЗ. Те же яйца.
|
|||
10
Мимохожий Однако
04.10.19
✎
11:13
|
(6) Под запросом подразумеваешь COMОбъект("ADODB.Connection")?
|
|||
11
dka80
04.10.19
✎
11:14
|
(9) тз.выгрузитьколонку возвращает массив
|
|||
12
Ёпрст
04.10.19
✎
11:15
|
(9) а зачем из тз в массив ?
|
|||
13
Мимохожий Однако
04.10.19
✎
11:15
|
(11) Это пока самый близкий вариант к сабжу.
|
|||
14
dka80
04.10.19
✎
11:16
|
ну или, если все колонки нужны в массиве, то тз в запрос
Выбрать колонка1 из тз объединить Выбрать колонка2 из тз .... |
|||
15
Ёпрст
04.10.19
✎
11:17
|
Массив нахрена нужен ? В запросе в качестве фильтра ? Так пихай туда тз целиком, а через область, можно указать 1 колонку, будет тз с одной колонкой
|
|||
16
polosov
04.10.19
✎
11:19
|
(0) Там может не в этом дело?
Может там после чтения каждой ячейки запрос к базе выполняется? |
|||
17
Мимохожий Однако
04.10.19
✎
11:23
|
(15) Массив надо передать с сервера на клиент. ТЗ не передать.
(16) нет. Проверял |
|||
18
Мимохожий Однако
04.10.19
✎
11:39
|
(11) Только выгружается не структура колонок, а одна колонка)
|
|||
19
Йохохо
04.10.19
✎
12:01
|
(18) а так? ТЗ.НайтиСтроки(Новый Структура("Номенклатура", ""))
|
|||
20
Мимохожий Однако
04.10.19
✎
15:33
|
(19) Родился вот такой код:
... ТЗ.Колонки.Добавить("ккк"); ОтборИзТЗ= Новый Структура("ккк",Неопределено); МассивДанных=ТЗ.НайтиСтроки(ОтборИзТЗ); |
|||
21
Мимохожий Однако
04.10.19
✎
16:17
|
В продолжение...
Массив я получил, но он не передается между сервером и клиентом, т.к. внутри строки таблицы значений. ... Буду переносить код из модуля формы в модуль обработки, чтобы не гонять таблицу значений. |
|||
22
palsergeich
04.10.19
✎
23:37
|
Обход ячеек табдока - это очень быстрая операция.
Ты ещё уборщицу послушай и поставь кактус перед монитором. Воткни замер производительности и посмотри что же на самом деле является виновником. |
|||
23
palsergeich
04.10.19
✎
23:39
|
И это, посмотри сколько раз ты за обход табдока на сервер лезешь.
Что то мне говорит что проблема не в табдоке, а в прокладке между креслом и монитором. 100к ячеек табдока с данными обходится менее чем за секунду. |
|||
24
Мимохожий Однако
05.10.19
✎
09:55
|
(22) Спасибо. Кактус помогает )
Сделал замеры. Проблема долгой загрузки оказалась не в способе чтения табличного документа,а в последующем запросе после него, который не связан непосредственно с чтением. (23) Да.Дело в прокладке. Но я её не могу поменять. ... Плюс во все истории в том, что приобрел новые знания, навыки и устранил сопутствующую ошибку. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |