[{"data":1,"prerenderedAt":3636},["ShallowReactive",2],{"navigation":3,"-docs-working-with-the-rest-api-fetch-list-rest-api-ver3":459,"-docs-working-with-the-rest-api-fetch-list-rest-api-ver3-description":3625},[4],{"title":5,"path":6,"stem":7,"children":8,"page":47},"Docs","\u002Fdocs","docs",[9,78,351],{"title":10,"path":11,"stem":12,"children":13,"restApiVersion":15,"category":15,"description":15,"badge":15},"Начало работы","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started\u002F1.index",[14,17,48,63],{"title":10,"path":11,"stem":12,"restApiVersion":15,"category":15,"description":16,"badge":15},null,"Краткое руководство по работе с SDK для REST API Bitrix24",{"title":18,"path":19,"stem":20,"children":21,"page":47},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002F1.getting-started\u002F2.installation",[22,27,32,37,42],{"title":23,"path":24,"stem":25,"restApiVersion":15,"category":15,"description":26,"badge":15},"Vue","\u002Fdocs\u002Fgetting-started\u002Finstallation\u002Fvue","docs\u002F1.getting-started\u002F2.installation\u002F1.vue","Руководство по установке Bitrix24 JS SDK в приложениях Vue.",{"title":28,"path":29,"stem":30,"restApiVersion":15,"category":15,"description":31,"badge":15},"Nuxt","\u002Fdocs\u002Fgetting-started\u002Finstallation\u002Fnuxt","docs\u002F1.getting-started\u002F2.installation\u002F2.nuxt","Руководство по установке Bitrix24 JS SDK в приложениях Nuxt.",{"title":33,"path":34,"stem":35,"restApiVersion":15,"category":15,"description":36,"badge":15},"React","\u002Fdocs\u002Fgetting-started\u002Finstallation\u002Freact","docs\u002F1.getting-started\u002F2.installation\u002F3.react","Руководство по установке Bitrix24 JS SDK в приложениях React.",{"title":38,"path":39,"stem":40,"restApiVersion":15,"category":15,"description":41,"badge":15},"Node.js","\u002Fdocs\u002Fgetting-started\u002Finstallation\u002Fnodejs","docs\u002F1.getting-started\u002F2.installation\u002F4.nodejs","Руководство по установке Bitrix24 JS SDK в приложениях Node.js.",{"title":43,"path":44,"stem":45,"restApiVersion":15,"category":15,"description":46,"badge":15},"UMD","\u002Fdocs\u002Fgetting-started\u002Finstallation\u002Fumd","docs\u002F1.getting-started\u002F2.installation\u002F5.umd","Руководство по использованию UMD-версии Bitrix24 JS SDK в ваших приложениях.",false,{"title":49,"restApiVersion":15,"category":15,"description":15,"badge":15,"shadow":47,"path":50,"stem":51,"children":52,"page":47},"Migration","\u002Fdocs\u002Fgetting-started\u002Fmigration","docs\u002F1.getting-started\u002F3.migration",[53,58],{"title":54,"path":55,"stem":56,"restApiVersion":15,"category":15,"description":57,"badge":15},"v0 → v1","\u002Fdocs\u002Fgetting-started\u002Fmigration\u002Fv1","docs\u002F1.getting-started\u002F3.migration\u002F1.v1","Подробное руководство по миграции приложения с Bitrix24 JS SDK v0 на Bitrix24 JS SDK v1.",{"title":59,"path":60,"stem":61,"restApiVersion":15,"category":15,"description":62,"badge":15},"v2 → v3","\u002Fdocs\u002Fgetting-started\u002Fmigration\u002Fv3","docs\u002F1.getting-started\u002F3.migration\u002F2.v3","Как уйти с устаревшей REST-поверхности, которая удаляется в Bitrix24 JS SDK 3.0.0.",{"title":64,"restApiVersion":15,"category":15,"description":15,"badge":15,"path":65,"stem":66,"children":67,"page":47},"AI-инструменты","\u002Fdocs\u002Fgetting-started\u002Fai","docs\u002F1.getting-started\u002F7.ai",[68,73],{"title":69,"path":70,"stem":71,"restApiVersion":15,"category":15,"description":72,"badge":15},"Навыки","\u002Fdocs\u002Fgetting-started\u002Fai\u002Fskills","docs\u002F1.getting-started\u002F7.ai\u002F1.skills","Узкоспециализированные skill-файлы для AI-агентов разработчика, работающих с @bitrix24\u002Fb24jssdk.",{"title":74,"path":75,"stem":76,"restApiVersion":15,"category":15,"description":77,"badge":15},"LLMs.txt","\u002Fdocs\u002Fgetting-started\u002Fai\u002Fllms-txt","docs\u002F1.getting-started\u002F7.ai\u002F2.llms-txt","Как сделать, чтобы AI-инструменты вроде Cursor, Windsurf, GitHub Copilot, ChatGPT и Claude понимали методы, инструменты и лучшие практики Bitrix24 JS SDK.",{"title":79,"path":80,"stem":81,"children":82,"restApiVersion":15,"category":15,"description":15,"badge":15},"Работа с REST API","\u002Fdocs\u002Fworking-with-the-rest-api","docs\u002F2.working-with-the-rest-api\u002F0.index",[83,86,93,98,103,107,112,116,121,126,130,135,140,145,150,155,160,165,170,175,179,184,189,194,200,205,210,215,220,225,230,235,240,245,251,256,261,267,272,277,282,287,293,299,305,310,315,320,326,331,336,341,346],{"title":84,"path":80,"stem":81,"restApiVersion":15,"category":15,"description":85,"badge":15},"Введение","Обзор возможностей SDK для работы с REST API Bitrix24",{"title":87,"path":88,"stem":89,"restApiVersion":90,"category":91,"description":92,"badge":15},"Call","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcall-rest-api-ver2","docs\u002F2.working-with-the-rest-api\u002F1.call-rest-api-ver2","rest-api-ver2","actions","Метод для вызовов REST API Bitrix24 версии 2.",{"title":87,"path":94,"stem":95,"restApiVersion":96,"category":91,"description":97,"badge":15},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcall-rest-api-ver3","docs\u002F2.working-with-the-rest-api\u002F1.call-rest-api-ver3","rest-api-ver3","Метод для вызовов REST API Bitrix24 версии 3.",{"title":99,"path":100,"stem":101,"restApiVersion":90,"category":91,"description":102,"badge":15},"CallList","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcall-list-rest-api-ver2","docs\u002F2.working-with-the-rest-api\u002F2.call-list-rest-api-ver2","Метод для быстрого получения всех данных из list-методов REST API Bitrix24 версии 2.",{"title":99,"path":104,"stem":105,"restApiVersion":96,"category":91,"description":106,"badge":15},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcall-list-rest-api-ver3","docs\u002F2.working-with-the-rest-api\u002F2.call-list-rest-api-ver3","Метод для быстрого получения всех данных из list-методов REST API Bitrix24 версии 3.",{"title":108,"path":109,"stem":110,"restApiVersion":90,"category":91,"description":111,"badge":15},"FetchList","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ffetch-list-rest-api-ver2","docs\u002F2.working-with-the-rest-api\u002F2.fetch-list-rest-api-ver2","Возвращает AsyncGenerator, позволяющий обрабатывать данные из list-методов REST API Bitrix24 версии 2 по мере поступления, не загружая весь массив в память сразу. Особенно полезно при работе с очень большими объёмами данных.",{"title":108,"path":113,"stem":114,"restApiVersion":96,"category":91,"description":115,"badge":15},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Ffetch-list-rest-api-ver3","docs\u002F2.working-with-the-rest-api\u002F2.fetch-list-rest-api-ver3","Возвращает AsyncGenerator, позволяющий обрабатывать данные из list-методов REST API Bitrix24 версии 3 по мере поступления, не загружая весь массив в память сразу. Особенно полезно при работе с очень большими объёмами данных.",{"title":117,"path":118,"stem":119,"restApiVersion":15,"category":117,"description":120,"badge":15},"B24Hook","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhook","docs\u002F2.working-with-the-rest-api\u002F20.hook","Серверная точка входа для работы с REST API Bitrix24 через входящий вебхук (постоянный токен).",{"title":122,"path":123,"stem":124,"restApiVersion":90,"category":91,"description":125,"badge":15},"Batch","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fbatch-rest-api-ver2","docs\u002F2.working-with-the-rest-api\u002F3.batch-rest-api-ver2","Метод для выполнения пакетных запросов к REST API Bitrix24 версии 2. Позволяет выполнить до 50 команд в одном API-вызове.",{"title":122,"path":127,"stem":128,"restApiVersion":96,"category":91,"description":129,"badge":15},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Fbatch-rest-api-ver3","docs\u002F2.working-with-the-rest-api\u002F3.batch-rest-api-ver3","Метод для выполнения пакетных запросов к REST API Bitrix24 версии 3. Позволяет выполнить до 50 команд в одном API-вызове.",{"title":84,"path":131,"stem":132,"restApiVersion":15,"category":133,"description":134,"badge":15},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Fframe","docs\u002F2.working-with-the-rest-api\u002F30.frame","B24Frame","Предназначен для управления приложениями Bitrix24, работающими внутри placement-iframe. Наследуется от AbstractB24 и предоставляет менеджеры для аутентификации, обмена сообщениями с родительским окном, слайдеров, диалогов, placement и опций.",{"title":136,"path":137,"stem":138,"restApiVersion":15,"category":133,"description":139,"badge":15},"Инициализация","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fframe-initialize-b24-frame","docs\u002F2.working-with-the-rest-api\u002F30.frame-initialize-b24-frame","Функция предназначена для инициализации B24Frame",{"title":141,"path":142,"stem":143,"restApiVersion":15,"category":133,"description":144,"badge":15},"Авторизация","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fframe-auth","docs\u002F2.working-with-the-rest-api\u002F31.frame-auth","Предназначен для управления аутентификацией в приложениях Bitrix24. Обрабатывает данные аутентификации, полученные от родительского окна, и предоставляет методы для их обновления и получения.",{"title":146,"path":147,"stem":148,"restApiVersion":15,"category":133,"description":149,"badge":15},"Диалог","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fframe-dialog","docs\u002F2.working-with-the-rest-api\u002F31.frame-dialog","Оборачивает системные диалоги BX24 (выбор пользователя, выбор прав доступа, выбор CRM-сущности), чтобы их можно было открывать изнутри iframe приложения Bitrix24.",{"title":151,"path":152,"stem":153,"restApiVersion":15,"category":133,"description":154,"badge":15},"Опции","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fframe-options","docs\u002F2.working-with-the-rest-api\u002F31.frame-options","Используется для управления настройками приложения и пользователя в приложении Bitrix24. Позволяет инициализировать данные, получать и устанавливать опции через сообщения родительскому окну.",{"title":156,"path":157,"stem":158,"restApiVersion":15,"category":133,"description":159,"badge":15},"Родительское окно","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fframe-parent","docs\u002F2.working-with-the-rest-api\u002F31.frame-parent","Предоставляет методы для управления родительским окном приложения в Bitrix24, включая изменение размера окна, управление прокруткой, инициацию звонков и открытие мессенджера.",{"title":161,"path":162,"stem":163,"restApiVersion":15,"category":133,"description":164,"badge":15},"Placement","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fframe-placement","docs\u002F2.working-with-the-rest-api\u002F31.frame-placement","Используется для управления placement виджетов в приложении Bitrix24.",{"title":166,"path":167,"stem":168,"restApiVersion":15,"category":133,"description":169,"badge":15},"Слайдер","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fframe-slider","docs\u002F2.working-with-the-rest-api\u002F31.frame-slider","Предоставляет методы для работы со слайдерами в приложении Bitrix24. Позволяет открывать и закрывать слайдеры, а также управлять их содержимым.",{"title":171,"path":172,"stem":173,"restApiVersion":90,"category":91,"description":174,"badge":15},"BatchByChunk","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fbatch-by-chunk-rest-api-ver2","docs\u002F2.working-with-the-rest-api\u002F4.batch-by-chunk-rest-api-ver2","Метод для выполнения пакетных запросов с автоматическим разбиением на чанки для любого числа команд. Автоматически делит большие наборы команд на батчи по 50 и выполняет их последовательно. Используйте только массивы кортежей или массивы объектов.",{"title":171,"path":176,"stem":177,"restApiVersion":96,"category":91,"description":178,"badge":15},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Fbatch-by-chunk-rest-api-ver3","docs\u002F2.working-with-the-rest-api\u002F4.batch-by-chunk-rest-api-ver3","Метод для выполнения пакетных запросов к REST API Bitrix24 версии 3 с автоматическим разбиением на чанки для любого числа команд. Автоматически делит большие наборы команд на батчи по 50 и выполняет их последовательно. Используйте только массивы кортежей или массивы объектов.",{"title":180,"path":181,"stem":182,"restApiVersion":15,"category":180,"description":183,"badge":15},"B24OAuth","\u002Fdocs\u002Fworking-with-the-rest-api\u002Foauth","docs\u002F2.working-with-the-rest-api\u002F40.oauth","Серверная точка входа для работы с REST API Bitrix24 по access token OAuth 2.0 (с автоматическим обновлением).",{"title":185,"path":186,"stem":187,"restApiVersion":15,"category":15,"description":188,"badge":15},"Выбор метода","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fchoosing-the-right-method","docs\u002F2.working-with-the-rest-api\u002F5.choosing-the-right-method","Руководство по выбору между Call, CallList, FetchList, Batch и BatchByChunk в REST API v2 и v3.",{"title":190,"path":191,"stem":192,"restApiVersion":15,"category":15,"description":193,"badge":15},"Фильтрация","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ffiltering","docs\u002F2.working-with-the-rest-api\u002F5.filtering","Справочник по построению параметров фильтра в Bitrix24 REST API v2 (префиксные операторы) и v3 (массив троек), включая формат дат и правило отбрасывания order.",{"title":195,"path":196,"stem":197,"restApiVersion":15,"category":198,"description":199,"badge":15},"B24HelperManager","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhelper","docs\u002F2.working-with-the-rest-api\u002F50.helper","Helper","Агрегирующий менеджер, который загружает данные профиля, приложения, оплаты, лицензии, валют и опций одним батч-запросом REST, а также подключает Pull-клиент.",{"title":201,"path":202,"stem":203,"restApiVersion":15,"category":198,"description":204,"badge":15},"useB24Helper","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhelper-use-b24-helper","docs\u002F2.working-with-the-rest-api\u002F51.helper-use-b24-helper","Основанный на замыкании composable, который владеет единственным экземпляром B24HelperManager и предоставляет хелперы жизненного цикла (init \u002F destroy \u002F связка с Pull-клиентом).",{"title":206,"path":207,"stem":208,"restApiVersion":15,"category":198,"description":209,"badge":15},"ProfileManager","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhelper-profile-manager","docs\u002F2.working-with-the-rest-api\u002F52.helper-profile-manager","Разобранный ответ REST-метода `profile`: id, имя, фамилия, пол, фото, часовой пояс, флаг администратора.",{"title":211,"path":212,"stem":213,"restApiVersion":15,"category":198,"description":214,"badge":15},"AppManager","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhelper-app-manager","docs\u002F2.working-with-the-rest-api\u002F53.helper-app-manager","Разобранный ответ REST-метода `app.info`: id приложения, код, версия, статус, флаг установки.",{"title":216,"path":217,"stem":218,"restApiVersion":15,"category":198,"description":219,"badge":15},"PaymentManager","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhelper-payment-manager","docs\u002F2.working-with-the-rest-api\u002F54.helper-payment-manager","Статус оплаты приложения Bitrix24 — извлекается из `app.info`.",{"title":221,"path":222,"stem":223,"restApiVersion":15,"category":198,"description":224,"badge":15},"LicenseManager","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhelper-license-manager","docs\u002F2.working-with-the-rest-api\u002F55.helper-license-manager","Информация о лицензии Bitrix24 из `app.info` — и автоматическая перенастройка менеджера ограничений под соответствующий тарифный план.",{"title":226,"path":227,"stem":228,"restApiVersion":15,"category":198,"description":229,"badge":15},"CurrencyManager","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhelper-currency-manager","docs\u002F2.working-with-the-rest-api\u002F56.helper-currency-manager","Каталог валют, кэшируемый в памяти — базовая валюта, форматтеры для каждой валюты и форматтер числа в строку.",{"title":231,"path":232,"stem":233,"restApiVersion":15,"category":198,"description":234,"badge":15},"OptionsManager","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhelper-options-manager","docs\u002F2.working-with-the-rest-api\u002F57.helper-options-manager","Типизированный доступ к `app.option.get` \u002F `user.option.get`, плюс save(), который батчит `*.option.set` с необязательным Pull-уведомлением.",{"title":236,"path":237,"stem":238,"restApiVersion":15,"category":15,"description":239,"badge":15},"Ошибки","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ferrors","docs\u002F2.working-with-the-rest-api\u002F6.errors","Справочник кодов SdkError и AjaxError, выбрасываемых SDK, плюс коды ошибок REST Bitrix24, которые через них проявляются.",{"title":241,"path":242,"stem":243,"restApiVersion":15,"category":241,"description":244,"badge":15},"Pull","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fpull","docs\u002F2.working-with-the-rest-api\u002F60.pull","Поток сообщений в реальном времени от Bitrix24 к вашему приложению — WebSocket как основной канал, long-polling как запасной. Только для фрейма.",{"title":246,"path":247,"stem":248,"restApiVersion":15,"category":249,"description":250,"badge":15},"Logger","\u002Fdocs\u002Fworking-with-the-rest-api\u002Flogger","docs\u002F2.working-with-the-rest-api\u002F66.logger","logger","Логгер, вдохновлённый PHP Monolog, предоставляет структурированную систему логирования с поддержкой каналов, обработчиков, процессоров и форматтеров. Реализация следует принципам PSR-3 и паттерну цепочки ответственности.",{"title":252,"path":253,"stem":254,"restApiVersion":15,"category":249,"description":255,"badge":15},"Telegram","\u002Fdocs\u002Fworking-with-the-rest-api\u002Flogger-telegram","docs\u002F2.working-with-the-rest-api\u002F66.logger-telegram","Отправка логов в Telegram",{"title":257,"path":258,"stem":259,"restApiVersion":15,"category":15,"description":260,"badge":15},"Обнаружение v3-методов","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fdiscovering-v3-methods","docs\u002F2.working-with-the-rest-api\u002F7.discovering-v3-methods","Используйте rest.documentation.openapi, чтобы получить собственный машиночитаемый список всех доступных методов REST API v3 портала — источник истины, на который SDK опирается вместо захардкоженного allowlist. Особенно полезно для AI-агентов и кодогенерации.",{"title":262,"path":263,"stem":264,"restApiVersion":15,"category":265,"description":266,"badge":15},"AjaxResult","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcore-ajax-result","docs\u002F2.working-with-the-rest-api\u002F70.core-ajax-result","Core","Специализированный Result, возвращаемый каждым REST-хелпером. Предоставляет `isMore() \u002F getNext() \u002F getTotal() \u002F getStatus()` для постраничных ответов и неизменяемые данные.",{"title":268,"path":269,"stem":270,"restApiVersion":15,"category":265,"description":271,"badge":15},"Http","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcore-http","docs\u002F2.working-with-the-rest-api\u002F70.core-http","Низкоуровневый интерфейс транспорта, возвращаемый `b24.getHttpClient(version)`. Прямой доступ к axios-клиентам, параметрам ограничений, статистике и сбросу.",{"title":273,"path":274,"stem":275,"restApiVersion":15,"category":265,"description":276,"badge":15},"B24LangList","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcore-lang-list","docs\u002F2.working-with-the-rest-api\u002F70.core-lang-list","Enum языков интерфейса облачного Bitrix24 плюс карта локалей BCP-47.",{"title":278,"path":279,"stem":280,"restApiVersion":15,"category":265,"description":281,"badge":15},"RequestIdGenerator","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcore-request-id-generator","docs\u002F2.working-with-the-rest-api\u002F70.core-request-id-generator","Реализация `IRequestIdGenerator` по умолчанию. Генерирует request id в формате UUID v7 и предоставляет имена HTTP-заголовка \u002F query-параметра, используемые SDK.",{"title":283,"path":284,"stem":285,"restApiVersion":15,"category":265,"description":286,"badge":15},"Result","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcore-result","docs\u002F2.working-with-the-rest-api\u002F70.core-result","Обобщённый результат операции с флагом успеха, данными и картой ошибок. Аналог \\\\Bitrix\\\\Main\\\\Result из Bitrix Framework.",{"title":288,"path":289,"stem":290,"restApiVersion":15,"category":291,"description":292,"badge":15},"Лимитеры","\u002Fdocs\u002Fworking-with-the-rest-api\u002Flimiters","docs\u002F2.working-with-the-rest-api\u002F77.limiters","limiters","Система ограничений предоставляет комплексный механизм управления частотой запросов, временем выполнения операций и адаптивными задержками.",{"title":294,"path":295,"stem":296,"restApiVersion":15,"category":297,"description":298,"badge":15},"Логирование и редактирование","\u002Fdocs\u002Fworking-with-the-rest-api\u002Flogging","docs\u002F2.working-with-the-rest-api\u002F78.logging","logging","Что SDK редактирует автоматически до того, как информация о запросе попадёт в логгер или AjaxError, что он не редактирует, и как подключить кастомный логгер через setLogger(...) без повторного появления утечек учётных данных.",{"title":300,"path":301,"stem":302,"restApiVersion":15,"category":303,"description":304,"badge":15},"Browser","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftools-browser","docs\u002F2.working-with-the-rest-api\u002F80.tools-browser","tools","Дешёвый детектор user-agent \u002F платформы \u002F возможностей. Полезен для runtime-ветвлений во фронтенд-коде.",{"title":306,"path":307,"stem":308,"restApiVersion":15,"category":303,"description":309,"badge":15},"Text","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftools-text","docs\u002F2.working-with-the-rest-api\u002F80.tools-text","Утилиты для текста и дат — UUID v4 \u002F v7, кодирование \u002F декодирование HTML-сущностей, преобразования типов, хелперы регистра, `toDateTime` \u002F `toB24Format` на Luxon, форматирование чисел и конструктор query-строки.",{"title":311,"path":312,"stem":313,"restApiVersion":15,"category":303,"description":314,"badge":15},"Type","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftools-type","docs\u002F2.working-with-the-rest-api\u002F80.tools-type","Runtime type guards — строки, числа, обычные объекты, массивы, DOM-узлы, Blob, FormData, формы JSON-RPC сообщений.",{"title":316,"path":317,"stem":318,"restApiVersion":15,"category":303,"description":319,"badge":15},"useFormatter","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftools-use-formatters","docs\u002F2.working-with-the-rest-api\u002F80.tools-use-formatters","Composable, возвращающий общие экземпляры `FormatterNumbers` и `FormatterIban`, преднастроенные спецификациями стран.",{"title":321,"path":322,"stem":323,"restApiVersion":15,"category":324,"description":325,"badge":15},"IResult","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftypes-iresult","docs\u002F2.working-with-the-rest-api\u002F90.types-iresult","Types","Обобщённый интерфейс результата операции. Реализуется `Result\u003CT>` и (транзитивно) `AjaxResult\u003CT>`.",{"title":327,"path":328,"stem":329,"restApiVersion":15,"category":324,"description":330,"badge":15},"TypeB24","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftypes-type-b24","docs\u002F2.working-with-the-rest-api\u002F90.types-type-b24","Публичный контракт, реализуемый каждым классом-точкой входа (B24Frame, B24Hook, B24OAuth). Единый источник истины для поверхности SDK.",{"title":332,"path":333,"stem":334,"restApiVersion":15,"category":265,"description":335,"badge":15},"Телеметрия","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftelemetry","docs\u002F2.working-with-the-rest-api\u002F95.telemetry","Query-параметры request id, версии SDK и типа SDK, добавляемые к каждому REST-вызову Bitrix24.",{"title":337,"path":338,"stem":339,"restApiVersion":15,"category":265,"description":340,"badge":15},"Коды ошибок","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ferror-codes","docs\u002F2.working-with-the-rest-api\u002F96.error-codes","Каталог кодов ошибок, которые распознаёт SDK — разделённых на «hard» (выбрасываются) и «soft» (возвращаются как AjaxError внутри AjaxResult).",{"title":342,"path":343,"stem":344,"restApiVersion":15,"category":303,"description":345,"badge":15},"HealthCheck","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftools-health-check","docs\u002F2.working-with-the-rest-api\u002Ftools-health-check","Метод для проверки доступности REST API Bitrix24. Выполняет простой запрос к REST API для проверки работоспособности сервиса.",{"title":347,"path":348,"stem":349,"restApiVersion":15,"category":303,"description":350,"badge":15},"Ping","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftools-ping","docs\u002F2.working-with-the-rest-api\u002Ftools-ping","Метод для измерения скорости ответа REST API Bitrix24. Выполняет тестовый запрос и возвращает время ответа в миллисекундах.",{"title":352,"path":353,"stem":354,"children":355,"restApiVersion":15,"category":15,"description":15,"badge":15},"Примеры","\u002Fdocs\u002Fexamples","docs\u002F99.examples\u002F0.index",[356,358,364,369,374,379,384,389,394,399,404,409,414,419,424,429,434,439,444,449,454],{"title":84,"path":353,"stem":354,"restApiVersion":15,"category":15,"description":357,"badge":15},"Рецепты, сочетающие SDK с реалистичными сценариями — аналитика CRM, массовые рассылки, AI-ассистенты, установка по OAuth и не только. Каждый рецепт — отдельный файл, удобный для копирования.",{"title":359,"path":360,"stem":361,"restApiVersion":15,"category":362,"description":363,"badge":15},"Аналитика CRM","\u002Fdocs\u002Fexamples\u002Fcrm-analytics","docs\u002F99.examples\u002F1.crm-analytics","examples","Стримит все сделки через actions.v2.fetchList.make, группирует по стадиям, печатает отчёт по воронке (количество, конверсия %, средний чек, win rate).",{"title":365,"path":366,"stem":367,"restApiVersion":15,"category":362,"description":368,"badge":15},"Сделки → CSV","\u002Fdocs\u002Fexamples\u002Fdashboard-deals-csv","docs\u002F99.examples\u002F1.dashboard-deals-csv","Стримит каждую сделку CRM, подходящую под фильтр по дате, в CSV-файл через вебхук и FetchListV2.",{"title":370,"path":371,"stem":372,"restApiVersion":15,"category":15,"description":373,"badge":15},"Список сущностей","\u002Fdocs\u002Fexamples\u002Fentity-list","docs\u002F99.examples\u002F10.entity-list","Рендерит постраничный список сущностей Bitrix24 с компонентами B24UI и SDK-действием callList.",{"title":375,"path":376,"stem":377,"restApiVersion":15,"category":362,"description":378,"badge":15},"Обработка ошибок","\u002Fdocs\u002Fexamples\u002Ferror-handling","docs\u002F99.examples\u002F10.error-handling","Демонстрирует четыре слоя ошибок (SdkError \u002F AjaxError \u002F сетевые \u002F soft) и настройки hardErrorCodes \u002F softErrorCodes \u002F retryOnNetworkError у менеджера ограничений.",{"title":380,"path":381,"stem":382,"restApiVersion":15,"category":362,"description":383,"badge":15},"Регистрация событий","\u002Fdocs\u002Fexamples\u002Fevent-registration","docs\u002F99.examples\u002F11.event-registration","CLI-инструмент — список, привязка и отвязка исходящих событий вебхуков Bitrix24 через event.get \u002F event.bind \u002F event.unbind. В паре с рецептом обработчика вебхуков.",{"title":385,"path":386,"stem":387,"restApiVersion":15,"category":362,"description":388,"badge":15},"Установка OAuth","\u002Fdocs\u002Fexamples\u002Foauth-install","docs\u002F99.examples\u002F12.oauth-install","Express-сервер, который обрабатывает события ONAPPINSTALL \u002F ONAPPUPDATE \u002F ONAPPUNINSTALL для маркетплейс-приложения Bitrix24, сохраняет токены по порталам и создаёт клиент B24OAuth по требованию с callback обновления, подключённым к хранилищу.",{"title":390,"path":391,"stem":392,"restApiVersion":15,"category":362,"description":393,"badge":15},"Скелет frame-приложения","\u002Fdocs\u002Fexamples\u002Fframe-app-skeleton","docs\u002F99.examples\u002F2.frame-app-skeleton","Минимально жизнеспособное iframe-приложение Bitrix24: рукопожатие init, установка заголовка, сохранение состояния приложения, открытие слайдера, чистое закрытие.",{"title":395,"path":396,"stem":397,"restApiVersion":15,"category":362,"description":398,"badge":15},"Массовые рассылки","\u002Fdocs\u002Fexamples\u002Fmass-messaging","docs\u002F99.examples\u002F2.mass-messaging","Фильтрует контакты в CRM, персонализирует шаблон, отправляет IM-уведомления ответственным менеджерам.",{"title":400,"path":401,"stem":402,"restApiVersion":15,"category":15,"description":403,"badge":15},"Мастер установки","\u002Fdocs\u002Fexamples\u002Fapp-installation-wizard","docs\u002F99.examples\u002F20.app-installation-wizard","Многошаговый процесс установки, который создаёт пользовательские поля, регистрирует placement-ы, финализирует установку и празднует конфетти.",{"title":405,"path":406,"stem":407,"restApiVersion":15,"category":362,"description":408,"badge":15},"Автоматизация задач","\u002Fdocs\u002Fexamples\u002Ftask-automation","docs\u002F99.examples\u002F3.task-automation","Опрашивает стадии сделок каждые 60 с. При отслеживаемом переходе создаёт задачу с описанием, дедлайном и приоритетом.",{"title":410,"path":411,"stem":412,"restApiVersion":15,"category":362,"description":413,"badge":15},"Вебхук CLI","\u002Fdocs\u002Fexamples\u002Fwebhook-cli-node","docs\u002F99.examples\u002F3.webhook-cli-node","Node-скрипт на 30 строк, который аутентифицируется на портале Bitrix24 через входящий вебхук и печатает вызывающего пользователя — полезно как первое, что вы запускаете после создания вебхука.",{"title":415,"path":416,"stem":417,"restApiVersion":15,"category":15,"description":418,"badge":15},"Экспорт Node + Hook","\u002Fdocs\u002Fexamples\u002Fnode-hook-company-export","docs\u002F99.examples\u002F30.node-hook-company-export","Экспорт компаний Bitrix24 в CSV-файл из чистого Node.js-скрипта через B24Hook.",{"title":420,"path":421,"stem":422,"restApiVersion":15,"category":362,"description":423,"badge":15},"Массовое обновление","\u002Fdocs\u002Fexamples\u002Fbulk-update-deals","docs\u002F99.examples\u002F4.bulk-update-deals","Переносит тысячи сделок CRM на новую стадию через BatchByChunkV2 — автоматическое разбиение на чанки, обработка частичных ошибок и одна строка прогресса.",{"title":425,"path":426,"stem":427,"restApiVersion":15,"category":362,"description":428,"badge":15},"Синхронизация ERP","\u002Fdocs\u002Fexamples\u002Ferp-sync","docs\u002F99.examples\u002F4.erp-sync","Двусторонняя синхронизация контактов между Bitrix24 и внешней ERP. Сопоставление по ИНН (основное) или email (запасное). Cron каждый час.",{"title":430,"path":431,"stem":432,"restApiVersion":15,"category":362,"description":433,"badge":15},"Файлы Диска","\u002Fdocs\u002Fexamples\u002Fdisk-files","docs\u002F99.examples\u002F5.disk-files","Список хранилищ и содержимого папок, создание подпапок, просмотр файлов. Загрузка файлов (multipart) намеренно вне области.",{"title":435,"path":436,"stem":437,"restApiVersion":15,"category":362,"description":438,"badge":15},"Подписка на Pull","\u002Fdocs\u002Fexamples\u002Fpull-subscribe-frame","docs\u002F99.examples\u002F5.pull-subscribe-frame","Открыть живой канал из frame-приложения Bitrix24 и реагировать на push-события через useB24Helper + Pull-клиент.",{"title":440,"path":441,"stem":442,"restApiVersion":15,"category":362,"description":443,"badge":15},"Telegram-бот","\u002Fdocs\u002Fexamples\u002Ftelegram-bot","docs\u002F99.examples\u002F6.telegram-bot","Опрашивает новые сделки CRM каждые две минуты; уведомляет Telegram-чат HTML-карточкой.",{"title":445,"path":446,"stem":447,"restApiVersion":15,"category":362,"description":448,"badge":15},"Обработчик вебхуков","\u002Fdocs\u002Fexamples\u002Fwebhook-handler","docs\u002F99.examples\u002F7.webhook-handler","Express-сервер, который принимает исходящие события Bitrix24, подгружает детали через REST, маршрутизирует по имени события. Всегда возвращает 200.",{"title":450,"path":451,"stem":452,"restApiVersion":15,"category":362,"description":453,"badge":15},"AI-ассистент","\u002Fdocs\u002Fexamples\u002Fai-assistant","docs\u002F99.examples\u002F8.ai-assistant","Загружает сделку и её дела, спрашивает у GPT-4o лучшее следующее действие, создаёт задачу, привязанную к сделке, с приоритетом и дедлайном.",{"title":455,"path":456,"stem":457,"restApiVersion":15,"category":362,"description":458,"badge":15},"Веб-поиск + LLM","\u002Fdocs\u002Fexamples\u002Fweb-search-llm","docs\u002F99.examples\u002F9.web-search-llm","Двухшаговый RAG: запрос к любому провайдеру веб-поиска, прогон результата через ваш LLM с цитатами [N], публикация ответа комментарием в таймлайн CRM на сделке.",{"id":460,"title":461,"audited":462,"badge":15,"body":463,"category":91,"description":115,"extension":3606,"links":3607,"meta":3621,"navigation":3622,"path":113,"restApiVersion":96,"seo":3623,"stem":114,"__hash__":3624},"docs\u002Fdocs\u002F2.working-with-the-rest-api\u002F2.fetch-list-rest-api-ver3.md","FetchListV3.make","2026-07-01",{"type":464,"value":465,"toc":3585},"minimark",[466,471,496,499,829,834,857,861,919,923,930,1200,1204,1222,1225,1238,1242,1246,1278,1357,1361,1371,1405,1409,1420,1423,1461,1468,1566,1569,1613,1616,1629,2018,2020,2024,3256,3260,3283,3479,3488,3492,3581],[467,468,470],"h2",{"id":469},"overview","Обзор",[472,473,474,475,489],"p",{},"Когда нужно обработать большие объёмы данных из list-методов REST API версии 3 по частям (чанками), используйте ",[476,477,481,486,490,493],"code",{"className":478,"language":479,"style":480},"language-ts-type shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","ts-type","",[482,483,485],"span",{"class":484},"sBMFI","FetchListV3",[482,487,489],{"class":488},"sMK4o",".",[482,491,492],{"class":484},"make",[482,494,495],{"class":488},"()",[472,497,498],{},"Метод реализует быстрый алгоритм итерации по большим наборам данных без загрузки всех данных в память сразу. Каждая итерация возвращает следующую страницу\u002Fпакет результатов, пока не получены все данные.",[500,501,505],"pre",{"className":502,"code":503,"language":504,"meta":480,"style":480},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F Базовое использование\nconst generator = $b24.actions.v3.fetchList.make({\n  method: 'main.eventlog.list',\n  params: {\n    filter: [\n      ['userId', '=', 1]\n    ],\n    select: ['id', 'userId']\n  },\n  idKey: 'id',\n  customKeyForResult: 'items',\n  requestId: 'unique-request-id',\n  limit: 600\n})\n\nfor await (const chunk of generator) {\n  \u002F\u002F Обработка чанка (например, сохранение в БД, анализ и т.д.)\n  console.log(`Processing ${chunk.length} items`)\n}\n","ts",[476,506,507,515,557,580,591,602,633,641,669,675,691,708,725,736,745,752,778,784,823],{"__ignoreMap":480},[482,508,511],{"class":509,"line":510},"line",1,[482,512,514],{"class":513},"sHwdD","\u002F\u002F Базовое использование\n",[482,516,518,522,526,529,532,534,536,538,541,543,546,548,551,554],{"class":509,"line":517},2,[482,519,521],{"class":520},"spNyl","const",[482,523,525],{"class":524},"sTEyZ"," generator ",[482,527,528],{"class":488},"=",[482,530,531],{"class":524}," $b24",[482,533,489],{"class":488},[482,535,91],{"class":524},[482,537,489],{"class":488},[482,539,540],{"class":524},"v3",[482,542,489],{"class":488},[482,544,545],{"class":524},"fetchList",[482,547,489],{"class":488},[482,549,492],{"class":550},"s2Zo4",[482,552,553],{"class":524},"(",[482,555,556],{"class":488},"{\n",[482,558,560,564,567,570,574,577],{"class":509,"line":559},3,[482,561,563],{"class":562},"swJcz","  method",[482,565,566],{"class":488},":",[482,568,569],{"class":488}," '",[482,571,573],{"class":572},"sfazB","main.eventlog.list",[482,575,576],{"class":488},"'",[482,578,579],{"class":488},",\n",[482,581,583,586,588],{"class":509,"line":582},4,[482,584,585],{"class":562},"  params",[482,587,566],{"class":488},[482,589,590],{"class":488}," {\n",[482,592,594,597,599],{"class":509,"line":593},5,[482,595,596],{"class":562},"    filter",[482,598,566],{"class":488},[482,600,601],{"class":524}," [\n",[482,603,605,608,610,613,615,618,620,622,624,626,630],{"class":509,"line":604},6,[482,606,607],{"class":524},"      [",[482,609,576],{"class":488},[482,611,612],{"class":572},"userId",[482,614,576],{"class":488},[482,616,617],{"class":488},",",[482,619,569],{"class":488},[482,621,528],{"class":572},[482,623,576],{"class":488},[482,625,617],{"class":488},[482,627,629],{"class":628},"sbssI"," 1",[482,631,632],{"class":524},"]\n",[482,634,636,639],{"class":509,"line":635},7,[482,637,638],{"class":524},"    ]",[482,640,579],{"class":488},[482,642,644,647,649,652,654,657,659,661,663,665,667],{"class":509,"line":643},8,[482,645,646],{"class":562},"    select",[482,648,566],{"class":488},[482,650,651],{"class":524}," [",[482,653,576],{"class":488},[482,655,656],{"class":572},"id",[482,658,576],{"class":488},[482,660,617],{"class":488},[482,662,569],{"class":488},[482,664,612],{"class":572},[482,666,576],{"class":488},[482,668,632],{"class":524},[482,670,672],{"class":509,"line":671},9,[482,673,674],{"class":488},"  },\n",[482,676,678,681,683,685,687,689],{"class":509,"line":677},10,[482,679,680],{"class":562},"  idKey",[482,682,566],{"class":488},[482,684,569],{"class":488},[482,686,656],{"class":572},[482,688,576],{"class":488},[482,690,579],{"class":488},[482,692,694,697,699,701,704,706],{"class":509,"line":693},11,[482,695,696],{"class":562},"  customKeyForResult",[482,698,566],{"class":488},[482,700,569],{"class":488},[482,702,703],{"class":572},"items",[482,705,576],{"class":488},[482,707,579],{"class":488},[482,709,711,714,716,718,721,723],{"class":509,"line":710},12,[482,712,713],{"class":562},"  requestId",[482,715,566],{"class":488},[482,717,569],{"class":488},[482,719,720],{"class":572},"unique-request-id",[482,722,576],{"class":488},[482,724,579],{"class":488},[482,726,728,731,733],{"class":509,"line":727},13,[482,729,730],{"class":562},"  limit",[482,732,566],{"class":488},[482,734,735],{"class":628}," 600\n",[482,737,739,742],{"class":509,"line":738},14,[482,740,741],{"class":488},"}",[482,743,744],{"class":524},")\n",[482,746,748],{"class":509,"line":747},15,[482,749,751],{"emptyLinePlaceholder":750},true,"\n",[482,753,755,759,762,765,767,770,773,776],{"class":509,"line":754},16,[482,756,758],{"class":757},"s7zQu","for",[482,760,761],{"class":757}," await",[482,763,764],{"class":524}," (",[482,766,521],{"class":520},[482,768,769],{"class":524}," chunk ",[482,771,772],{"class":488},"of",[482,774,775],{"class":524}," generator) ",[482,777,556],{"class":488},[482,779,781],{"class":509,"line":780},17,[482,782,783],{"class":513},"  \u002F\u002F Обработка чанка (например, сохранение в БД, анализ и т.д.)\n",[482,785,787,790,792,795,797,800,803,806,809,811,814,816,819,821],{"class":509,"line":786},18,[482,788,789],{"class":524},"  console",[482,791,489],{"class":488},[482,793,794],{"class":550},"log",[482,796,553],{"class":562},[482,798,799],{"class":488},"`",[482,801,802],{"class":572},"Processing ",[482,804,805],{"class":488},"${",[482,807,808],{"class":524},"chunk",[482,810,489],{"class":488},[482,812,813],{"class":524},"length",[482,815,741],{"class":488},[482,817,818],{"class":572}," items",[482,820,799],{"class":488},[482,822,744],{"class":562},[482,824,826],{"class":509,"line":825},19,[482,827,828],{"class":488},"}\n",[830,831,833],"h3",{"id":832},"when-to-use-fetchlistv3make","Когда использовать FetchListV3.make()",[835,836,837,845,851],"ol",{},[838,839,840,844],"li",{},[841,842,843],"strong",{},"Очень большие объёмы данных",": когда число записей в тысячах или десятках тысяч.",[838,846,847,850],{},[841,848,849],{},"Потоковая обработка",": когда данные нужно обрабатывать по мере поступления.",[838,852,853,856],{},[841,854,855],{},"Длительные операции",": когда обработка каждой записи требует значительного времени.",[467,858,860],{"id":859},"method-signature","Сигнатура метода",[500,862,864],{"className":478,"code":863,"language":479,"meta":480,"style":480},"make\u003CT = unknown>(\n  options: ActionFetchListV3\n): AsyncGenerator\u003CT[]>\n",[476,865,866,888,899],{"__ignoreMap":480},[482,867,868,870,873,876,879,882,885],{"class":509,"line":510},[482,869,492],{"class":484},[482,871,872],{"class":488},"\u003C",[482,874,875],{"class":484},"T",[482,877,878],{"class":524}," = ",[482,880,881],{"class":484},"unknown",[482,883,884],{"class":488},">",[482,886,887],{"class":524},"(\n",[482,889,890,894,896],{"class":509,"line":517},[482,891,893],{"class":892},"sHdIc","  options",[482,895,566],{"class":488},[482,897,898],{"class":484}," ActionFetchListV3\n",[482,900,901,904,906,909,911,913,916],{"class":509,"line":559},[482,902,903],{"class":524},")",[482,905,566],{"class":488},[482,907,908],{"class":484}," AsyncGenerator",[482,910,872],{"class":488},[482,912,875],{"class":484},[482,914,915],{"class":524},"[]",[482,917,918],{"class":488},">\n",[830,920,922],{"id":921},"parameters","Параметры",[472,924,925,926,929],{},"Объект ",[476,927,928],{},"options"," содержит следующие свойства:",[931,932,933,952],"table",{},[934,935,936],"thead",{},[937,938,939,943,946,949],"tr",{},[940,941,942],"th",{},"Параметр",[940,944,945],{},"Тип",[940,947,948],{},"Обязательный",[940,950,951],{},"Описание",[953,954,955,986,1066,1093,1129,1152,1172],"tbody",{},[937,956,957,965,972,975],{},[958,959,960],"td",{},[841,961,962],{},[476,963,964],{},"method",[958,966,967],{},[476,968,969],{"className":478,"language":479,"style":480},[482,970,971],{"class":484},"string",[958,973,974],{},"Да",[958,976,977,978,981,982,985],{},"Имя метода REST API, возвращающего список данных (например, ",[476,979,980],{},"crm.contact.list",", ",[476,983,984],{},"tasks.task.list",").",[937,987,988,995,1028,1031],{},[958,989,990],{},[841,991,992],{},[476,993,994],{},"params",[958,996,997],{},[476,998,999,1002,1004,1007,1009,1011,1014,1016,1019,1021,1024,1026],{"className":478,"language":479,"style":480},[482,1000,1001],{"class":484},"Omit",[482,1003,872],{"class":488},[482,1005,1006],{"class":484},"TypeCallParams",[482,1008,617],{"class":488},[482,1010,569],{"class":488},[482,1012,1013],{"class":572},"pagination",[482,1015,576],{"class":488},[482,1017,1018],{"class":488}," |",[482,1020,569],{"class":488},[482,1022,1023],{"class":572},"order",[482,1025,576],{"class":488},[482,1027,884],{"class":488},[958,1029,1030],{},"Нет",[958,1032,1033,1034,1036,1037,1039,1040,1042,1043,1045,1046,1049,1050,1053,1054,1059,1060,1036,1063,489],{},"Параметры запроса без ",[476,1035,1013],{}," и ",[476,1038,1023],{},". Параметр ",[476,1041,1013],{}," зарезервирован, так как метод получает все данные одним вызовом. Параметр ",[476,1044,1023],{}," зарезервирован, так как курсорной пагинации нужна строгая сортировка по ",[476,1047,1048],{},"cursorIdKey"," (по умолчанию равен ",[476,1051,1052],{},"idKey",") по возрастанию — см. ",[1055,1056,1058],"a",{"href":1057},"#limitations","Ограничения",". Для сужения выборки используйте ",[476,1061,1062],{},"filter",[476,1064,1065],{},"select",[937,1067,1068,1074,1080,1082],{},[958,1069,1070],{},[841,1071,1072],{},[476,1073,1052],{},[958,1075,1076],{},[476,1077,1078],{"className":478,"language":479,"style":480},[482,1079,971],{"class":484},[958,1081,1030],{},[958,1083,1084,1085,1088,1089,1092],{},"Имя поля id ",[841,1086,1087],{},"так, как оно приходит в каждом элементе ответа","; его значение управляет курсором. По умолчанию: ",[476,1090,1091],{},"'id'",". Задайте под то поле id, которое возвращает метод.",[937,1094,1095,1101,1107,1109],{},[958,1096,1097],{},[841,1098,1099],{},[476,1100,1048],{},[958,1102,1103],{},[476,1104,1105],{"className":478,"language":479,"style":480},[482,1106,971],{"class":484},[958,1108,1030],{},[958,1110,1111,1112,1115,1116,1118,1119,1122,1123,1125,1126,489],{},"Имя поля, используемое в ",[841,1113,1114],{},"запросе"," для ",[476,1117,1023],{}," и постраничного фильтра ",[476,1120,1121],{},"[field, '>', n]",". По умолчанию равно ",[476,1124,1052],{},". Задавайте, только когда имя сортируемого \u002F фильтруемого поля отличается от поля в ответе (например, поле запроса в верхнем регистре, а id в ответе в нижнем): передайте ",[476,1127,1128],{},"idKey: 'id', cursorIdKey: 'ID'",[937,1130,1131,1138,1144,1146],{},[958,1132,1133],{},[841,1134,1135],{},[476,1136,1137],{},"customKeyForResult",[958,1139,1140],{},[476,1141,1142],{"className":478,"language":479,"style":480},[482,1143,971],{"class":484},[958,1145,974],{},[958,1147,1148,1149,1151],{},"Ключ, по которому в ответе REST API будет выбран массив данных. Например: ",[476,1150,703],{}," для списка элементов CRM.",[937,1153,1154,1161,1167,1169],{},[958,1155,1156],{},[841,1157,1158],{},[476,1159,1160],{},"requestId",[958,1162,1163],{},[476,1164,1165],{"className":478,"language":479,"style":480},[482,1166,971],{"class":484},[958,1168,1030],{},[958,1170,1171],{},"Уникальный идентификатор запроса для отслеживания. Используется для дедупликации запросов и отладки.",[937,1173,1174,1181,1188,1190],{},[958,1175,1176],{},[841,1177,1178],{},[476,1179,1180],{},"limit",[958,1182,1183],{},[476,1184,1185],{"className":478,"language":479,"style":480},[482,1186,1187],{"class":484},"number",[958,1189,1030],{},[958,1191,1192,1193,1196,1197,489],{},"Сколько записей получать за раз. По умолчанию ",[476,1194,1195],{},"50",". Максимум ",[476,1198,1199],{},"1000",[830,1201,1203],{"id":1202},"return-value","Возвращаемое значение",[472,1205,1206,1219,1220,489],{},[476,1207,1208,1211,1213,1215,1217],{"className":478,"language":479,"style":480},[482,1209,1210],{"class":484},"AsyncGenerator",[482,1212,872],{"class":488},[482,1214,875],{"class":484},[482,1216,915],{"class":524},[482,1218,884],{"class":488}," — асинхронный генератор, возвращающий чанки данных в виде массивов типа ",[476,1221,875],{},[472,1223,1224],{},"Каждая итерация генератора возвращает:",[1226,1227,1228,1235],"ul",{},[838,1229,1230,1231,1234],{},"Массив элементов (чанк) до ",[476,1232,1233],{},"options.limit"," записей.",[838,1236,1237],{},"Генератор завершается, когда все данные получены.",[467,1239,1241],{"id":1240},"key-concepts","Ключевые понятия",[830,1243,1245],{"id":1244},"asyncgenerator-vs-promise","AsyncGenerator vs Promise",[472,1247,1248,1249,1260,1261,1266,1267,1277],{},"В отличие от ",[476,1250,1251,1254,1256,1258],{"className":478,"language":479,"style":480},[482,1252,1253],{"class":484},"CallListV3",[482,1255,489],{"class":488},[482,1257,492],{"class":484},[482,1259,495],{"class":488},", который возвращает ",[476,1262,1263],{"className":478,"language":479,"style":480},[482,1264,1265],{"class":484},"Promise"," со всеми данными сразу, ",[476,1268,1269,1271,1273,1275],{"className":478,"language":479,"style":480},[482,1270,485],{"class":484},[482,1272,489],{"class":488},[482,1274,492],{"class":484},[482,1276,495],{"class":488}," возвращает асинхронный генератор:",[931,1279,1280,1297],{},[934,1281,1282],{},[937,1283,1284,1287,1292],{},[940,1285,1286],{},"Аспект",[940,1288,1289],{},[476,1290,1291],{},"CallListV3.make()",[940,1293,1294],{},[476,1295,1296],{},"FetchListV3.make()",[953,1298,1299,1315,1328,1345],{},[937,1300,1301,1305,1310],{},[958,1302,1303],{},[841,1304,1203],{},[958,1306,1307],{},[476,1308,1309],{},"Promise\u003CResult\u003CT[]>>",[958,1311,1312],{},[476,1313,1314],{},"AsyncGenerator\u003CT[]>",[937,1316,1317,1322,1325],{},[958,1318,1319],{},[841,1320,1321],{},"Память",[958,1323,1324],{},"Загружает все данные в память",[958,1326,1327],{},"Обрабатывает данные по частям",[937,1329,1330,1335,1340],{},[958,1331,1332],{},[841,1333,1334],{},"Использование",[958,1336,1337],{},[476,1338,1339],{},"await response.getData()",[958,1341,1342],{},[476,1343,1344],{},"for await (const chunk of generator)",[937,1346,1347,1352,1355],{},[958,1348,1349],{},[841,1350,1351],{},"Подходит для",[958,1353,1354],{},"Малые и средние объёмы данных",[958,1356,843],{},[830,1358,1360],{"id":1359},"performance-optimization","Оптимизация производительности",[472,1362,1363,1364,1370],{},"Метод реализует ",[1055,1365,1369],{"href":1366,"rel":1367},"https:\u002F\u002Fapidocs.bitrix24.ru\u002Fsettings\u002Fperformance\u002Fhuge-data.html",[1368],"nofollow","рекомендованный Bitrix24 алгоритм"," для эффективной работы с большими объёмами данных:",[835,1372,1373,1385,1390],{},[838,1374,1375,1378,1379,1382,1383,985],{},[841,1376,1377],{},"Фильтрация по возрастающему id",": каждый следующий запрос использует фильтр ",[476,1380,1381],{},"[cursorIdKey, '>', id]"," с id последнего полученного элемента (читается через ",[476,1384,1052],{},[838,1386,1387,1389],{},[841,1388,849],{},": данные обрабатываются по мере поступления, экономя память.",[838,1391,1392,1395,1396,1398,1399,1401,1402,1404],{},[841,1393,1394],{},"Автоматическое определение конца данных",": запросы останавливаются при получении пустого массива или когда страница короче самой большой из виденных. Это привязывает остановку к размеру страницы, который реально возвращает сервер, а не к запрошенному ",[476,1397,1233],{},", поэтому метод, молча ограничивающий страницу ниже ",[476,1400,1180],{}," (например, ",[476,1403,984],{},", зафиксирован на 50), всё равно проходит все записи, а не останавливается после первой урезанной страницы.",[830,1406,1408],{"id":1407},"rest-api-v3-response-structure","Структура ответа REST API v3",[1410,1411,1412],"note",{},[472,1413,1414,1415,1419],{},"Параметр ",[476,1416,1417],{"className":478,"language":479,"style":480},[482,1418,1137],{"class":484}," сохранён для обратной совместимости. В будущем после анализа реального использования будет принято решение о его необходимости.",[472,1421,1422],{},"В REST API версии 3 разные методы возвращают данные в одинаковых структурах:",[1226,1424,1425],{},[838,1426,1427,1430,1431],{},[841,1428,1429],{},"Сгруппированный массив",": ",[476,1432,1433,1436,1439,1441,1444,1446,1448,1450,1453,1456,1458],{"className":478,"language":479,"style":480},[482,1434,1435],{"class":488},"{",[482,1437,1438],{"class":562}," result",[482,1440,566],{"class":488},[482,1442,1443],{"class":488}," {",[482,1445,818],{"class":562},[482,1447,566],{"class":488},[482,1449,651],{"class":524},[482,1451,1452],{"class":488},"...",[482,1454,1455],{"class":524},"] ",[482,1457,741],{"class":488},[482,1459,1460],{"class":488}," }",[472,1462,1414,1463,1467],{},[476,1464,1465],{"className":478,"language":479,"style":480},[482,1466,1137],{"class":484}," позволяет указать ключ, по которому расположены данные в ответе.",[1410,1469,1470],{},[472,1471,1472,1473,1476,1477,1482,1483,1485,1486,1515,1516,1519,1520,1530,1531,1535,1536,1560,1561,1565],{},"Некоторые v3 list-методы (например, ",[476,1474,1475],{},"note.*",") также возвращают в конверте ответа поле ",[476,1478,1479],{"className":478,"language":479,"style":480},[482,1480,1481],{"class":484},"nextCursor"," рядом с ",[476,1484,703],{}," — ",[476,1487,1488,1490,1492,1494,1496,1499,1501,1503,1505,1507,1509,1511,1513],{"className":478,"language":479,"style":480},[482,1489,1435],{"class":488},[482,1491,1438],{"class":562},[482,1493,566],{"class":488},[482,1495,1443],{"class":488},[482,1497,1498],{"class":562}," nextCursor",[482,1500,617],{"class":488},[482,1502,818],{"class":562},[482,1504,566],{"class":488},[482,1506,651],{"class":524},[482,1508,1452],{"class":488},[482,1510,1455],{"class":524},[482,1512,741],{"class":488},[482,1514,1460],{"class":488},". Читать или передавать его ",[841,1517,1518],{},"не"," нужно: ",[476,1521,1522,1524,1526,1528],{"className":478,"language":479,"style":480},[482,1523,485],{"class":484},[482,1525,489],{"class":488},[482,1527,492],{"class":484},[482,1529,495],{"class":488}," листает собственным курсором по ",[476,1532,1533],{"className":478,"language":479,"style":480},[482,1534,1052],{"class":484}," (внедрённый фильтр ",[476,1537,1538,1541,1544,1546,1548,1550,1552,1554,1557],{"className":478,"language":479,"style":480},[482,1539,1540],{"class":524},"[",[482,1542,1543],{"class":484},"idField",[482,1545,617],{"class":488},[482,1547,569],{"class":488},[482,1549,884],{"class":572},[482,1551,576],{"class":488},[482,1553,617],{"class":488},[482,1555,1556],{"class":484}," n",[482,1558,1559],{"class":524},"]",") и проходит все страницы независимо от ",[476,1562,1563],{"className":478,"language":479,"style":480},[482,1564,1481],{"class":484},". Поле информационное; SDK его игнорирует.",[830,1567,1058],{"id":1568},"limitations",[1226,1570,1571,1580,1607],{},[838,1572,1573,1576,1577,1579],{},[841,1574,1575],{},"Размер страницы",": ограничение Bitrix24 REST API версии 3 — максимум ",[476,1578,1199],{}," записей на запрос.",[838,1581,1582,1585,1586,1049,1588,1590,1591,1594,1595,1597,1598,1600,1601,1604,1605,489],{},[841,1583,1584],{},"Сортировка фиксирована",": метод всегда сортирует по ",[476,1587,1048],{},[476,1589,1052],{},") по возрастанию, потому что курсорная пагинация опирается на фильтры ",[476,1592,1593],{},"[cursorIdKey, '>', nextId]"," для прохождения по набору. Пользовательское значение ",[476,1596,1023],{}," нарушило бы этот инвариант, поэтому сигнатура типа исключает ",[476,1599,1023],{},", а любое значение, переданное в runtime, отбрасывается с записью ",[476,1602,1603],{},"warning"," в лог. Для сужения выборки используйте ",[476,1606,1062],{},[838,1608,1609,1612],{},[841,1610,1611],{},"Только для list-методов",": предназначен только для методов, возвращающих массивы данных.",[467,1614,375],{"id":1615},"error-handling",[472,1617,1618,1619,566],{},"Поскольку метод возвращает асинхронный генератор, ошибки обрабатываются иначе, чем в ",[476,1620,1621,1623,1625,1627],{"className":478,"language":479,"style":480},[482,1622,1253],{"class":484},[482,1624,489],{"class":488},[482,1626,492],{"class":484},[482,1628,495],{"class":488},[500,1630,1632],{"className":502,"code":1631,"language":504,"meta":480,"style":480},"import { SdkError } from '@bitrix24\u002Fb24jssdk'\n\ntry {\n  const generator = $b24.actions.v3.fetchList.make({\n    method: 'some.method',\n    params: { \u002F* some_params *\u002F },\n    idKey: 'id',\n    customKeyForResult: 'items',\n    requestId: 'unique-request-id',\n    limit: 600\n  })\n\n  for await (const chunk of generator) {\n    \u002F\u002F Обработка чанка (например, сохранение в БД, анализ и т.д.)\n    console.log(`Processing ${chunk.length} items`)\n  }\n} catch (error) {\n  \u002F\u002F Обработка ошибки\n  if (\n    error instanceof SdkError\n    && error.code === 'JSSDK_CORE_B24_FETCH_LIST_METHOD_API_V3'\n  ) {\n    console.error(`${error.message}`, { code: error.code })\n  } else {\n    console.error('Some error', error)\n  }\n}\n",[476,1633,1634,1657,1661,1668,1701,1717,1732,1747,1762,1777,1786,1793,1797,1821,1826,1857,1862,1874,1879,1887,1899,1922,1930,1974,1984,2008,2013],{"__ignoreMap":480},[482,1635,1636,1639,1641,1644,1646,1649,1651,1654],{"class":509,"line":510},[482,1637,1638],{"class":757},"import",[482,1640,1443],{"class":488},[482,1642,1643],{"class":524}," SdkError",[482,1645,1460],{"class":488},[482,1647,1648],{"class":757}," from",[482,1650,569],{"class":488},[482,1652,1653],{"class":572},"@bitrix24\u002Fb24jssdk",[482,1655,1656],{"class":488},"'\n",[482,1658,1659],{"class":509,"line":517},[482,1660,751],{"emptyLinePlaceholder":750},[482,1662,1663,1666],{"class":509,"line":559},[482,1664,1665],{"class":757},"try",[482,1667,590],{"class":488},[482,1669,1670,1673,1676,1679,1681,1683,1685,1687,1689,1691,1693,1695,1697,1699],{"class":509,"line":582},[482,1671,1672],{"class":520},"  const",[482,1674,1675],{"class":524}," generator",[482,1677,1678],{"class":488}," =",[482,1680,531],{"class":524},[482,1682,489],{"class":488},[482,1684,91],{"class":524},[482,1686,489],{"class":488},[482,1688,540],{"class":524},[482,1690,489],{"class":488},[482,1692,545],{"class":524},[482,1694,489],{"class":488},[482,1696,492],{"class":550},[482,1698,553],{"class":562},[482,1700,556],{"class":488},[482,1702,1703,1706,1708,1710,1713,1715],{"class":509,"line":593},[482,1704,1705],{"class":562},"    method",[482,1707,566],{"class":488},[482,1709,569],{"class":488},[482,1711,1712],{"class":572},"some.method",[482,1714,576],{"class":488},[482,1716,579],{"class":488},[482,1718,1719,1722,1724,1726,1729],{"class":509,"line":604},[482,1720,1721],{"class":562},"    params",[482,1723,566],{"class":488},[482,1725,1443],{"class":488},[482,1727,1728],{"class":513}," \u002F* some_params *\u002F",[482,1730,1731],{"class":488}," },\n",[482,1733,1734,1737,1739,1741,1743,1745],{"class":509,"line":635},[482,1735,1736],{"class":562},"    idKey",[482,1738,566],{"class":488},[482,1740,569],{"class":488},[482,1742,656],{"class":572},[482,1744,576],{"class":488},[482,1746,579],{"class":488},[482,1748,1749,1752,1754,1756,1758,1760],{"class":509,"line":643},[482,1750,1751],{"class":562},"    customKeyForResult",[482,1753,566],{"class":488},[482,1755,569],{"class":488},[482,1757,703],{"class":572},[482,1759,576],{"class":488},[482,1761,579],{"class":488},[482,1763,1764,1767,1769,1771,1773,1775],{"class":509,"line":671},[482,1765,1766],{"class":562},"    requestId",[482,1768,566],{"class":488},[482,1770,569],{"class":488},[482,1772,720],{"class":572},[482,1774,576],{"class":488},[482,1776,579],{"class":488},[482,1778,1779,1782,1784],{"class":509,"line":677},[482,1780,1781],{"class":562},"    limit",[482,1783,566],{"class":488},[482,1785,735],{"class":628},[482,1787,1788,1791],{"class":509,"line":693},[482,1789,1790],{"class":488},"  }",[482,1792,744],{"class":562},[482,1794,1795],{"class":509,"line":710},[482,1796,751],{"emptyLinePlaceholder":750},[482,1798,1799,1802,1804,1806,1808,1811,1814,1816,1819],{"class":509,"line":727},[482,1800,1801],{"class":757},"  for",[482,1803,761],{"class":757},[482,1805,764],{"class":562},[482,1807,521],{"class":520},[482,1809,1810],{"class":524}," chunk",[482,1812,1813],{"class":488}," of",[482,1815,1675],{"class":524},[482,1817,1818],{"class":562},") ",[482,1820,556],{"class":488},[482,1822,1823],{"class":509,"line":738},[482,1824,1825],{"class":513},"    \u002F\u002F Обработка чанка (например, сохранение в БД, анализ и т.д.)\n",[482,1827,1828,1831,1833,1835,1837,1839,1841,1843,1845,1847,1849,1851,1853,1855],{"class":509,"line":747},[482,1829,1830],{"class":524},"    console",[482,1832,489],{"class":488},[482,1834,794],{"class":550},[482,1836,553],{"class":562},[482,1838,799],{"class":488},[482,1840,802],{"class":572},[482,1842,805],{"class":488},[482,1844,808],{"class":524},[482,1846,489],{"class":488},[482,1848,813],{"class":524},[482,1850,741],{"class":488},[482,1852,818],{"class":572},[482,1854,799],{"class":488},[482,1856,744],{"class":562},[482,1858,1859],{"class":509,"line":754},[482,1860,1861],{"class":488},"  }\n",[482,1863,1864,1866,1869,1872],{"class":509,"line":780},[482,1865,741],{"class":488},[482,1867,1868],{"class":757}," catch",[482,1870,1871],{"class":524}," (error) ",[482,1873,556],{"class":488},[482,1875,1876],{"class":509,"line":786},[482,1877,1878],{"class":513},"  \u002F\u002F Обработка ошибки\n",[482,1880,1881,1884],{"class":509,"line":825},[482,1882,1883],{"class":757},"  if",[482,1885,1886],{"class":562}," (\n",[482,1888,1890,1893,1896],{"class":509,"line":1889},20,[482,1891,1892],{"class":524},"    error",[482,1894,1895],{"class":488}," instanceof",[482,1897,1898],{"class":484}," SdkError\n",[482,1900,1902,1905,1908,1910,1912,1915,1917,1920],{"class":509,"line":1901},21,[482,1903,1904],{"class":488},"    &&",[482,1906,1907],{"class":524}," error",[482,1909,489],{"class":488},[482,1911,476],{"class":524},[482,1913,1914],{"class":488}," ===",[482,1916,569],{"class":488},[482,1918,1919],{"class":572},"JSSDK_CORE_B24_FETCH_LIST_METHOD_API_V3",[482,1921,1656],{"class":488},[482,1923,1925,1928],{"class":509,"line":1924},22,[482,1926,1927],{"class":562},"  ) ",[482,1929,556],{"class":488},[482,1931,1933,1935,1937,1940,1942,1945,1947,1949,1952,1955,1957,1959,1962,1964,1966,1968,1970,1972],{"class":509,"line":1932},23,[482,1934,1830],{"class":524},[482,1936,489],{"class":488},[482,1938,1939],{"class":550},"error",[482,1941,553],{"class":562},[482,1943,1944],{"class":488},"`${",[482,1946,1939],{"class":524},[482,1948,489],{"class":488},[482,1950,1951],{"class":524},"message",[482,1953,1954],{"class":488},"}`",[482,1956,617],{"class":488},[482,1958,1443],{"class":488},[482,1960,1961],{"class":562}," code",[482,1963,566],{"class":488},[482,1965,1907],{"class":524},[482,1967,489],{"class":488},[482,1969,476],{"class":524},[482,1971,1460],{"class":488},[482,1973,744],{"class":562},[482,1975,1977,1979,1982],{"class":509,"line":1976},24,[482,1978,1790],{"class":488},[482,1980,1981],{"class":757}," else",[482,1983,590],{"class":488},[482,1985,1987,1989,1991,1993,1995,1997,2000,2002,2004,2006],{"class":509,"line":1986},25,[482,1988,1830],{"class":524},[482,1990,489],{"class":488},[482,1992,1939],{"class":550},[482,1994,553],{"class":562},[482,1996,576],{"class":488},[482,1998,1999],{"class":572},"Some error",[482,2001,576],{"class":488},[482,2003,617],{"class":488},[482,2005,1907],{"class":524},[482,2007,744],{"class":562},[482,2009,2011],{"class":509,"line":2010},26,[482,2012,1861],{"class":488},[482,2014,2016],{"class":509,"line":2015},27,[482,2017,828],{"class":488},[467,2019,352],{"id":362},[830,2021,2023],{"id":2022},"step-by-step-processing-of-a-large-number-of-event-log-items","Поэтапная обработка большого числа элементов журнала событий",[500,2025,2028],{"className":502,"code":2026,"filename":2027,"language":504,"meta":480,"style":480},"import { B24Hook, LoggerFactory, Text, SdkError, AjaxError } from '@bitrix24\u002Fb24jssdk'\n\ntype MainEventLogItem = {\n  id: number\n  userId: number\n}\n\nconst devMode = !!(typeof import.meta !== 'undefined' && (import.meta.dev || import.meta.env?.DEV))\nconst $logger = LoggerFactory.createForBrowser('Example:ProcessMainEventLogItems', devMode)\nconst $b24 = B24Hook.fromWebhookUrl('https:\u002F\u002Fyour_domain.bitrix24.com\u002Frest\u002F1\u002Fwebhook_code\u002F')\n\nasync function processMainEventLogItem(): Promise\u003Cvoid> {\n  let batchNumber = 0\n  let totalItems = 0\n\n  const sixMonthAgo = new Date()\n  sixMonthAgo.setMonth((new Date()).getMonth() - 6)\n  sixMonthAgo.setHours(0, 0, 0)\n  \n  const requestId = 'some-main-event-log-item-list'\n  \n  try {\n    const generator = $b24.actions.v3.fetchList.make\u003CMainEventLogItem>({\n      method: 'main.eventlog.list',\n      params: {\n        filter: [\n          ['timestampX', '>=', Text.toB24Format(sixMonthAgo)] \u002F\u002F созданы как минимум 6 месяцев назад\n        ],\n        select: ['id', 'userId']\n      },\n      idKey: 'id',\n      customKeyForResult: 'items',\n      requestId,\n      limit: 60\n    })\n    \n    for await (const chunk of generator) {\n      batchNumber++\n      totalItems += chunk.length\n\n      $logger.info(`Processing batch #${batchNumber}`, {\n        batchSize: chunk.length,\n        totalSoFar: totalItems\n      })\n      \n      \u002F\u002F Пример: сохранение в базу данных\n      await saveToDatabase(chunk)\n      \n      \u002F\u002F Пример: отправка в очередь сообщений\n      await sendToMessageQueue(chunk)\n    }\n    \n    $logger.notice(`Processed ${totalItems} elements in ${batchNumber} batches`)\n  } catch (error) {\n    if (error instanceof SdkError) {\n      $logger.error(`Processing error: ${error.message}`, {\n        code: error.code,\n        batchNumber,\n        totalItems\n      })\n    } else {\n      $logger.error('Unknown error', { error, batchNumber, totalItems })\n    }\n    throw error\n  }\n}\n\n\u002F\u002F Вспомогательные функции\n\u002F\u002F Реализация сохранения в базу данных\nasync function saveToDatabase(items: MainEventLogItem[]): Promise\u003Cvoid> {\n  await new Promise(resolve => setTimeout(resolve, 100)) \u002F\u002F Simulation\n}\n\n\u002F\u002F Реализация отправки в очередь сообщений\nasync function sendToMessageQueue(items: MainEventLogItem[]): Promise\u003Cvoid> {\n  await new Promise(resolve => setTimeout(resolve, 50)) \u002F\u002F Simulation\n}\n\n\u002F\u002F Использование\ntry {\n  await processMainEventLogItem()\n} catch (error) {\n  $logger.critical('A problem occurred', { error })\n}\n","ProcessMainEventLogItems.ts",[476,2029,2030,2068,2072,2084,2094,2103,2107,2111,2183,2213,2240,2244,2270,2283,2294,2298,2316,2353,2378,2383,2399,2403,2410,2448,2463,2472,2481,2522,2530,2556,2562,2578,2594,2602,2613,2621,2627,2649,2658,2674,2679,2708,2724,2735,2743,2749,2755,2770,2775,2781,2795,2801,2806,2847,2862,2880,2910,2926,2934,2940,2947,2956,2992,2997,3006,3011,3016,3021,3027,3033,3065,3101,3106,3111,3117,3148,3178,3183,3188,3194,3201,3210,3221,3251],{"__ignoreMap":480},[482,2031,2032,2034,2036,2039,2041,2044,2046,2049,2051,2053,2055,2058,2060,2062,2064,2066],{"class":509,"line":510},[482,2033,1638],{"class":757},[482,2035,1443],{"class":488},[482,2037,2038],{"class":524}," B24Hook",[482,2040,617],{"class":488},[482,2042,2043],{"class":524}," LoggerFactory",[482,2045,617],{"class":488},[482,2047,2048],{"class":524}," Text",[482,2050,617],{"class":488},[482,2052,1643],{"class":524},[482,2054,617],{"class":488},[482,2056,2057],{"class":524}," AjaxError",[482,2059,1460],{"class":488},[482,2061,1648],{"class":757},[482,2063,569],{"class":488},[482,2065,1653],{"class":572},[482,2067,1656],{"class":488},[482,2069,2070],{"class":509,"line":517},[482,2071,751],{"emptyLinePlaceholder":750},[482,2073,2074,2077,2080,2082],{"class":509,"line":559},[482,2075,2076],{"class":520},"type",[482,2078,2079],{"class":484}," MainEventLogItem",[482,2081,1678],{"class":488},[482,2083,590],{"class":488},[482,2085,2086,2089,2091],{"class":509,"line":582},[482,2087,2088],{"class":562},"  id",[482,2090,566],{"class":488},[482,2092,2093],{"class":484}," number\n",[482,2095,2096,2099,2101],{"class":509,"line":593},[482,2097,2098],{"class":562},"  userId",[482,2100,566],{"class":488},[482,2102,2093],{"class":484},[482,2104,2105],{"class":509,"line":604},[482,2106,828],{"class":488},[482,2108,2109],{"class":509,"line":635},[482,2110,751],{"emptyLinePlaceholder":750},[482,2112,2113,2115,2118,2120,2123,2125,2128,2131,2133,2136,2139,2141,2144,2146,2149,2151,2153,2155,2158,2160,2163,2166,2168,2170,2172,2174,2177,2180],{"class":509,"line":643},[482,2114,521],{"class":520},[482,2116,2117],{"class":524}," devMode ",[482,2119,528],{"class":488},[482,2121,2122],{"class":488}," !!",[482,2124,553],{"class":524},[482,2126,2127],{"class":488},"typeof",[482,2129,2130],{"class":757}," import",[482,2132,489],{"class":488},[482,2134,2135],{"class":524},"meta ",[482,2137,2138],{"class":488},"!==",[482,2140,569],{"class":488},[482,2142,2143],{"class":572},"undefined",[482,2145,576],{"class":488},[482,2147,2148],{"class":488}," &&",[482,2150,764],{"class":524},[482,2152,1638],{"class":757},[482,2154,489],{"class":488},[482,2156,2157],{"class":524},"meta",[482,2159,489],{"class":488},[482,2161,2162],{"class":524},"dev ",[482,2164,2165],{"class":488},"||",[482,2167,2130],{"class":757},[482,2169,489],{"class":488},[482,2171,2157],{"class":524},[482,2173,489],{"class":488},[482,2175,2176],{"class":524},"env",[482,2178,2179],{"class":488},"?.",[482,2181,2182],{"class":524},"DEV))\n",[482,2184,2185,2187,2190,2192,2194,2196,2199,2201,2203,2206,2208,2210],{"class":509,"line":671},[482,2186,521],{"class":520},[482,2188,2189],{"class":524}," $logger ",[482,2191,528],{"class":488},[482,2193,2043],{"class":524},[482,2195,489],{"class":488},[482,2197,2198],{"class":550},"createForBrowser",[482,2200,553],{"class":524},[482,2202,576],{"class":488},[482,2204,2205],{"class":572},"Example:ProcessMainEventLogItems",[482,2207,576],{"class":488},[482,2209,617],{"class":488},[482,2211,2212],{"class":524}," devMode)\n",[482,2214,2215,2217,2220,2222,2224,2226,2229,2231,2233,2236,2238],{"class":509,"line":677},[482,2216,521],{"class":520},[482,2218,2219],{"class":524}," $b24 ",[482,2221,528],{"class":488},[482,2223,2038],{"class":524},[482,2225,489],{"class":488},[482,2227,2228],{"class":550},"fromWebhookUrl",[482,2230,553],{"class":524},[482,2232,576],{"class":488},[482,2234,2235],{"class":572},"https:\u002F\u002Fyour_domain.bitrix24.com\u002Frest\u002F1\u002Fwebhook_code\u002F",[482,2237,576],{"class":488},[482,2239,744],{"class":524},[482,2241,2242],{"class":509,"line":693},[482,2243,751],{"emptyLinePlaceholder":750},[482,2245,2246,2249,2252,2255,2258,2261,2263,2266,2268],{"class":509,"line":710},[482,2247,2248],{"class":520},"async",[482,2250,2251],{"class":520}," function",[482,2253,2254],{"class":550}," processMainEventLogItem",[482,2256,2257],{"class":488},"():",[482,2259,2260],{"class":484}," Promise",[482,2262,872],{"class":488},[482,2264,2265],{"class":484},"void",[482,2267,884],{"class":488},[482,2269,590],{"class":488},[482,2271,2272,2275,2278,2280],{"class":509,"line":727},[482,2273,2274],{"class":520},"  let",[482,2276,2277],{"class":524}," batchNumber",[482,2279,1678],{"class":488},[482,2281,2282],{"class":628}," 0\n",[482,2284,2285,2287,2290,2292],{"class":509,"line":738},[482,2286,2274],{"class":520},[482,2288,2289],{"class":524}," totalItems",[482,2291,1678],{"class":488},[482,2293,2282],{"class":628},[482,2295,2296],{"class":509,"line":747},[482,2297,751],{"emptyLinePlaceholder":750},[482,2299,2300,2302,2305,2307,2310,2313],{"class":509,"line":754},[482,2301,1672],{"class":520},[482,2303,2304],{"class":524}," sixMonthAgo",[482,2306,1678],{"class":488},[482,2308,2309],{"class":488}," new",[482,2311,2312],{"class":550}," Date",[482,2314,2315],{"class":562},"()\n",[482,2317,2318,2321,2323,2326,2329,2332,2334,2337,2339,2342,2345,2348,2351],{"class":509,"line":780},[482,2319,2320],{"class":524},"  sixMonthAgo",[482,2322,489],{"class":488},[482,2324,2325],{"class":550},"setMonth",[482,2327,2328],{"class":562},"((",[482,2330,2331],{"class":488},"new",[482,2333,2312],{"class":550},[482,2335,2336],{"class":562},"())",[482,2338,489],{"class":488},[482,2340,2341],{"class":550},"getMonth",[482,2343,2344],{"class":562},"() ",[482,2346,2347],{"class":488},"-",[482,2349,2350],{"class":628}," 6",[482,2352,744],{"class":562},[482,2354,2355,2357,2359,2362,2364,2367,2369,2372,2374,2376],{"class":509,"line":786},[482,2356,2320],{"class":524},[482,2358,489],{"class":488},[482,2360,2361],{"class":550},"setHours",[482,2363,553],{"class":562},[482,2365,2366],{"class":628},"0",[482,2368,617],{"class":488},[482,2370,2371],{"class":628}," 0",[482,2373,617],{"class":488},[482,2375,2371],{"class":628},[482,2377,744],{"class":562},[482,2379,2380],{"class":509,"line":825},[482,2381,2382],{"class":562},"  \n",[482,2384,2385,2387,2390,2392,2394,2397],{"class":509,"line":1889},[482,2386,1672],{"class":520},[482,2388,2389],{"class":524}," requestId",[482,2391,1678],{"class":488},[482,2393,569],{"class":488},[482,2395,2396],{"class":572},"some-main-event-log-item-list",[482,2398,1656],{"class":488},[482,2400,2401],{"class":509,"line":1901},[482,2402,2382],{"class":562},[482,2404,2405,2408],{"class":509,"line":1924},[482,2406,2407],{"class":757},"  try",[482,2409,590],{"class":488},[482,2411,2412,2415,2417,2419,2421,2423,2425,2427,2429,2431,2433,2435,2437,2439,2442,2444,2446],{"class":509,"line":1932},[482,2413,2414],{"class":520},"    const",[482,2416,1675],{"class":524},[482,2418,1678],{"class":488},[482,2420,531],{"class":524},[482,2422,489],{"class":488},[482,2424,91],{"class":524},[482,2426,489],{"class":488},[482,2428,540],{"class":524},[482,2430,489],{"class":488},[482,2432,545],{"class":524},[482,2434,489],{"class":488},[482,2436,492],{"class":550},[482,2438,872],{"class":488},[482,2440,2441],{"class":484},"MainEventLogItem",[482,2443,884],{"class":488},[482,2445,553],{"class":562},[482,2447,556],{"class":488},[482,2449,2450,2453,2455,2457,2459,2461],{"class":509,"line":1976},[482,2451,2452],{"class":562},"      method",[482,2454,566],{"class":488},[482,2456,569],{"class":488},[482,2458,573],{"class":572},[482,2460,576],{"class":488},[482,2462,579],{"class":488},[482,2464,2465,2468,2470],{"class":509,"line":1986},[482,2466,2467],{"class":562},"      params",[482,2469,566],{"class":488},[482,2471,590],{"class":488},[482,2473,2474,2477,2479],{"class":509,"line":2010},[482,2475,2476],{"class":562},"        filter",[482,2478,566],{"class":488},[482,2480,601],{"class":562},[482,2482,2483,2486,2488,2491,2493,2495,2497,2500,2502,2504,2506,2508,2511,2513,2516,2519],{"class":509,"line":2015},[482,2484,2485],{"class":562},"          [",[482,2487,576],{"class":488},[482,2489,2490],{"class":572},"timestampX",[482,2492,576],{"class":488},[482,2494,617],{"class":488},[482,2496,569],{"class":488},[482,2498,2499],{"class":572},">=",[482,2501,576],{"class":488},[482,2503,617],{"class":488},[482,2505,2048],{"class":524},[482,2507,489],{"class":488},[482,2509,2510],{"class":550},"toB24Format",[482,2512,553],{"class":562},[482,2514,2515],{"class":524},"sixMonthAgo",[482,2517,2518],{"class":562},")] ",[482,2520,2521],{"class":513},"\u002F\u002F созданы как минимум 6 месяцев назад\n",[482,2523,2525,2528],{"class":509,"line":2524},28,[482,2526,2527],{"class":562},"        ]",[482,2529,579],{"class":488},[482,2531,2533,2536,2538,2540,2542,2544,2546,2548,2550,2552,2554],{"class":509,"line":2532},29,[482,2534,2535],{"class":562},"        select",[482,2537,566],{"class":488},[482,2539,651],{"class":562},[482,2541,576],{"class":488},[482,2543,656],{"class":572},[482,2545,576],{"class":488},[482,2547,617],{"class":488},[482,2549,569],{"class":488},[482,2551,612],{"class":572},[482,2553,576],{"class":488},[482,2555,632],{"class":562},[482,2557,2559],{"class":509,"line":2558},30,[482,2560,2561],{"class":488},"      },\n",[482,2563,2565,2568,2570,2572,2574,2576],{"class":509,"line":2564},31,[482,2566,2567],{"class":562},"      idKey",[482,2569,566],{"class":488},[482,2571,569],{"class":488},[482,2573,656],{"class":572},[482,2575,576],{"class":488},[482,2577,579],{"class":488},[482,2579,2581,2584,2586,2588,2590,2592],{"class":509,"line":2580},32,[482,2582,2583],{"class":562},"      customKeyForResult",[482,2585,566],{"class":488},[482,2587,569],{"class":488},[482,2589,703],{"class":572},[482,2591,576],{"class":488},[482,2593,579],{"class":488},[482,2595,2597,2600],{"class":509,"line":2596},33,[482,2598,2599],{"class":524},"      requestId",[482,2601,579],{"class":488},[482,2603,2605,2608,2610],{"class":509,"line":2604},34,[482,2606,2607],{"class":562},"      limit",[482,2609,566],{"class":488},[482,2611,2612],{"class":628}," 60\n",[482,2614,2616,2619],{"class":509,"line":2615},35,[482,2617,2618],{"class":488},"    }",[482,2620,744],{"class":562},[482,2622,2624],{"class":509,"line":2623},36,[482,2625,2626],{"class":562},"    \n",[482,2628,2630,2633,2635,2637,2639,2641,2643,2645,2647],{"class":509,"line":2629},37,[482,2631,2632],{"class":757},"    for",[482,2634,761],{"class":757},[482,2636,764],{"class":562},[482,2638,521],{"class":520},[482,2640,1810],{"class":524},[482,2642,1813],{"class":488},[482,2644,1675],{"class":524},[482,2646,1818],{"class":562},[482,2648,556],{"class":488},[482,2650,2652,2655],{"class":509,"line":2651},38,[482,2653,2654],{"class":524},"      batchNumber",[482,2656,2657],{"class":488},"++\n",[482,2659,2661,2664,2667,2669,2671],{"class":509,"line":2660},39,[482,2662,2663],{"class":524},"      totalItems",[482,2665,2666],{"class":488}," +=",[482,2668,1810],{"class":524},[482,2670,489],{"class":488},[482,2672,2673],{"class":524},"length\n",[482,2675,2677],{"class":509,"line":2676},40,[482,2678,751],{"emptyLinePlaceholder":750},[482,2680,2682,2685,2687,2690,2692,2694,2697,2699,2702,2704,2706],{"class":509,"line":2681},41,[482,2683,2684],{"class":524},"      $logger",[482,2686,489],{"class":488},[482,2688,2689],{"class":550},"info",[482,2691,553],{"class":562},[482,2693,799],{"class":488},[482,2695,2696],{"class":572},"Processing batch #",[482,2698,805],{"class":488},[482,2700,2701],{"class":524},"batchNumber",[482,2703,1954],{"class":488},[482,2705,617],{"class":488},[482,2707,590],{"class":488},[482,2709,2711,2714,2716,2718,2720,2722],{"class":509,"line":2710},42,[482,2712,2713],{"class":562},"        batchSize",[482,2715,566],{"class":488},[482,2717,1810],{"class":524},[482,2719,489],{"class":488},[482,2721,813],{"class":524},[482,2723,579],{"class":488},[482,2725,2727,2730,2732],{"class":509,"line":2726},43,[482,2728,2729],{"class":562},"        totalSoFar",[482,2731,566],{"class":488},[482,2733,2734],{"class":524}," totalItems\n",[482,2736,2738,2741],{"class":509,"line":2737},44,[482,2739,2740],{"class":488},"      }",[482,2742,744],{"class":562},[482,2744,2746],{"class":509,"line":2745},45,[482,2747,2748],{"class":562},"      \n",[482,2750,2752],{"class":509,"line":2751},46,[482,2753,2754],{"class":513},"      \u002F\u002F Пример: сохранение в базу данных\n",[482,2756,2758,2761,2764,2766,2768],{"class":509,"line":2757},47,[482,2759,2760],{"class":757},"      await",[482,2762,2763],{"class":550}," saveToDatabase",[482,2765,553],{"class":562},[482,2767,808],{"class":524},[482,2769,744],{"class":562},[482,2771,2773],{"class":509,"line":2772},48,[482,2774,2748],{"class":562},[482,2776,2778],{"class":509,"line":2777},49,[482,2779,2780],{"class":513},"      \u002F\u002F Пример: отправка в очередь сообщений\n",[482,2782,2784,2786,2789,2791,2793],{"class":509,"line":2783},50,[482,2785,2760],{"class":757},[482,2787,2788],{"class":550}," sendToMessageQueue",[482,2790,553],{"class":562},[482,2792,808],{"class":524},[482,2794,744],{"class":562},[482,2796,2798],{"class":509,"line":2797},51,[482,2799,2800],{"class":488},"    }\n",[482,2802,2804],{"class":509,"line":2803},52,[482,2805,2626],{"class":562},[482,2807,2809,2812,2814,2817,2819,2821,2824,2826,2829,2831,2834,2836,2838,2840,2843,2845],{"class":509,"line":2808},53,[482,2810,2811],{"class":524},"    $logger",[482,2813,489],{"class":488},[482,2815,2816],{"class":550},"notice",[482,2818,553],{"class":562},[482,2820,799],{"class":488},[482,2822,2823],{"class":572},"Processed ",[482,2825,805],{"class":488},[482,2827,2828],{"class":524},"totalItems",[482,2830,741],{"class":488},[482,2832,2833],{"class":572}," elements in ",[482,2835,805],{"class":488},[482,2837,2701],{"class":524},[482,2839,741],{"class":488},[482,2841,2842],{"class":572}," batches",[482,2844,799],{"class":488},[482,2846,744],{"class":562},[482,2848,2850,2852,2854,2856,2858,2860],{"class":509,"line":2849},54,[482,2851,1790],{"class":488},[482,2853,1868],{"class":757},[482,2855,764],{"class":562},[482,2857,1939],{"class":524},[482,2859,1818],{"class":562},[482,2861,556],{"class":488},[482,2863,2865,2868,2870,2872,2874,2876,2878],{"class":509,"line":2864},55,[482,2866,2867],{"class":757},"    if",[482,2869,764],{"class":562},[482,2871,1939],{"class":524},[482,2873,1895],{"class":488},[482,2875,1643],{"class":484},[482,2877,1818],{"class":562},[482,2879,556],{"class":488},[482,2881,2883,2885,2887,2889,2891,2893,2896,2898,2900,2902,2904,2906,2908],{"class":509,"line":2882},56,[482,2884,2684],{"class":524},[482,2886,489],{"class":488},[482,2888,1939],{"class":550},[482,2890,553],{"class":562},[482,2892,799],{"class":488},[482,2894,2895],{"class":572},"Processing error: ",[482,2897,805],{"class":488},[482,2899,1939],{"class":524},[482,2901,489],{"class":488},[482,2903,1951],{"class":524},[482,2905,1954],{"class":488},[482,2907,617],{"class":488},[482,2909,590],{"class":488},[482,2911,2913,2916,2918,2920,2922,2924],{"class":509,"line":2912},57,[482,2914,2915],{"class":562},"        code",[482,2917,566],{"class":488},[482,2919,1907],{"class":524},[482,2921,489],{"class":488},[482,2923,476],{"class":524},[482,2925,579],{"class":488},[482,2927,2929,2932],{"class":509,"line":2928},58,[482,2930,2931],{"class":524},"        batchNumber",[482,2933,579],{"class":488},[482,2935,2937],{"class":509,"line":2936},59,[482,2938,2939],{"class":524},"        totalItems\n",[482,2941,2943,2945],{"class":509,"line":2942},60,[482,2944,2740],{"class":488},[482,2946,744],{"class":562},[482,2948,2950,2952,2954],{"class":509,"line":2949},61,[482,2951,2618],{"class":488},[482,2953,1981],{"class":757},[482,2955,590],{"class":488},[482,2957,2959,2961,2963,2965,2967,2969,2972,2974,2976,2978,2980,2982,2984,2986,2988,2990],{"class":509,"line":2958},62,[482,2960,2684],{"class":524},[482,2962,489],{"class":488},[482,2964,1939],{"class":550},[482,2966,553],{"class":562},[482,2968,576],{"class":488},[482,2970,2971],{"class":572},"Unknown error",[482,2973,576],{"class":488},[482,2975,617],{"class":488},[482,2977,1443],{"class":488},[482,2979,1907],{"class":524},[482,2981,617],{"class":488},[482,2983,2277],{"class":524},[482,2985,617],{"class":488},[482,2987,2289],{"class":524},[482,2989,1460],{"class":488},[482,2991,744],{"class":562},[482,2993,2995],{"class":509,"line":2994},63,[482,2996,2800],{"class":488},[482,2998,3000,3003],{"class":509,"line":2999},64,[482,3001,3002],{"class":757},"    throw",[482,3004,3005],{"class":524}," error\n",[482,3007,3009],{"class":509,"line":3008},65,[482,3010,1861],{"class":488},[482,3012,3014],{"class":509,"line":3013},66,[482,3015,828],{"class":488},[482,3017,3019],{"class":509,"line":3018},67,[482,3020,751],{"emptyLinePlaceholder":750},[482,3022,3024],{"class":509,"line":3023},68,[482,3025,3026],{"class":513},"\u002F\u002F Вспомогательные функции\n",[482,3028,3030],{"class":509,"line":3029},69,[482,3031,3032],{"class":513},"\u002F\u002F Реализация сохранения в базу данных\n",[482,3034,3036,3038,3040,3042,3044,3046,3048,3050,3052,3055,3057,3059,3061,3063],{"class":509,"line":3035},70,[482,3037,2248],{"class":520},[482,3039,2251],{"class":520},[482,3041,2763],{"class":550},[482,3043,553],{"class":488},[482,3045,703],{"class":892},[482,3047,566],{"class":488},[482,3049,2079],{"class":484},[482,3051,915],{"class":524},[482,3053,3054],{"class":488},"):",[482,3056,2260],{"class":484},[482,3058,872],{"class":488},[482,3060,2265],{"class":484},[482,3062,884],{"class":488},[482,3064,590],{"class":488},[482,3066,3068,3071,3073,3075,3077,3080,3083,3086,3088,3090,3092,3095,3098],{"class":509,"line":3067},71,[482,3069,3070],{"class":757},"  await",[482,3072,2309],{"class":488},[482,3074,2260],{"class":484},[482,3076,553],{"class":562},[482,3078,3079],{"class":892},"resolve",[482,3081,3082],{"class":520}," =>",[482,3084,3085],{"class":550}," setTimeout",[482,3087,553],{"class":562},[482,3089,3079],{"class":524},[482,3091,617],{"class":488},[482,3093,3094],{"class":628}," 100",[482,3096,3097],{"class":562},")) ",[482,3099,3100],{"class":513},"\u002F\u002F Simulation\n",[482,3102,3104],{"class":509,"line":3103},72,[482,3105,828],{"class":488},[482,3107,3109],{"class":509,"line":3108},73,[482,3110,751],{"emptyLinePlaceholder":750},[482,3112,3114],{"class":509,"line":3113},74,[482,3115,3116],{"class":513},"\u002F\u002F Реализация отправки в очередь сообщений\n",[482,3118,3120,3122,3124,3126,3128,3130,3132,3134,3136,3138,3140,3142,3144,3146],{"class":509,"line":3119},75,[482,3121,2248],{"class":520},[482,3123,2251],{"class":520},[482,3125,2788],{"class":550},[482,3127,553],{"class":488},[482,3129,703],{"class":892},[482,3131,566],{"class":488},[482,3133,2079],{"class":484},[482,3135,915],{"class":524},[482,3137,3054],{"class":488},[482,3139,2260],{"class":484},[482,3141,872],{"class":488},[482,3143,2265],{"class":484},[482,3145,884],{"class":488},[482,3147,590],{"class":488},[482,3149,3151,3153,3155,3157,3159,3161,3163,3165,3167,3169,3171,3174,3176],{"class":509,"line":3150},76,[482,3152,3070],{"class":757},[482,3154,2309],{"class":488},[482,3156,2260],{"class":484},[482,3158,553],{"class":562},[482,3160,3079],{"class":892},[482,3162,3082],{"class":520},[482,3164,3085],{"class":550},[482,3166,553],{"class":562},[482,3168,3079],{"class":524},[482,3170,617],{"class":488},[482,3172,3173],{"class":628}," 50",[482,3175,3097],{"class":562},[482,3177,3100],{"class":513},[482,3179,3181],{"class":509,"line":3180},77,[482,3182,828],{"class":488},[482,3184,3186],{"class":509,"line":3185},78,[482,3187,751],{"emptyLinePlaceholder":750},[482,3189,3191],{"class":509,"line":3190},79,[482,3192,3193],{"class":513},"\u002F\u002F Использование\n",[482,3195,3197,3199],{"class":509,"line":3196},80,[482,3198,1665],{"class":757},[482,3200,590],{"class":488},[482,3202,3204,3206,3208],{"class":509,"line":3203},81,[482,3205,3070],{"class":757},[482,3207,2254],{"class":550},[482,3209,2315],{"class":562},[482,3211,3213,3215,3217,3219],{"class":509,"line":3212},82,[482,3214,741],{"class":488},[482,3216,1868],{"class":757},[482,3218,1871],{"class":524},[482,3220,556],{"class":488},[482,3222,3224,3227,3229,3232,3234,3236,3239,3241,3243,3245,3247,3249],{"class":509,"line":3223},83,[482,3225,3226],{"class":524},"  $logger",[482,3228,489],{"class":488},[482,3230,3231],{"class":550},"critical",[482,3233,553],{"class":562},[482,3235,576],{"class":488},[482,3237,3238],{"class":572},"A problem occurred",[482,3240,576],{"class":488},[482,3242,617],{"class":488},[482,3244,1443],{"class":488},[482,3246,1907],{"class":524},[482,3248,1460],{"class":488},[482,3250,744],{"class":562},[482,3252,3254],{"class":509,"line":3253},84,[482,3255,828],{"class":488},[830,3257,3259],{"id":3258},"when-the-request-and-response-id-fields-differ","Когда поля id в запросе и ответе различаются",[472,3261,3262,3263,3266,3267,3269,3270,3272,3273,3276,3277,3279,3280,566],{},"Некоторые методы сортируют \u002F фильтруют по одному имени поля, но возвращают другое (например, ",[476,3264,3265],{},"ID"," в верхнем регистре в запросе против ",[476,3268,656],{}," в нижнем в payload). Задайте ",[476,3271,1052],{}," на поле ",[841,3274,3275],{},"ответа",", а ",[476,3278,1048],{}," — на поле ",[841,3281,3282],{},"запроса",[500,3284,3286],{"className":502,"code":3285,"language":504,"meta":480,"style":480},"const generator = $b24.actions.v3.fetchList.make({\n  method: 'some.list',\n  params: { select: ['ID', 'TITLE'] },\n  idKey: 'id', \u002F\u002F читаем id из каждого возвращённого элемента\n  cursorIdKey: 'ID', \u002F\u002F order + постраничный фильтр [\"ID\", \">\", n] в запросе\n  customKeyForResult: 'items'\n})\n\nfor await (const chunk of generator) {\n  console.log(`Got ${chunk.length} records`)\n}\n",[476,3287,3288,3318,3333,3368,3385,3403,3415,3421,3425,3443,3475],{"__ignoreMap":480},[482,3289,3290,3292,3294,3296,3298,3300,3302,3304,3306,3308,3310,3312,3314,3316],{"class":509,"line":510},[482,3291,521],{"class":520},[482,3293,525],{"class":524},[482,3295,528],{"class":488},[482,3297,531],{"class":524},[482,3299,489],{"class":488},[482,3301,91],{"class":524},[482,3303,489],{"class":488},[482,3305,540],{"class":524},[482,3307,489],{"class":488},[482,3309,545],{"class":524},[482,3311,489],{"class":488},[482,3313,492],{"class":550},[482,3315,553],{"class":524},[482,3317,556],{"class":488},[482,3319,3320,3322,3324,3326,3329,3331],{"class":509,"line":517},[482,3321,563],{"class":562},[482,3323,566],{"class":488},[482,3325,569],{"class":488},[482,3327,3328],{"class":572},"some.list",[482,3330,576],{"class":488},[482,3332,579],{"class":488},[482,3334,3335,3337,3339,3341,3344,3346,3348,3350,3352,3354,3356,3358,3361,3363,3365],{"class":509,"line":559},[482,3336,585],{"class":562},[482,3338,566],{"class":488},[482,3340,1443],{"class":488},[482,3342,3343],{"class":562}," select",[482,3345,566],{"class":488},[482,3347,651],{"class":524},[482,3349,576],{"class":488},[482,3351,3265],{"class":572},[482,3353,576],{"class":488},[482,3355,617],{"class":488},[482,3357,569],{"class":488},[482,3359,3360],{"class":572},"TITLE",[482,3362,576],{"class":488},[482,3364,1455],{"class":524},[482,3366,3367],{"class":488},"},\n",[482,3369,3370,3372,3374,3376,3378,3380,3382],{"class":509,"line":582},[482,3371,680],{"class":562},[482,3373,566],{"class":488},[482,3375,569],{"class":488},[482,3377,656],{"class":572},[482,3379,576],{"class":488},[482,3381,617],{"class":488},[482,3383,3384],{"class":513}," \u002F\u002F читаем id из каждого возвращённого элемента\n",[482,3386,3387,3390,3392,3394,3396,3398,3400],{"class":509,"line":593},[482,3388,3389],{"class":562},"  cursorIdKey",[482,3391,566],{"class":488},[482,3393,569],{"class":488},[482,3395,3265],{"class":572},[482,3397,576],{"class":488},[482,3399,617],{"class":488},[482,3401,3402],{"class":513}," \u002F\u002F order + постраничный фильтр [\"ID\", \">\", n] в запросе\n",[482,3404,3405,3407,3409,3411,3413],{"class":509,"line":604},[482,3406,696],{"class":562},[482,3408,566],{"class":488},[482,3410,569],{"class":488},[482,3412,703],{"class":572},[482,3414,1656],{"class":488},[482,3416,3417,3419],{"class":509,"line":635},[482,3418,741],{"class":488},[482,3420,744],{"class":524},[482,3422,3423],{"class":509,"line":643},[482,3424,751],{"emptyLinePlaceholder":750},[482,3426,3427,3429,3431,3433,3435,3437,3439,3441],{"class":509,"line":671},[482,3428,758],{"class":757},[482,3430,761],{"class":757},[482,3432,764],{"class":524},[482,3434,521],{"class":520},[482,3436,769],{"class":524},[482,3438,772],{"class":488},[482,3440,775],{"class":524},[482,3442,556],{"class":488},[482,3444,3445,3447,3449,3451,3453,3455,3458,3460,3462,3464,3466,3468,3471,3473],{"class":509,"line":677},[482,3446,789],{"class":524},[482,3448,489],{"class":488},[482,3450,794],{"class":550},[482,3452,553],{"class":562},[482,3454,799],{"class":488},[482,3456,3457],{"class":572},"Got ",[482,3459,805],{"class":488},[482,3461,808],{"class":524},[482,3463,489],{"class":488},[482,3465,813],{"class":524},[482,3467,741],{"class":488},[482,3469,3470],{"class":572}," records",[482,3472,799],{"class":488},[482,3474,744],{"class":562},[482,3476,3477],{"class":509,"line":693},[482,3478,828],{"class":488},[472,3480,3481,3482,3484,3485,3487],{},"Если ",[476,3483,1052],{}," не удаётся прочитать из полной страницы, SDK логирует ",[476,3486,1603],{}," и прекращает пагинацию, вместо того чтобы молча обрезать данные.",[467,3489,3491],{"id":3490},"alternatives-and-recommendations","Альтернативы и рекомендации",[1226,3493,3494,3509,3515,3524,3530,3542,3554,3565],{},[838,3495,3496,3499,3500,3502,3503,3505,3506,3508],{},[841,3497,3498],{},"Размер чанка",": каждый чанк вмещает до ",[476,3501,1233],{}," записей (по умолчанию ",[476,3504,1195],{},", макс ",[476,3507,1199],{},"). Большие чанки — меньше HTTP-запросов, но больше нагрузки на память на каждой итерации.",[838,3510,3511,3514],{},[841,3512,3513],{},"Оптимальная параллельность",": при обработке данных из генератора рекомендуется ограниченная параллельность (3–5 одновременных операций).",[838,3516,3517,3519,3520,3523],{},[841,3518,375],{},": всегда обрабатывайте ошибки внутри цикла ",[476,3521,3522],{},"for await...of",", чтобы предотвратить прерывание всего процесса.",[838,3525,3526,3529],{},[841,3527,3528],{},"Мониторинг прогресса",": внедряйте логирование прогресса для длительных операций.",[838,3531,3532,3535,3536,3541],{},[841,3533,3534],{},"Для последовательных запросов",": используйте ",[1055,3537,3539],{"href":3538},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcall-rest-api-ver3\u002F",[476,3540,87],{}," для одиночных вызовов.",[838,3543,3544,3547,3548,3553],{},[841,3545,3546],{},"Для пакетных операций:"," используйте ",[1055,3549,3551],{"href":3550},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Fbatch-rest-api-ver3\u002F",[476,3552,122],{}," для выполнения до 50 команд в одном запросе.",[838,3555,3556,3559,3560,489],{},[841,3557,3558],{},"На стороне клиента (браузер):"," используйте встроенный объект ",[1055,3561,3563],{"href":3562},"\u002Fdocs\u002Fgetting-started\u002Finstallation\u002Fvue\u002F#init",[476,3564,133],{},[838,3566,3567,3570,3571,3574,3575,3577,3578,3580],{},[841,3568,3569],{},"См. также:"," ",[1055,3572,190],{"href":3573},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Ffiltering\u002F"," — построение ",[476,3576,1062],{}," (и почему ",[476,3579,1023],{}," отбрасывается).",[3582,3583,3584],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":480,"searchDepth":517,"depth":517,"links":3586},[3587,3590,3594,3600,3601,3605],{"id":469,"depth":517,"text":470,"children":3588},[3589],{"id":832,"depth":559,"text":833},{"id":859,"depth":517,"text":860,"children":3591},[3592,3593],{"id":921,"depth":559,"text":922},{"id":1202,"depth":559,"text":1203},{"id":1240,"depth":517,"text":1241,"children":3595},[3596,3597,3598,3599],{"id":1244,"depth":559,"text":1245},{"id":1359,"depth":559,"text":1360},{"id":1407,"depth":559,"text":1408},{"id":1568,"depth":559,"text":1058},{"id":1615,"depth":517,"text":375},{"id":362,"depth":517,"text":352,"children":3602},[3603,3604],{"id":2022,"depth":559,"text":2023},{"id":3258,"depth":559,"text":3259},{"id":3490,"depth":517,"text":3491},"md",[3608,3611,3614,3618],{"label":485,"iconName":3609,"to":3610},"GitHubIcon","https:\u002F\u002Fgithub.com\u002Fbitrix24\u002Fb24jssdk\u002Fblob\u002Fmain\u002Fpackages\u002Fjssdk\u002Fsrc\u002Fcore\u002Factions\u002Fv3\u002Ffetch-list.ts",{"label":3612,"iconName":3609,"to":3613},"SdkError","https:\u002F\u002Fgithub.com\u002Fbitrix24\u002Fb24jssdk\u002Fblob\u002Fmain\u002Fpackages\u002Fjssdk\u002Fsrc\u002Fcore\u002Fsdk-error.ts",{"label":3615,"iconName":3616,"to":3617},"Async Generator","MdnwebdocsIcon","https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FJavaScript\u002FReference\u002FGlobal_Objects\u002FAsyncGenerator",{"label":3619,"iconName":3609,"to":3620},"Skill — b24jssdk-rest","https:\u002F\u002Fgithub.com\u002Fbitrix24\u002Fb24jssdk\u002Fblob\u002Fmain\u002Fskills\u002Fb24jssdk-rest\u002FSKILL.md",{},{"title":108},{"title":461,"description":115},"XfMmKOg-8KCjiQjrCDKR4ZwISW5DQsdjJEYOLZOJKqE",{"data":3626,"body":3627},{},{"type":3628,"children":3629},"root",[3630],{"type":3631,"tag":472,"props":3632,"children":3633},"element",{},[3634],{"type":3635,"value":115},"text",1783080226116]