Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Как выгрузить большой объём данных постранично в json?          
burza Подменю пользователя
сообщение 12.02.24, 12:51
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

подскажите как выгрузить большой объём данных постранично в json . В каждую страницу по 10 000. как через page передавать типо первая страница 10 000. вторая начиная с 10 001 по 20 000 и т.д

    ПараметрыИзЗапроса = Новый Структура;
    ПараметрыИзЗапроса.Вставить("token", Запрос["ПараметрыURL"].Получить("token"));
    //ПараметрыИзЗапроса.Вставить("page", Запрос["ПараметрыURL"].Получить("page"));


  Если ПараметрыИзЗапроса.token = "fxGXX13iRkE5y0f0NvQAz9mjrAFtF4sRT9QRqZXhifgypLGAF" тогда     
        
    ////Прайс //////////////////////////////////
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    dbo_Table_1.Артикул КАК Артикул,
        |    dbo_Table_1.Производитель КАК Производитель,
        |    dbo_Table_1.Наименование КАК Наименование,
        |    dbo_Table_1.Валюта КАК Валюта,
        |    dbo_Table_1.Поставщик КАК Поставщик,
        |    dbo_Table_1.Цена КАК Цена,
        |    dbo_Table_1.Наличие
        |ИЗ
        |    ВнешнийИсточникДанных.Price.Таблица.dbo_Table_1 КАК dbo_Table_1
        |
        |СГРУППИРОВАТЬ ПО
        |    dbo_Table_1.Артикул,
        |    dbo_Table_1.Цена,
        |    dbo_Table_1.Наименование,
        |    dbo_Table_1.Производитель,
        |    dbo_Table_1.Наличие,
        |    dbo_Table_1.Валюта,
        |    dbo_Table_1.Поставщик";
    

    РезультатЗапроса = Запрос.Выполнить();
    
    Выборка = РезультатЗапроса.Выбрать();
    
       МассивУслуг = Новый Массив;


    Пока Выборка.Следующий() Цикл

            МассивУслуг.Добавить(Новый Структура("Артикул, Производитель, Цена, Наименование, Наличие", Выборка.Артикул, Выборка.Производитель , Выборка.Цена, Выборка.Наименование, Выборка.Наличие));
        
    
        КонецЦикла;    

    
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку();
    
    ЗаписатьJSON(ЗаписьJSON, МассивУслуг);


    
    СтрокаДляОтвета = ЗаписьJSON.Закрыть();

    
    Ответ = Новый HTTPСервисОтвет(200);    
    Ответ.Заголовки.Вставить("Content-type", "application/json;  charset=utf-8");
    
    Ответ.УстановитьТелоИзСтроки(СтрокаДляОтвета, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);


Сообщение отредактировал Vofka - 12.02.24, 13:47

Vofka Подменю пользователя
сообщение 12.02.24, 13:54
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

В языке запросов есть функция АВТОНОМЕРЗАПИСИ(). Далее в ГДЕ добавляете условие
|ГДЕ
|   НомерЗаписи > &СтартовыйНомер


где СтартовыйНомер = (НомерСтраницы - 1) * КоличествоНаСтранице
И в ВЫБРАТЬ надо добавить ПЕРВЫЕ ххх, где ххх = НомерСтраницы * КоличествоНаСтранице

Сообщение отредактировал Vofka - 12.02.24, 13:55

Спасибо сказали: burza,

burza Подменю пользователя
сообщение 12.02.24, 16:23
Сообщение #3

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

Vofka @ Сегодня, 13:54 * ,
АВТОНОМЕРЗАПИСИ() на ссылку делаю. таблица временая


burza @ Сегодня, 15:59 * ,
Всё ок) лохонулся

burza Подменю пользователя
сообщение 17.02.24, 16:18
Сообщение #4

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

Vofka @ 12.02.24, 13:54 * ,
забыл упомянуть что лежит на sql. то есть АВТОНОМЕРЗАПИСИ() не работает через внешние источники. как быть?
внутри да всё ок работает как вы подсказали.

burza Подменю пользователя
сообщение 19.02.24, 15:02
Сообщение #5

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

burza @ 17.02.24, 16:18 * ,
подскажите что как быть)?

Vofka Подменю пользователя
сообщение 19.02.24, 15:05
Сообщение #6

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

burza @ Сегодня, 15:02 * ,
а во внешней базе данных id не целочисленный?

Спасибо сказали: burza,

burza Подменю пользователя
сообщение 19.02.24, 19:33
Сообщение #7

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

Vofka @ Сегодня, 15:05 * ,
делать Автоинкремент и пробывать запросами через саму sql делать? ну уже тоже так решил, ибо через 1С я так понял это ника как не решить

burza @ Сегодня, 18:55 * ,
что-то такое SELECT * FROM dbo.Table_1 ORDER BY Id OFFSET 1 ROWS FETCH NEXT 10 ROWS ONLY

как запросом через 1С получить данные и разобрать?)

Vofka Подменю пользователя
сообщение 20.02.24, 9:41
Сообщение #8

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Цитата(burza @ 19.02.24, 19:33) *
как запросом через 1С получить данные и разобрать?)

Точно так же, как вы это делали раньше. Просто вместо АВТОНОМЕРЗАПИСИ() используйте колонку Id:
|ГДЕ
|   Id > &СтартовыйНомер

Спасибо сказали: burza,

sava1 Подменю пользователя
сообщение 20.02.24, 10:14
Сообщение #9

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

а не проще сформировать несколько файлов ЖСОН по одной выборке и не гемороиться с несколькими выборками?

burza Подменю пользователя
сообщение 20.02.24, 10:46
Сообщение #10

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

Vofka @ Сегодня, 9:41 * ,
сейчас пробну

Vofka Подменю пользователя
сообщение 20.02.24, 12:06
Сообщение #11

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Цитата(burza @ 20.02.24, 10:46) *
сейчас пробну

Я сейчас подумал, что это не сработает именно так как вам надо, если в Id есть пробелы. Т.е. если ИД идут 1, 2, 3, 800, 801, 900 и т.п. Надо выбирать первые ххх без условия ГДЕ с сортировкой по ИД. В таком случае, если вам надо вернуть, например, вторую тысячу записей, то делаем так:
|ВЫБРАТЬ ПЕРВЫЕ 2000
|...
|УПОРЯДОЧИТЬ ПО
|  Ид

Потом открываете выборку и на уровне обхода выборки пропускаете 1000 записей и начинаете брать с 1001.

Сообщение отредактировал Vofka - 20.02.24, 12:07

burza Подменю пользователя
сообщение 20.02.24, 12:44
Сообщение #12

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

Vofka @ Сегодня, 12:06 * ,
Понял, сейчас гляну, спасибо!
и еще вопрос не по теме ну чтобы уже не создавть


 ! 

Правила: 6
 


Сообщение отредактировал Vofka - 20.02.24, 14:47

Vofka Подменю пользователя
сообщение 20.02.24, 14:46
Сообщение #13

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Цитата(burza @ 20.02.24, 12:44) *
и еще вопрос не по теме ну чтобы уже не создавть

Та создавайте.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 27.04.24, 7:55
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!