Имя: Пароль:
1C
 
Оптимизация работы с объектами
0 ИС-2
 
naïve
02.01.23
09:11
Есть документы с большим кол-вом строк в ТЧ (>5000).
Из-за этого работа с ТЧ занимает много времени.
Например, на выгрузку номенклатуры уходит 5% (1-3 сек) времени
            Запрос.УстановитьПараметр("НоменклатураДокумента", источник.товары.выгрузить().выгрузитьколонку("Номенклатура"));

Есть ли способы оптимизации именно работы с объектами? Т.е когда нет ссылки, чтобы делать запрос
1 hockeyist
 
02.01.23
09:28
(0) источник.ссылка чем не ссылка?
2 Aleksey
 
02.01.23
09:32
Номенклатура = ОбщегоНазначения.ВыгрузитьКолонку(источник.Товары, "Номенклатура", Истина);
3 RomanYS
 
02.01.23
10:22
Если объект записан, то в запрос передавать ссылку на документ, номенклатуру получать внутри.

У метода Выгрузить() есть параметры, можно выгрузить только одну колонку
4 ИС-2
 
naïve
02.01.23
11:43
(1) код выполняется в событии перед записью т.е данные в ссылке отличаются от данных в объекте
5 Armando
 
02.01.23
17:21
Передавать в запрос массив размером несколько тысяч элементов так себе идея. Нельзя ли этот код использовать в ПриЗаписи?
6 RomanYS
 
02.01.23
17:47
*(3) забыл, что у ТЧ есть метод ВыгрузитьКолонку

потестил на 5000 строках ТЧ 16 реквизитов

М = ТЧ.ВыгрузитьКолонку("Реквизит1"); //~0,001 сек

ТЗ = ТЧ.Выгрузить();// ~0,05 сек
М = ТЗ.ВыгрузитьКолонку("Реквизит1");// ~0.0002 сек
    
ТЗ = ТЧ.Выгрузить(,"Реквизит1");// ~0,007 сек
М = ТЗ.ВыгрузитьКолонку("Реквизит1");// ~0.0002 сек

Откуда могут быть 1-3 секунды?
7 D_E_S_131
 
03.01.23
14:36
(4) Тогда через временную таблицу, если в базе еще нет этой информации.
8 mistеr
 
04.01.23
12:40
(0) При выгрузке можно отбор делать.

Ну и 3 сек. да, многовато.
9 PR
 
04.01.23
12:46
(0) Прикольно, да, сначала выгрузить всю ТЧ, а потом только одну колонку, и возмущаться, что долго что-то
Независимо от того, куда вы едете — это в гору и против ветра!