Имя: Пароль:
1C
 
порционное чтение таблицы значений
0 Маленький Вопросик
 
07.02.26
18:19
товарищи, доброго времени!

предложите варианты кода порционного чтения тз

спасибо!
1 Ёпрст
 
гуру
07.02.26
18:22
(0) а че, циклы уже отменили ?
2 Ёпрст
 
гуру
07.02.26
18:23
+1 еще, дарю: [тут типа номер строки]
3 X Leshiy
 
07.02.26
18:52
(0) А зачем? ТЗ она в памяти рисуется, а потом уже в сеансовых данных. Индексируй, индексы рулят)
4 X Leshiy
 
07.02.26
18:52
5 sikuda
 
07.02.26
20:15
(0) Из ТаблицыЗначений или Базы данных?
ТаблицаЗначений вся в памяти - выбирай кусками, что хочешь
База данных: Пагинации в 1С нет, приходится извращаться
Но при много миллионный выборке сделать выгрузить в ТЗ точно не надо ...
6 Маленький Вопросик
 
07.02.26
21:56
если что, то сделано! спасибо всем за советы!
7 Волшебник
 
07.02.26
23:55
(6) Сделано как?
8 Chai Nic
 
08.02.26
08:21
(5) Выборка из результата запроса тоже в памяти висит, кстати. По крайней мере, так было пару лет назад. Проверял. Оверхед при выгрузке в ТЗ был буквально единицы процентов.
9 Маленький Вопросик
 
08.02.26
08:47
(7) ответами "экспертов" не воодушевился?

вот так:
&НаСервере
Функция РазбитьТЗНаЧасти(ВходящийМассив, РазмерЧасти)
	
	Сч = 0;
	
	СодержаниеПорции 	= Новый Массив;
	Части 				= Новый Массив;
	
	Для Индекс = 0 По ВходящийМассив.Количество() - 1 Цикл
		
		  Сч = Сч + 1;
		
		  Если Сч % РазмерЧасти = 0 Тогда
			    СодержаниеПорции.Добавить(ВходящийМассив[Индекс]);
			    Части.Добавить(СодержаниеПорции);
				СодержаниеПорции 	= Новый Массив;
				Сч = 0;
		  Иначе
			  	СодержаниеПорции.Добавить(ВходящийМассив[Индекс]);
		  КонецЕсли;	  
		
	КонецЦикла;
	  
	Части.Добавить(СодержаниеПорции);
	
	Возврат Части;
     
КонецФункции
10 Кирпич
 
08.02.26
09:01
Чота как то жутковато становится на мисте.
11 craxx
 
08.02.26
09:29
(9) а зачем???
12 Кирпич
 
08.02.26
09:57
(11) Хрен знает. Может хочет одну таблицу значений одновременно обработать несколькими фоновыми заданиями. Но нафига по массивам распихивать, непонятно. Судя по тупости приведенного кода, код писал ИИ. Сельская интеллигенция осваивает ИИ. Деградация, тупость, уныние, безысходность.
13 Маленький Вопросик
 
08.02.26
10:10
(12) следи за своим языком и предложи свой пример
14 craxx
 
08.02.26
10:11
(12) если для этого, то просто берешь размер таблицы, делишь его на количество фонок, и в параметры фонок просто первый и последний индекс суешь, нафиг вообще массивы?
15 Кирпич
 
08.02.26
10:15
(13) вот тебе пример в (14)
16 H A D G E H O G s
 
08.02.26
12:05
(14) И в фоновые уедут полные копии таблицы?
17 Кирпич
 
08.02.26
12:08
(16) чо проверил? :)
18 H A D G E H O G s
 
08.02.26
12:08
(12) Ну и если он разбивает ТЗ - то в результирующем массиве у него будут СтрокаТаблицыЗначений, которую не передать в Фоновое.
19 H A D G E H O G s
 
08.02.26
12:10
(17) Что проверил? Если я правильно понял идею (14) - Она в передаче в фоновое номеров строк таблицы. Но и таблицу же надо передать, откуда фоновое данные брать будет?
20 Кирпич
 
08.02.26
12:15
(19) есть маленькая надежда, что таблица не скопируется. но скорее всего она скопируется. проверять ниахота
21 H A D G E H O G s
 
08.02.26
12:18
(20) Конечно скопируется, а потом сериализуется и десериализуется в фоновом, вы чего?
22 Кирпич
 
08.02.26
12:20
(21) да ничего. просто логично было бы её не копировать. но в 1с своя логика.
23 Кирпич
 
08.02.26
12:23
прочитал. "Все передаваемые параметры должны поддерживать сериализацию."
24 craxx
 
08.02.26
12:26
(19) ТЗ можно заранее передать в некий глобальный объект, который будет виден всем фонкам.
25 Кирпич
 
08.02.26
12:41
(24) да 1с её скорее всего всё равно скопирует. может там конечно оптимизирует это дело, но тот факт, что параметры должны сериализоваться, гарантий некопирования не дает. да и хрен с ним. нафиг это вабще надо. да и автор так и не сказал чего он хотел сотворить своим гениальным кодом и почему ему не зашло использование метода тз.Скопировать()
26 Кирпич
 
08.02.26
12:46
(24) вово. в модуль с повторным использованием