|
Как нарезать 1С запрос ровными ломтиками по 1000 записей ? | ☑ | ||
---|---|---|---|---|
0
Repattern
23.09.19
✎
13:53
|
Как нарезать 1С запрос ровными ломтиками по 1000 записей ?
|
|||
1
Волшебник
23.09.19
✎
13:56
|
упорядочить по полю, выбрать первые 1000
для выбора следующий 1000 добавить условие ГДЕ поле > последнийВыбранный |
|||
2
palsergeich
23.09.19
✎
13:57
|
(1) при наличии больше 1 измерения соответственно где Измерение1 ... Измерениеn > чем в последней записи
|
|||
3
palsergeich
23.09.19
✎
13:57
|
(2) но да без упорядочивания никак
|
|||
4
Repattern
23.09.19
✎
14:00
|
(1) если это в самом запросе - то мне не подойдёт.
У меня 10.000 записей Каждую 1000 мне надо сохранить в файл если я выберу упорядочить по полю, выбрать первые 1000 то остальные 9000 не попадут в запрос |
|||
5
Repattern
23.09.19
✎
14:05
|
(1) могу ли попросить более развёрнутый ответ ? :-)
|
|||
6
Конструктор1С
23.09.19
✎
14:07
|
(0)(4) а зачем это делать в запросе?
|
|||
7
CrushBy
23.09.19
✎
14:08
|
(6) Иногда бывает нужно, когда все данные в память сервера приложений не пролазят одновременно
|
|||
8
Волшебник
23.09.19
✎
14:09
|
ВЫБРАТЬ ПЕРВЫЕ 1000 Код, Ссылка
ИЗ Справочник.Номенклатура ГДЕ Код > &ПоследнийКод УПОРЯДОЧИТЬ ПО Код ВОЗР Запрос.УстановитьПараметр("ПоследнийКод", 0); Далее обработка результата запроса в цикле и в конце запоминаем &ПоследнийКод для следующего запроса |
|||
9
Repattern
23.09.19
✎
14:11
|
(6)
Задача в том что бы записать данные в csv файл по 1000 строк. У меня есть запрос который выбирает все записи. идея была в том чтобы както розделить результат запроса по 1000 строк И строки передавать в функцию "записи файла" Результат.Выполнить().Выгрузить(Первая1000) Результат.Выполнить().Выгрузить(Вторая1000) И тд |
|||
10
1Сергей
23.09.19
✎
14:12
|
ох уж эта Выполнить().Выгрузить()
:) |
|||
11
shuhard
23.09.19
✎
14:13
|
(9) не дели в запросе, дели в цикле выгрузки =)
|
|||
12
Repattern
23.09.19
✎
14:15
|
(8) благодарю
|
|||
13
d4rkmesa
23.09.19
✎
14:34
|
(0) Я вот думаю, если 8.3.13+, можно попробовать заюзать АвтоНомерЗаписи в запросе.
|
|||
14
Вафель
23.09.19
✎
14:51
|
(9) тогда каждые 1000 строк делай файл.записать(); новый файл
|
|||
15
Вафель
23.09.19
✎
14:51
|
(13) это только для временных
|
|||
16
Anarki
23.09.19
✎
15:13
|
(15) А в условии где то написано что нужно это сделать без временных таблиц?
Как раз можно пронумеровать все записи, положить в ВТ, потом сделать запрос к ней, добавтить поле "Тыша", которое будет хранить номер тысячи и сгруппировать по нему, или 10 пакетных запросов сделать каждый будем свою тысячу выводить. |
|||
17
Anarki
23.09.19
✎
15:21
|
ВЫБРАТЬ
Номенклатура.Ссылка, АВТОНОМЕРЗАПИСИ() КАК НомерЗаписи ПОМЕСТИТЬ ВТ ИЗ Справочник.Номенклатура КАК Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ.Ссылка, ВТ.НомерЗаписи, ВЫБОР КОГДА ВТ.НомерЗаписи <= 1000 ТОГДА 1 КОГДА ВТ.НомерЗаписи <= 2000 ТОГДА 2 КОГДА ВТ.НомерЗаписи <= 3000 ТОГДА 3 КОГДА ВТ.НомерЗаписи <= 4000 ТОГДА 4 КОГДА ВТ.НомерЗаписи <= 5000 ТОГДА 5 // и т.д. ИНАЧЕ 10 КОНЕЦ КАК ПартияПо1000 ИЗ ВТ КАК ВТ ИТОГИ ПО ПартияПо1000 |
|||
18
Fragster
гуру
23.09.19
✎
15:22
|
учу пользоваться выражениями встроенного языка: Пока, Если, =, +
|
|||
19
Fragster
гуру
23.09.19
✎
15:22
|
но очень дорого
|
|||
20
Fragster
гуру
23.09.19
✎
15:23
|
нах это в запросе делать?
|
|||
21
Sapiens_bru
23.09.19
✎
15:31
|
(13) Сделал. Получается не очень красиво, но из внешних параметров передаётся только порция на которую надо нарезать)
ВЫБРАТЬ Номенклатура.Ссылка КАК Ссылка, АВТОНОМЕРЗАПИСИ() КАК Номер ПОМЕСТИТЬ вт ИЗ Справочник.Номенклатура КАК Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ МАКСИМУМ(вт.Номер) КАК Номер ПОМЕСТИТЬ втМакс ИЗ вт КАК вт ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ вт.Номер * &П КАК Номер ПОМЕСТИТЬ втШкала ИЗ вт КАК вт, втМакс КАК втМакс ГДЕ вт.Номер * &П < втМакс.Номер + &П ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ вт.Ссылка КАК Ссылка, вт.Номер КАК Номер, МИНИМУМ(ЕСТЬNULL(втШкала.Номер, 0)) КАК Шкала ПОМЕСТИТЬ втПочтиИтог ИЗ вт КАК вт ЛЕВОЕ СОЕДИНЕНИЕ втШкала КАК втШкала ПО (вт.Номер < втШкала.Номер) СГРУППИРОВАТЬ ПО вт.Ссылка, вт.Номер ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ втПочтиИтог.Шкала КАК Шкала, втПочтиИтог.Ссылка КАК Ссылка ИЗ втПочтиИтог КАК втПочтиИтог ИТОГИ ПО Шкала |
|||
22
Repattern
23.09.19
✎
16:19
|
Благодарю всех уже сделал
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |