|   |   | 
| 
 | Как нарезать 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 | 
        Благодарю всех уже сделал     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |