Имя: Пароль:
1C
1С v8
Обход ячеек табличного документа или таблицы значений
0 Евгений Терехов
 
06.10.14
12:35
Как будет быстрее: обходить каждую ячейку табличного документа или же преобразовать ТД в таблицу значений и обходить ячейки таблицы значений?
2 Smallrat
 
06.10.14
12:45
(1) Обходом ячеек наверное )
3 Евгений Терехов
 
06.10.14
12:50
(1) Обходом каждой ячейки ТД запись в ячейку ТЗ))
Но без записи.

Вообщем задача состоит в редактировании табличного документа по определенным правилам.
Функция по которой редактируется значение в ячейке в разработке.
Но отредактированное значение записывается в текущую ячейку ТД (или ТЗ). Результат выводится в ТЗ.

Так вот вопрос именно в скорости записи: в ячейку ТД или ТЗ.
4 Classic
 
06.10.14
12:51
Один раз обходить надо?
5 Евгений Терехов
 
06.10.14
12:52
(3) Блин, немного бред конечно)
Вообщем преобразовывать ТД в ТЗ все равно прийдется, вот только делать это до или после редактирования текста в ячейках?
6 Евгений Терехов
 
06.10.14
12:53
(4) Получается что каждую ячейку нужно обходить 1 раз при преобразовании ТД в ТЗ и несколько раз в процессе редактирования.
7 Евгений Терехов
 
06.10.14
13:03
Ладно, буду экспериментировать.
8 hhhh
 
06.10.14
13:03
(5) а ТД откуда взялся? Если из запроса, то имеет смысл сразу результат запроса выгрузить в ТЗ.
9 Евгений Терехов
 
06.10.14
13:05
(8) ТД копируем из экселя или другого табличного документа.
ТД - первоначальные данные которые нужно отредактировать.
10 Euguln
 
06.10.14
13:05
А может проще загнать в структуру, ключ - адрес ячейки.
11 Галахад
 
гуру
06.10.14
13:05
(9) Ну так и читайте в таблицу.
12 Евгений Терехов
 
06.10.14
13:11
(10) Редактирование происходит по строкам.
Делать структуру строк со вложенными структурами ячеек?
Но результат все равно нужен в ТЗ.
(11) Вы имеете ввиду ТЗ? На форме будет ПолеТабличногоДокумента, в которое пользователь вставляет начальную таблицу. В ТЗ таблицу не вставишь.
13 Euguln
 
06.10.14
13:13
(12) И что, кто мешает обходить структуру по ключу "R"+i+"С"+j
14 Repey
 
06.10.14
13:13
Тут вон МихаилМ чего показал:
таблица в формате mxl
15 Евгений Терехов
 
06.10.14
13:20
(14) Ого, не знал что так можно, сейчас попробую.
16 Евгений Терехов
 
06.10.14
13:27
(14) Огромное спасибо за ссылку на тему, и огромное спасибо МихаилМ за способ преобразования ТД в ТЗ.

Но все же остается вопрос в скорости записи значений в ячейки: ТД или ТЗ?
17 МихаилМ
 
06.10.14
13:27
(14)
ТАМ ОШИБКА
этот алгоритм медленней обычного добавления строк
хотя фокус интересный получился
ошибка из-за тестирования под отладчиком.
18 Евгений Терехов
 
06.10.14
13:31
(17) Почему же медленней?
Только что кинул в ИсточникДанных ТД 5000 строк - результат меньше секунды, почти мгновенно.
Обход ячеек занимает ~1 секунда на 1000...1500 строк (на моем железе)
19 Евгений Терехов
 
06.10.14
13:40
(18) +ТД >100 000 строк на 12 колонок: 3 секунды, обход ячеек около 1,5 минуты.
20 МихаилМ
 
06.10.14
13:43
+(17)
извиняюсь

это алгоритм генерации пустой  ТЗ

он медленней  добавить() в 2 раза.

(18)
возможно Вы делаете замеры в режиме отладки.
21 Евгений Терехов
 
06.10.14
13:49
(20) Никаких замеров не делал, просто в режиме предприятия запускал, так ваш алгоритм очень хорош для преобразования больших ТД в ТЗ.
Не обращал внимания на то, что построитель запроса такое может.

А по поводу темы мне кажется, что считывание и запись значений ячеек ТЗ производится гораздо быстрее чем в ТД.
22 МихаилМ
 
06.10.14
14:04
(21)
возможно
замена медленного метода Выгрузить()

заполнение построчное ТЗ
увеличит скорость преобразования.
23 Евгений Терехов
 
06.10.14
14:07
(22) Спасибо.