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