Имя: Пароль:
1C
1С v8
На много ли будет быстрее запрос запроса в цикле?
0 Галахад
 
гуру
06.03.13
10:57
Дано:
Некий табличный документ.
У него есть колонка с заполненной расшифровкой тип СправочникСсылка.Номенклатура.

Нужно:
Отметить цветом разные категории номенклатуры.

Вариант 1. Запрос.
Пробегаюсь в цикле по строкам. Собираю номенклатуру в параметр.
Запросом получаю категорию номенклатуры, и выгружаю тз
с двумя колонками "номенклатура" и "категория"
Опять пробегаюсь по строкам. Ищу категорию по номенклатуре в тз.
Крашу.

Вариант 2. Запрос в цикле.
Пробегаюсь в цикле по строкам.
Запросом получаю категорию номенклатуры,
Крашу.
1 Wobland
 
06.03.13
10:58
на формирование ТабДока влиять ты не можешь, я так понимаю
2 Maxus43
 
06.03.13
10:58
на этапе формирования и вывода в ТД красить не вариант? почему после?
3 Галахад
 
гуру
06.03.13
10:59
(1), (2) Неа.
4 VladZ
 
06.03.13
11:00
За запрос в цикле - пожизненный эцих с гвоздями!
5 Wobland
 
06.03.13
11:01
в первом варианте тебе нужно собрать, потом покрасить. 2 хода. во втором - взять и покрасить. 1 ход
6 Дядя Вова
 
06.03.13
11:01
(4) Подтверждаю.
7 Wobland
 
06.03.13
11:01
+(5) как бы.. на обход документа больше уйдёт. имхо, конечно
8 genosse
 
06.03.13
11:02
Правильное решение - формировать сам ТД через СКД.
9 Галахад
 
гуру
06.03.13
11:03
(4), (6) Но-но. Иногда можно!

(5) Ну да. А как же эцик?
10 Reset
 
06.03.13
11:03
Вариант 1.
11 genosse
 
06.03.13
11:03
+8 Если этого не можешь сделать, одни фиг медленно, что не придумывай...
12 Wobland
 
06.03.13
11:04
(9) эцих никто не отменял. единый запрос выглядит красивше. я б на замер ещё посмотрел
13 Галахад
 
гуру
06.03.13
11:05
(12) Основная проблема в том, что я не знаю
какой "средний" размер будет у таблицы.
14 Wobland
 
06.03.13
11:06
а можно сохранить в ексель, сделать запрос к нему и к (чему там?) справочнику, и последовательно расставить результат в исходном документе ;)
15 pessok
 
06.03.13
11:06
а почему (2) никак?
16 Wobland
 
06.03.13
11:07
(13) выяснишь, что быстрее будет на 10 тыс. строк, будет яснее ;)
17 Reset
 
06.03.13
11:07
(13) Вариант1, безотносительно размера таблицы.

А, нет. Если размер - 1 строка - тогда только вариант 2.
18 Галахад
 
гуру
06.03.13
11:08
(14) Чо?

(15) Офтоп!

(16) Ага. А потом выясниться, что средняя таблица 100 строк...
19 Wobland
 
06.03.13
11:10
то есть, стоит вопрос: что красивше и правильней? два раза ТабДок обходить или запрос в цикле делать.
//и хрен с ней с производительностью
20 pessok
 
06.03.13
11:12
(18) а если так
собрать номенклатуру и имя колонки с ней в тз, поместить в ВТ, прицепить категории. потом обходить запрос таким образом
ТД.Область(Выборка.ИмяКолонки).ЦветФона блабла
21 Maxus43
 
06.03.13
11:17
(18) какой оффтоп? обоснуй (1)(2), что-то тут не чисто
22 Wobland
 
06.03.13
11:18
(21) файл поступает извне. для дальнейшей переработки было бы удобно покрасить в разные цвета...
23 pessok
 
06.03.13
11:18
(21) ну, например, отчет от франя со скрытыми сорцами
24 Maxus43
 
06.03.13
11:19
(22)(23) зачем мне телепаты? я хочу услышать автора)
25 pessok
 
06.03.13
11:20
(24) разминаемся :)
26 GANR
 
06.03.13
11:23
На 20000 записей проверять надо. План запроса может быть разный ещё - может, тот запрос, который в цикле будет по SEEK работать, а тот, который 1 раз - по SCAN. Тогда запрос в цикле может даже быстрее работать.
27 cw014
 
06.03.13
11:25
Вариант 1, но без пробега. Не даром у табличной части и у таблицы значений есть метод "ВыгрузитьКолонку"
28 pessok
 
06.03.13
11:27
(27) там не ТЧ, там ТабДок
29 cw014
 
06.03.13
11:29
(28) Оу. Ну тогда 1
30 Defender aka LINN
 
06.03.13
11:36
(5) Второй вариант - ВысотаТаблицы ходов, а не 1.
31 palpetrovich
 
06.03.13
11:50
(4) может конечно и прав, но вот свежий пример из жизни:
конфа розница, менять нельзя, при выгрузке этикеток в весы вызывает в цикле процедуру из внешней обработки. Понадобилось внести кучку дополнительной информации, пришлось в этой процедуре внешней обработки добавить запрос по этим данным. Предложи другое
32 Галахад
 
гуру
06.03.13
11:53
Вобщем на 1000 позиций запрос в цикле работает 3 секунды.

Ну фиг с ним. Эцик, так эцик.
33 Ахиллес
 
06.03.13
11:59
А зачем в 1 варианте выгружать в ТЗ, чтоб потом перебирать её в цикле? Делай сразу обход выборки запроса.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший