[{"data":1,"prerenderedAt":1864},["ShallowReactive",2],{"navigation":3,"-docs-examples-node-hook-company-export":459,"-docs-examples-node-hook-company-export-description":1854},[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":15,"badge":15,"body":462,"category":15,"description":418,"extension":1845,"links":1846,"meta":1850,"navigation":1851,"path":416,"restApiVersion":15,"seo":1852,"stem":417,"__hash__":1853},"docs\u002Fdocs\u002F99.examples\u002F30.node-hook-company-export.md","Экспорт компаний на Node + Hook",{"type":463,"value":464,"toc":1837},"minimark",[465,478,483,493,499,753,759,762,1785,1792,1812,1821,1825,1833],[466,467,468,469,477],"p",{},"Типичная batch \u002F cron-задача: экспорт компаний в CSV одним вебхуком. Не превышает лимиты частоты и использует ",[470,471,473],"a",{"href":472},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Ffetch-list-rest-api-ver2\u002F",[474,475,476],"code",{},"fetchList",", поэтому память не растёт независимо от размера набора данных.",[479,480,482],"h2",{"id":481},"project-layout","Структура проекта",[484,485,490],"pre",{"className":486,"code":488,"language":489},[487],"language-text","my-export-job\u002F\n├── dist\u002F\n├── src\u002F\n│   └── process-company-list.ts\n├── out\u002F                            # сгенерированные *.csv файлы\n├── .env.local                      # B24_HOOK=...\n├── package.json\n└── tsconfig.json\n","text",[474,491,488],{"__ignoreMap":492},"",[479,494,496,492],{"id":495},"packagejson",[474,497,498],{},"package.json",[484,500,504],{"className":501,"code":502,"language":503,"meta":492,"style":492},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"name\": \"my-export-job\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"build\": \"tsc\",\n    \"start\": \"node --env-file=.env.local dist\u002Fprocess-company-list.js\"\n  },\n  \"devDependencies\": {\n    \"@types\u002Fnode\": \"^22\",\n    \"typescript\": \"^5.6\"\n  },\n  \"dependencies\": {\n    \"@bitrix24\u002Fb24jssdk\": \"latest\",\n    \"chalk\": \"^5\"\n  }\n}\n","json",[474,505,506,515,543,564,579,602,622,628,642,663,682,687,701,722,741,747],{"__ignoreMap":492},[507,508,511],"span",{"class":509,"line":510},"line",1,[507,512,514],{"class":513},"sMK4o","{\n",[507,516,518,521,525,528,531,534,538,540],{"class":509,"line":517},2,[507,519,520],{"class":513},"  \"",[507,522,524],{"class":523},"spNyl","name",[507,526,527],{"class":513},"\"",[507,529,530],{"class":513},":",[507,532,533],{"class":513}," \"",[507,535,537],{"class":536},"sfazB","my-export-job",[507,539,527],{"class":513},[507,541,542],{"class":513},",\n",[507,544,546,548,551,553,555,557,560,562],{"class":509,"line":545},3,[507,547,520],{"class":513},[507,549,550],{"class":523},"type",[507,552,527],{"class":513},[507,554,530],{"class":513},[507,556,533],{"class":513},[507,558,559],{"class":536},"module",[507,561,527],{"class":513},[507,563,542],{"class":513},[507,565,567,569,572,574,576],{"class":509,"line":566},4,[507,568,520],{"class":513},[507,570,571],{"class":523},"scripts",[507,573,527],{"class":513},[507,575,530],{"class":513},[507,577,578],{"class":513}," {\n",[507,580,582,585,589,591,593,595,598,600],{"class":509,"line":581},5,[507,583,584],{"class":513},"    \"",[507,586,588],{"class":587},"sBMFI","build",[507,590,527],{"class":513},[507,592,530],{"class":513},[507,594,533],{"class":513},[507,596,597],{"class":536},"tsc",[507,599,527],{"class":513},[507,601,542],{"class":513},[507,603,605,607,610,612,614,616,619],{"class":509,"line":604},6,[507,606,584],{"class":513},[507,608,609],{"class":587},"start",[507,611,527],{"class":513},[507,613,530],{"class":513},[507,615,533],{"class":513},[507,617,618],{"class":536},"node --env-file=.env.local dist\u002Fprocess-company-list.js",[507,620,621],{"class":513},"\"\n",[507,623,625],{"class":509,"line":624},7,[507,626,627],{"class":513},"  },\n",[507,629,631,633,636,638,640],{"class":509,"line":630},8,[507,632,520],{"class":513},[507,634,635],{"class":523},"devDependencies",[507,637,527],{"class":513},[507,639,530],{"class":513},[507,641,578],{"class":513},[507,643,645,647,650,652,654,656,659,661],{"class":509,"line":644},9,[507,646,584],{"class":513},[507,648,649],{"class":587},"@types\u002Fnode",[507,651,527],{"class":513},[507,653,530],{"class":513},[507,655,533],{"class":513},[507,657,658],{"class":536},"^22",[507,660,527],{"class":513},[507,662,542],{"class":513},[507,664,666,668,671,673,675,677,680],{"class":509,"line":665},10,[507,667,584],{"class":513},[507,669,670],{"class":587},"typescript",[507,672,527],{"class":513},[507,674,530],{"class":513},[507,676,533],{"class":513},[507,678,679],{"class":536},"^5.6",[507,681,621],{"class":513},[507,683,685],{"class":509,"line":684},11,[507,686,627],{"class":513},[507,688,690,692,695,697,699],{"class":509,"line":689},12,[507,691,520],{"class":513},[507,693,694],{"class":523},"dependencies",[507,696,527],{"class":513},[507,698,530],{"class":513},[507,700,578],{"class":513},[507,702,704,706,709,711,713,715,718,720],{"class":509,"line":703},13,[507,705,584],{"class":513},[507,707,708],{"class":587},"@bitrix24\u002Fb24jssdk",[507,710,527],{"class":513},[507,712,530],{"class":513},[507,714,533],{"class":513},[507,716,717],{"class":536},"latest",[507,719,527],{"class":513},[507,721,542],{"class":513},[507,723,725,727,730,732,734,736,739],{"class":509,"line":724},14,[507,726,584],{"class":513},[507,728,729],{"class":587},"chalk",[507,731,527],{"class":513},[507,733,530],{"class":513},[507,735,533],{"class":513},[507,737,738],{"class":536},"^5",[507,740,621],{"class":513},[507,742,744],{"class":509,"line":743},15,[507,745,746],{"class":513},"  }\n",[507,748,750],{"class":509,"line":749},16,[507,751,752],{"class":513},"}\n",[479,754,756,492],{"id":755},"srcprocess-company-listts",[474,757,758],{},"src\u002Fprocess-company-list.ts",[466,760,761],{},"\u002F\u002F @check-ignore: node:fs not available in docs typecheck context",[484,763,767],{"className":764,"code":765,"language":766,"meta":492,"style":492},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { writeFileSync } from 'node:fs'\nimport {\n  B24Hook,\n  EnumCrmEntityTypeId,\n  LoggerFactory,\n  Text,\n  type ISODate\n} from '@bitrix24\u002Fb24jssdk'\n\nconst $logger = LoggerFactory.createForBrowser('export', process.env.NODE_ENV === 'development')\n\nif (!process.env.B24_HOOK) {\n  $logger.error('B24_HOOK is not set in .env.local')\n  process.exit(1)\n}\n\nconst $b24 = B24Hook.fromWebhookUrl(process.env.B24_HOOK)\n$logger.info(`Portal: ${$b24.getTargetOrigin()}`)\n\ntype Company = { id: number, title: string, createdTime: ISODate }\n\nasync function main() {\n  const generator = $b24.actions.v2.fetchList.make\u003CCompany>({\n    method: 'crm.item.list',\n    params: {\n      entityTypeId: EnumCrmEntityTypeId.company,\n      select: ['id', 'title', 'createdTime']\n    },\n    idKey: 'id',\n    requestId: 'export:companies'\n  })\n\n  const rows: string[] = ['id,title,createdTime']\n  for await (const chunk of generator) {\n    for (const c of chunk) {\n      rows.push([\n        c.id,\n        JSON.stringify(c.title ?? ''),\n        Text.toDateTime(c.createdTime).toFormat('yyyy-LL-dd HH:mm:ss')\n      ].join(','))\n    }\n    $logger.info(`Loaded ${chunk.length} (total ${rows.length - 1})`)\n  }\n\n  const out = `out\u002Fcompanies-${Date.now()}.csv`\n  writeFileSync(out, rows.join('\\n'), 'utf8')\n  $logger.notice(`Wrote ${out}`)\n\n  $b24.destroy()\n}\n\nmain().catch((error) => {\n  $logger.error('export failed', { error })\n  process.exit(1)\n})\n","ts",[474,768,769,797,803,810,817,824,831,839,852,858,919,923,948,970,988,992,996,1026,1064,1069,1113,1118,1134,1179,1196,1206,1224,1263,1269,1285,1300,1308,1313,1341,1367,1388,1402,1414,1445,1482,1504,1510,1566,1571,1576,1612,1653,1678,1683,1697,1702,1707,1734,1763,1778],{"__ignoreMap":492},[507,770,771,775,778,782,785,788,791,794],{"class":509,"line":510},[507,772,774],{"class":773},"s7zQu","import",[507,776,777],{"class":513}," {",[507,779,781],{"class":780},"sTEyZ"," writeFileSync",[507,783,784],{"class":513}," }",[507,786,787],{"class":773}," from",[507,789,790],{"class":513}," '",[507,792,793],{"class":536},"node:fs",[507,795,796],{"class":513},"'\n",[507,798,799,801],{"class":509,"line":517},[507,800,774],{"class":773},[507,802,578],{"class":513},[507,804,805,808],{"class":509,"line":545},[507,806,807],{"class":780},"  B24Hook",[507,809,542],{"class":513},[507,811,812,815],{"class":509,"line":566},[507,813,814],{"class":780},"  EnumCrmEntityTypeId",[507,816,542],{"class":513},[507,818,819,822],{"class":509,"line":581},[507,820,821],{"class":780},"  LoggerFactory",[507,823,542],{"class":513},[507,825,826,829],{"class":509,"line":604},[507,827,828],{"class":780},"  Text",[507,830,542],{"class":513},[507,832,833,836],{"class":509,"line":624},[507,834,835],{"class":773},"  type",[507,837,838],{"class":780}," ISODate\n",[507,840,841,844,846,848,850],{"class":509,"line":630},[507,842,843],{"class":513},"}",[507,845,787],{"class":773},[507,847,790],{"class":513},[507,849,708],{"class":536},[507,851,796],{"class":513},[507,853,854],{"class":509,"line":644},[507,855,857],{"emptyLinePlaceholder":856},true,"\n",[507,859,860,863,866,869,872,875,879,882,885,888,890,893,896,898,901,903,906,909,911,914,916],{"class":509,"line":665},[507,861,862],{"class":523},"const",[507,864,865],{"class":780}," $logger ",[507,867,868],{"class":513},"=",[507,870,871],{"class":780}," LoggerFactory",[507,873,874],{"class":513},".",[507,876,878],{"class":877},"s2Zo4","createForBrowser",[507,880,881],{"class":780},"(",[507,883,884],{"class":513},"'",[507,886,887],{"class":536},"export",[507,889,884],{"class":513},[507,891,892],{"class":513},",",[507,894,895],{"class":780}," process",[507,897,874],{"class":513},[507,899,900],{"class":780},"env",[507,902,874],{"class":513},[507,904,905],{"class":780},"NODE_ENV ",[507,907,908],{"class":513},"===",[507,910,790],{"class":513},[507,912,913],{"class":536},"development",[507,915,884],{"class":513},[507,917,918],{"class":780},")\n",[507,920,921],{"class":509,"line":684},[507,922,857],{"emptyLinePlaceholder":856},[507,924,925,928,931,934,937,939,941,943,946],{"class":509,"line":689},[507,926,927],{"class":773},"if",[507,929,930],{"class":780}," (",[507,932,933],{"class":513},"!",[507,935,936],{"class":780},"process",[507,938,874],{"class":513},[507,940,900],{"class":780},[507,942,874],{"class":513},[507,944,945],{"class":780},"B24_HOOK) ",[507,947,514],{"class":513},[507,949,950,953,955,958,961,963,966,968],{"class":509,"line":703},[507,951,952],{"class":780},"  $logger",[507,954,874],{"class":513},[507,956,957],{"class":877},"error",[507,959,881],{"class":960},"swJcz",[507,962,884],{"class":513},[507,964,965],{"class":536},"B24_HOOK is not set in .env.local",[507,967,884],{"class":513},[507,969,918],{"class":960},[507,971,972,975,977,980,982,986],{"class":509,"line":724},[507,973,974],{"class":780},"  process",[507,976,874],{"class":513},[507,978,979],{"class":877},"exit",[507,981,881],{"class":960},[507,983,985],{"class":984},"sbssI","1",[507,987,918],{"class":960},[507,989,990],{"class":509,"line":743},[507,991,752],{"class":513},[507,993,994],{"class":509,"line":749},[507,995,857],{"emptyLinePlaceholder":856},[507,997,999,1001,1004,1006,1009,1011,1014,1017,1019,1021,1023],{"class":509,"line":998},17,[507,1000,862],{"class":523},[507,1002,1003],{"class":780}," $b24 ",[507,1005,868],{"class":513},[507,1007,1008],{"class":780}," B24Hook",[507,1010,874],{"class":513},[507,1012,1013],{"class":877},"fromWebhookUrl",[507,1015,1016],{"class":780},"(process",[507,1018,874],{"class":513},[507,1020,900],{"class":780},[507,1022,874],{"class":513},[507,1024,1025],{"class":780},"B24_HOOK)\n",[507,1027,1029,1032,1034,1037,1039,1042,1045,1048,1051,1053,1056,1059,1062],{"class":509,"line":1028},18,[507,1030,1031],{"class":780},"$logger",[507,1033,874],{"class":513},[507,1035,1036],{"class":877},"info",[507,1038,881],{"class":780},[507,1040,1041],{"class":513},"`",[507,1043,1044],{"class":536},"Portal: ",[507,1046,1047],{"class":513},"${",[507,1049,1050],{"class":780},"$b24",[507,1052,874],{"class":513},[507,1054,1055],{"class":877},"getTargetOrigin",[507,1057,1058],{"class":780},"()",[507,1060,1061],{"class":513},"}`",[507,1063,918],{"class":780},[507,1065,1067],{"class":509,"line":1066},19,[507,1068,857],{"emptyLinePlaceholder":856},[507,1070,1072,1074,1077,1080,1082,1085,1087,1090,1092,1095,1097,1100,1102,1105,1107,1110],{"class":509,"line":1071},20,[507,1073,550],{"class":523},[507,1075,1076],{"class":587}," Company",[507,1078,1079],{"class":513}," =",[507,1081,777],{"class":513},[507,1083,1084],{"class":960}," id",[507,1086,530],{"class":513},[507,1088,1089],{"class":587}," number",[507,1091,892],{"class":513},[507,1093,1094],{"class":960}," title",[507,1096,530],{"class":513},[507,1098,1099],{"class":587}," string",[507,1101,892],{"class":513},[507,1103,1104],{"class":960}," createdTime",[507,1106,530],{"class":513},[507,1108,1109],{"class":587}," ISODate",[507,1111,1112],{"class":513}," }\n",[507,1114,1116],{"class":509,"line":1115},21,[507,1117,857],{"emptyLinePlaceholder":856},[507,1119,1121,1124,1127,1130,1132],{"class":509,"line":1120},22,[507,1122,1123],{"class":523},"async",[507,1125,1126],{"class":523}," function",[507,1128,1129],{"class":877}," main",[507,1131,1058],{"class":513},[507,1133,578],{"class":513},[507,1135,1137,1140,1143,1145,1148,1150,1152,1154,1157,1159,1161,1163,1166,1169,1172,1175,1177],{"class":509,"line":1136},23,[507,1138,1139],{"class":523},"  const",[507,1141,1142],{"class":780}," generator",[507,1144,1079],{"class":513},[507,1146,1147],{"class":780}," $b24",[507,1149,874],{"class":513},[507,1151,91],{"class":780},[507,1153,874],{"class":513},[507,1155,1156],{"class":780},"v2",[507,1158,874],{"class":513},[507,1160,476],{"class":780},[507,1162,874],{"class":513},[507,1164,1165],{"class":877},"make",[507,1167,1168],{"class":513},"\u003C",[507,1170,1171],{"class":587},"Company",[507,1173,1174],{"class":513},">",[507,1176,881],{"class":960},[507,1178,514],{"class":513},[507,1180,1182,1185,1187,1189,1192,1194],{"class":509,"line":1181},24,[507,1183,1184],{"class":960},"    method",[507,1186,530],{"class":513},[507,1188,790],{"class":513},[507,1190,1191],{"class":536},"crm.item.list",[507,1193,884],{"class":513},[507,1195,542],{"class":513},[507,1197,1199,1202,1204],{"class":509,"line":1198},25,[507,1200,1201],{"class":960},"    params",[507,1203,530],{"class":513},[507,1205,578],{"class":513},[507,1207,1209,1212,1214,1217,1219,1222],{"class":509,"line":1208},26,[507,1210,1211],{"class":960},"      entityTypeId",[507,1213,530],{"class":513},[507,1215,1216],{"class":780}," EnumCrmEntityTypeId",[507,1218,874],{"class":513},[507,1220,1221],{"class":780},"company",[507,1223,542],{"class":513},[507,1225,1227,1230,1232,1235,1237,1240,1242,1244,1246,1249,1251,1253,1255,1258,1260],{"class":509,"line":1226},27,[507,1228,1229],{"class":960},"      select",[507,1231,530],{"class":513},[507,1233,1234],{"class":960}," [",[507,1236,884],{"class":513},[507,1238,1239],{"class":536},"id",[507,1241,884],{"class":513},[507,1243,892],{"class":513},[507,1245,790],{"class":513},[507,1247,1248],{"class":536},"title",[507,1250,884],{"class":513},[507,1252,892],{"class":513},[507,1254,790],{"class":513},[507,1256,1257],{"class":536},"createdTime",[507,1259,884],{"class":513},[507,1261,1262],{"class":960},"]\n",[507,1264,1266],{"class":509,"line":1265},28,[507,1267,1268],{"class":513},"    },\n",[507,1270,1272,1275,1277,1279,1281,1283],{"class":509,"line":1271},29,[507,1273,1274],{"class":960},"    idKey",[507,1276,530],{"class":513},[507,1278,790],{"class":513},[507,1280,1239],{"class":536},[507,1282,884],{"class":513},[507,1284,542],{"class":513},[507,1286,1288,1291,1293,1295,1298],{"class":509,"line":1287},30,[507,1289,1290],{"class":960},"    requestId",[507,1292,530],{"class":513},[507,1294,790],{"class":513},[507,1296,1297],{"class":536},"export:companies",[507,1299,796],{"class":513},[507,1301,1303,1306],{"class":509,"line":1302},31,[507,1304,1305],{"class":513},"  }",[507,1307,918],{"class":960},[507,1309,1311],{"class":509,"line":1310},32,[507,1312,857],{"emptyLinePlaceholder":856},[507,1314,1316,1318,1321,1323,1325,1328,1330,1332,1334,1337,1339],{"class":509,"line":1315},33,[507,1317,1139],{"class":523},[507,1319,1320],{"class":780}," rows",[507,1322,530],{"class":513},[507,1324,1099],{"class":587},[507,1326,1327],{"class":960},"[] ",[507,1329,868],{"class":513},[507,1331,1234],{"class":960},[507,1333,884],{"class":513},[507,1335,1336],{"class":536},"id,title,createdTime",[507,1338,884],{"class":513},[507,1340,1262],{"class":960},[507,1342,1344,1347,1350,1352,1354,1357,1360,1362,1365],{"class":509,"line":1343},34,[507,1345,1346],{"class":773},"  for",[507,1348,1349],{"class":773}," await",[507,1351,930],{"class":960},[507,1353,862],{"class":523},[507,1355,1356],{"class":780}," chunk",[507,1358,1359],{"class":513}," of",[507,1361,1142],{"class":780},[507,1363,1364],{"class":960},") ",[507,1366,514],{"class":513},[507,1368,1370,1373,1375,1377,1380,1382,1384,1386],{"class":509,"line":1369},35,[507,1371,1372],{"class":773},"    for",[507,1374,930],{"class":960},[507,1376,862],{"class":523},[507,1378,1379],{"class":780}," c",[507,1381,1359],{"class":513},[507,1383,1356],{"class":780},[507,1385,1364],{"class":960},[507,1387,514],{"class":513},[507,1389,1391,1394,1396,1399],{"class":509,"line":1390},36,[507,1392,1393],{"class":780},"      rows",[507,1395,874],{"class":513},[507,1397,1398],{"class":877},"push",[507,1400,1401],{"class":960},"([\n",[507,1403,1405,1408,1410,1412],{"class":509,"line":1404},37,[507,1406,1407],{"class":780},"        c",[507,1409,874],{"class":513},[507,1411,1239],{"class":780},[507,1413,542],{"class":513},[507,1415,1417,1420,1422,1425,1427,1430,1432,1434,1437,1440,1443],{"class":509,"line":1416},38,[507,1418,1419],{"class":780},"        JSON",[507,1421,874],{"class":513},[507,1423,1424],{"class":877},"stringify",[507,1426,881],{"class":960},[507,1428,1429],{"class":780},"c",[507,1431,874],{"class":513},[507,1433,1248],{"class":780},[507,1435,1436],{"class":513}," ??",[507,1438,1439],{"class":513}," ''",[507,1441,1442],{"class":960},")",[507,1444,542],{"class":513},[507,1446,1448,1451,1453,1456,1458,1460,1462,1464,1466,1468,1471,1473,1475,1478,1480],{"class":509,"line":1447},39,[507,1449,1450],{"class":780},"        Text",[507,1452,874],{"class":513},[507,1454,1455],{"class":877},"toDateTime",[507,1457,881],{"class":960},[507,1459,1429],{"class":780},[507,1461,874],{"class":513},[507,1463,1257],{"class":780},[507,1465,1442],{"class":960},[507,1467,874],{"class":513},[507,1469,1470],{"class":877},"toFormat",[507,1472,881],{"class":960},[507,1474,884],{"class":513},[507,1476,1477],{"class":536},"yyyy-LL-dd HH:mm:ss",[507,1479,884],{"class":513},[507,1481,918],{"class":960},[507,1483,1485,1488,1490,1493,1495,1497,1499,1501],{"class":509,"line":1484},40,[507,1486,1487],{"class":960},"      ]",[507,1489,874],{"class":513},[507,1491,1492],{"class":877},"join",[507,1494,881],{"class":960},[507,1496,884],{"class":513},[507,1498,892],{"class":536},[507,1500,884],{"class":513},[507,1502,1503],{"class":960},"))\n",[507,1505,1507],{"class":509,"line":1506},41,[507,1508,1509],{"class":513},"    }\n",[507,1511,1513,1516,1518,1520,1522,1524,1527,1529,1532,1534,1537,1539,1542,1544,1547,1549,1552,1555,1558,1560,1562,1564],{"class":509,"line":1512},42,[507,1514,1515],{"class":780},"    $logger",[507,1517,874],{"class":513},[507,1519,1036],{"class":877},[507,1521,881],{"class":960},[507,1523,1041],{"class":513},[507,1525,1526],{"class":536},"Loaded ",[507,1528,1047],{"class":513},[507,1530,1531],{"class":780},"chunk",[507,1533,874],{"class":513},[507,1535,1536],{"class":780},"length",[507,1538,843],{"class":513},[507,1540,1541],{"class":536}," (total ",[507,1543,1047],{"class":513},[507,1545,1546],{"class":780},"rows",[507,1548,874],{"class":513},[507,1550,1551],{"class":780},"length ",[507,1553,1554],{"class":513},"-",[507,1556,1557],{"class":984}," 1",[507,1559,843],{"class":513},[507,1561,1442],{"class":536},[507,1563,1041],{"class":513},[507,1565,918],{"class":960},[507,1567,1569],{"class":509,"line":1568},43,[507,1570,746],{"class":513},[507,1572,1574],{"class":509,"line":1573},44,[507,1575,857],{"emptyLinePlaceholder":856},[507,1577,1579,1581,1584,1586,1589,1592,1594,1597,1599,1602,1604,1606,1609],{"class":509,"line":1578},45,[507,1580,1139],{"class":523},[507,1582,1583],{"class":780}," out",[507,1585,1079],{"class":513},[507,1587,1588],{"class":513}," `",[507,1590,1591],{"class":536},"out\u002Fcompanies-",[507,1593,1047],{"class":513},[507,1595,1596],{"class":780},"Date",[507,1598,874],{"class":513},[507,1600,1601],{"class":877},"now",[507,1603,1058],{"class":780},[507,1605,843],{"class":513},[507,1607,1608],{"class":536},".csv",[507,1610,1611],{"class":513},"`\n",[507,1613,1615,1618,1620,1623,1625,1627,1629,1631,1633,1635,1638,1640,1642,1644,1646,1649,1651],{"class":509,"line":1614},46,[507,1616,1617],{"class":877},"  writeFileSync",[507,1619,881],{"class":960},[507,1621,1622],{"class":780},"out",[507,1624,892],{"class":513},[507,1626,1320],{"class":780},[507,1628,874],{"class":513},[507,1630,1492],{"class":877},[507,1632,881],{"class":960},[507,1634,884],{"class":513},[507,1636,1637],{"class":780},"\\n",[507,1639,884],{"class":513},[507,1641,1442],{"class":960},[507,1643,892],{"class":513},[507,1645,790],{"class":513},[507,1647,1648],{"class":536},"utf8",[507,1650,884],{"class":513},[507,1652,918],{"class":960},[507,1654,1656,1658,1660,1663,1665,1667,1670,1672,1674,1676],{"class":509,"line":1655},47,[507,1657,952],{"class":780},[507,1659,874],{"class":513},[507,1661,1662],{"class":877},"notice",[507,1664,881],{"class":960},[507,1666,1041],{"class":513},[507,1668,1669],{"class":536},"Wrote ",[507,1671,1047],{"class":513},[507,1673,1622],{"class":780},[507,1675,1061],{"class":513},[507,1677,918],{"class":960},[507,1679,1681],{"class":509,"line":1680},48,[507,1682,857],{"emptyLinePlaceholder":856},[507,1684,1686,1689,1691,1694],{"class":509,"line":1685},49,[507,1687,1688],{"class":780},"  $b24",[507,1690,874],{"class":513},[507,1692,1693],{"class":877},"destroy",[507,1695,1696],{"class":960},"()\n",[507,1698,1700],{"class":509,"line":1699},50,[507,1701,752],{"class":513},[507,1703,1705],{"class":509,"line":1704},51,[507,1706,857],{"emptyLinePlaceholder":856},[507,1708,1710,1713,1715,1717,1720,1722,1724,1727,1729,1732],{"class":509,"line":1709},52,[507,1711,1712],{"class":877},"main",[507,1714,1058],{"class":780},[507,1716,874],{"class":513},[507,1718,1719],{"class":877},"catch",[507,1721,881],{"class":780},[507,1723,881],{"class":513},[507,1725,957],{"class":1726},"sHdIc",[507,1728,1442],{"class":513},[507,1730,1731],{"class":523}," =>",[507,1733,578],{"class":513},[507,1735,1737,1739,1741,1743,1745,1747,1750,1752,1754,1756,1759,1761],{"class":509,"line":1736},53,[507,1738,952],{"class":780},[507,1740,874],{"class":513},[507,1742,957],{"class":877},[507,1744,881],{"class":960},[507,1746,884],{"class":513},[507,1748,1749],{"class":536},"export failed",[507,1751,884],{"class":513},[507,1753,892],{"class":513},[507,1755,777],{"class":513},[507,1757,1758],{"class":780}," error",[507,1760,784],{"class":513},[507,1762,918],{"class":960},[507,1764,1766,1768,1770,1772,1774,1776],{"class":509,"line":1765},54,[507,1767,974],{"class":780},[507,1769,874],{"class":513},[507,1771,979],{"class":877},[507,1773,881],{"class":960},[507,1775,985],{"class":984},[507,1777,918],{"class":960},[507,1779,1781,1783],{"class":509,"line":1780},55,[507,1782,843],{"class":513},[507,1784,918],{"class":780},[479,1786,1788,1789,1791],{"id":1787},"why-fetchlist","Почему ",[474,1790,476],{},"?",[1793,1794,1795,1803,1809],"ul",{},[1796,1797,1798,1799,1802],"li",{},"Память не растёт: каждая итерация ",[474,1800,1801],{},"for await"," отдаёт чанк из 50 элементов, поэтому набор в 50 000 строк никогда не материализуется в RAM.",[1796,1804,1805,1806,874],{},"Встроенная пагинация: не пишите свой цикл ",[474,1807,1808],{},"start: nextStart",[1796,1810,1811],{},"Аккуратно обрабатывает rate \u002F operating лимитеры SDK между страницами.",[466,1813,1814,1815,874],{},"Для полноценных массовых операций (удалить-затем-создать, массовые импорты) сочетайте экспорт с ",[470,1816,1818],{"href":1817},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Fbatch-by-chunk-rest-api-ver2\u002F",[474,1819,1820],{},"actions.v2.batchByChunk",[479,1822,1824],{"id":1823},"full-source","Полный исходник",[466,1826,1827,874],{},[470,1828,1832],{"href":1829,"rel":1830},"https:\u002F\u002Fgithub.com\u002Fbitrix24\u002Fb24sdk-examples\u002Ftree\u002Fmain\u002Fjs\u002F05-node-hook",[1831],"nofollow","bitrix24\u002Fb24sdk-examples → js\u002F05-node-hook",[1834,1835,1836],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .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 .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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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":492,"searchDepth":517,"depth":517,"links":1838},[1839,1840,1841,1842,1844],{"id":481,"depth":517,"text":482},{"id":495,"depth":517,"text":498},{"id":755,"depth":517,"text":758},{"id":1787,"depth":517,"text":1843},"Почему fetchList?",{"id":1823,"depth":517,"text":1824},"md",[1847],{"label":1848,"iconName":1849,"to":1829},"исходник примера","GitHubIcon",{},{"title":415},{"title":461,"description":418},"kuF1XQSu76m_tHpgRakOZTQlB1h4SSBfIokmeumtmHk",{"data":1855,"body":1856},{},{"type":1857,"children":1858},"root",[1859],{"type":1860,"tag":466,"props":1861,"children":1862},"element",{},[1863],{"type":489,"value":418},1783080214930]