[{"data":1,"prerenderedAt":1776},["ShallowReactive",2],{"navigation":3,"-docs-working-with-the-rest-api-tools-use-formatters":459,"-docs-working-with-the-rest-api-tools-use-formatters-description":1751},[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":316,"audited":461,"badge":15,"body":462,"category":303,"description":319,"extension":1742,"links":1743,"meta":1747,"navigation":1748,"path":317,"restApiVersion":15,"seo":1749,"stem":318,"__hash__":1750},"docs\u002Fdocs\u002F2.working-with-the-rest-api\u002F80.tools-use-formatters.md","2026-07-01",{"type":463,"value":464,"toc":1730},"minimark",[465,470,492,524,552,747,751,757,799,804,860,865,998,1002,1032,1059,1121,1124,1161,1163,1166,1341,1344,1503,1506,1657,1661,1726],[466,467,469],"h2",{"id":468},"overview","Обзор",[471,472,473,487,488,491],"p",{},[474,475,479,483],"code",{"className":476,"language":477,"style":478},"language-ts-type shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","ts-type","",[480,481,316],"span",{"class":482},"sBMFI",[480,484,486],{"class":485},"sMK4o","()"," — это composable, экспортируемый из ",[474,489,490],{},"@bitrix24\u002Fb24jssdk",". Он возвращает два общих форматтера-синглтона:",[493,494,495,513],"ul",{},[496,497,498,504,505,508,509,512],"li",{},[499,500,501],"strong",{},[474,502,503],{},"formatterNumber"," — экземпляр ",[474,506,507],{},"FormatterNumbers",", обёртка над ",[474,510,511],{},"Intl.NumberFormat"," с учётом локали.",[496,514,515,504,520,523],{},[499,516,517],{},[474,518,519],{},"formatterIban",[474,521,522],{},"FormatterIban",", предзагруженный спецификациями стран IBAN: каждая страна из официального реестра IBAN, несколько неофициальных стран, следующих структуре IBAN, и французские региональные \u002F административные территориальные единицы (GF, GP, MQ, RE, PF, TF, YT, NC, BL, MF, PM).",[471,525,526,527,530,531,534,535,538,539,541,542,544,545,548,549,551],{},"Оба форматтера — синглтоны (",[474,528,529],{},"FormatterNumbers.getInstance()"," \u002F ",[474,532,533],{},"FormatterIban.getInstance()","), поэтому каждый вызов ",[474,536,537],{},"useFormatter()"," возвращает одни и те же нижележащие экземпляры — состояние, заданное на одном (например, локаль по умолчанию), видно везде в приложении. ",[474,540,537],{}," перерегистрирует спецификации IBAN при каждом вызове, но поскольку ",[474,543,519],{}," — синглтон, а ",[474,546,547],{},"addSpecification"," просто перезаписывает запись в map для кода страны, повторный вызов ",[474,550,537],{}," дёшев.",[553,554,558],"pre",{"className":555,"code":556,"language":557,"meta":478,"style":478},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { useFormatter } from '@bitrix24\u002Fb24jssdk'\n\nconst { formatterNumber, formatterIban } = useFormatter()\n\nconsole.log(formatterIban.printFormat('GB29NWBK60161331926819'))\n\u002F\u002F 'GB29 NWBK 6016 1331 9268 19'\n\nconsole.log(formatterIban.isValid('DE89370400440532013000'))\n\u002F\u002F true\n\nconsole.log(formatterNumber.format(1234.567))\n\u002F\u002F '1,234.57'\n","ts",[474,559,560,590,597,627,632,666,673,678,705,711,716,741],{"__ignoreMap":478},[480,561,564,568,571,575,578,581,584,587],{"class":562,"line":563},"line",1,[480,565,567],{"class":566},"s7zQu","import",[480,569,570],{"class":485}," {",[480,572,574],{"class":573},"sTEyZ"," useFormatter",[480,576,577],{"class":485}," }",[480,579,580],{"class":566}," from",[480,582,583],{"class":485}," '",[480,585,490],{"class":586},"sfazB",[480,588,589],{"class":485},"'\n",[480,591,593],{"class":562,"line":592},2,[480,594,596],{"emptyLinePlaceholder":595},true,"\n",[480,598,600,604,606,609,612,615,618,621,624],{"class":562,"line":599},3,[480,601,603],{"class":602},"spNyl","const",[480,605,570],{"class":485},[480,607,608],{"class":573}," formatterNumber",[480,610,611],{"class":485},",",[480,613,614],{"class":573}," formatterIban ",[480,616,617],{"class":485},"}",[480,619,620],{"class":485}," =",[480,622,574],{"class":623},"s2Zo4",[480,625,626],{"class":573},"()\n",[480,628,630],{"class":562,"line":629},4,[480,631,596],{"emptyLinePlaceholder":595},[480,633,635,638,641,644,647,649,652,655,658,661,663],{"class":562,"line":634},5,[480,636,637],{"class":573},"console",[480,639,640],{"class":485},".",[480,642,643],{"class":623},"log",[480,645,646],{"class":573},"(formatterIban",[480,648,640],{"class":485},[480,650,651],{"class":623},"printFormat",[480,653,654],{"class":573},"(",[480,656,657],{"class":485},"'",[480,659,660],{"class":586},"GB29NWBK60161331926819",[480,662,657],{"class":485},[480,664,665],{"class":573},"))\n",[480,667,669],{"class":562,"line":668},6,[480,670,672],{"class":671},"sHwdD","\u002F\u002F 'GB29 NWBK 6016 1331 9268 19'\n",[480,674,676],{"class":562,"line":675},7,[480,677,596],{"emptyLinePlaceholder":595},[480,679,681,683,685,687,689,691,694,696,698,701,703],{"class":562,"line":680},8,[480,682,637],{"class":573},[480,684,640],{"class":485},[480,686,643],{"class":623},[480,688,646],{"class":573},[480,690,640],{"class":485},[480,692,693],{"class":623},"isValid",[480,695,654],{"class":573},[480,697,657],{"class":485},[480,699,700],{"class":586},"DE89370400440532013000",[480,702,657],{"class":485},[480,704,665],{"class":573},[480,706,708],{"class":562,"line":707},9,[480,709,710],{"class":671},"\u002F\u002F true\n",[480,712,714],{"class":562,"line":713},10,[480,715,596],{"emptyLinePlaceholder":595},[480,717,719,721,723,725,728,730,733,735,739],{"class":562,"line":718},11,[480,720,637],{"class":573},[480,722,640],{"class":485},[480,724,643],{"class":623},[480,726,727],{"class":573},"(formatterNumber",[480,729,640],{"class":485},[480,731,732],{"class":623},"format",[480,734,654],{"class":573},[480,736,738],{"class":737},"sbssI","1234.567",[480,740,665],{"class":573},[480,742,744],{"class":562,"line":743},12,[480,745,746],{"class":671},"\u002F\u002F '1,234.57'\n",[466,748,750],{"id":749},"method-signature","Сигнатура методов",[752,753,755,478],"h3",{"id":754},"useformatter",[474,756,537],{},[553,758,760],{"className":476,"code":759,"language":477,"meta":478,"style":478},"useFormatter(): {\n  formatterNumber: FormatterNumbers\n  formatterIban: FormatterIban\n}\n",[474,761,762,772,784,794],{"__ignoreMap":478},[480,763,764,766,769],{"class":562,"line":563},[480,765,316],{"class":482},[480,767,768],{"class":485},"():",[480,770,771],{"class":485}," {\n",[480,773,774,778,781],{"class":562,"line":592},[480,775,777],{"class":776},"swJcz","  formatterNumber",[480,779,780],{"class":485},":",[480,782,783],{"class":482}," FormatterNumbers\n",[480,785,786,789,791],{"class":562,"line":599},[480,787,788],{"class":776},"  formatterIban",[480,790,780],{"class":485},[480,792,793],{"class":482}," FormatterIban\n",[480,795,796],{"class":562,"line":629},[480,797,798],{"class":485},"}\n",[752,800,802,478],{"id":801},"formatternumbers",[474,803,507],{},[553,805,807],{"className":476,"code":806,"language":477,"meta":478,"style":478},"setDefLocale(locale: string): void\nformat(value: number, locale?: string): string\n",[474,808,809,831],{"__ignoreMap":478},[480,810,811,814,816,820,822,825,828],{"class":562,"line":563},[480,812,813],{"class":482},"setDefLocale",[480,815,654],{"class":485},[480,817,819],{"class":818},"sHdIc","locale",[480,821,780],{"class":485},[480,823,824],{"class":482}," string",[480,826,827],{"class":485},"):",[480,829,830],{"class":482}," void\n",[480,832,833,835,837,840,842,845,847,850,853,855,857],{"class":562,"line":592},[480,834,732],{"class":482},[480,836,654],{"class":485},[480,838,839],{"class":818},"value",[480,841,780],{"class":485},[480,843,844],{"class":482}," number",[480,846,611],{"class":485},[480,848,849],{"class":818}," locale",[480,851,852],{"class":485},"?:",[480,854,824],{"class":482},[480,856,827],{"class":485},[480,858,859],{"class":482}," string\n",[752,861,863,478],{"id":862},"formatteriban",[474,864,522],{},[553,866,868],{"className":476,"code":867,"language":477,"meta":478,"style":478},"addSpecification(spec: IbanSpecification): void\n\nisValid(iban: string): boolean\nprintFormat(iban: string, separator?: string): string     \u002F\u002F разделитель по умолчанию ' '\nelectronicFormat(iban: string): string                     \u002F\u002F убирает не-буквенно-цифровые символы, переводит в верхний регистр\n\ntoBBAN(iban: string, separator?: string): string           \u002F\u002F разделитель по умолчанию ' '\nfromBBAN(countryCode: string, bban: string): string\nisValidBBAN(countryCode: string, bban: string): boolean\n",[474,869,870,888,892,910,938,949,953,973,986],{"__ignoreMap":478},[480,871,872,874,876,879,881,884,886],{"class":562,"line":563},[480,873,547],{"class":482},[480,875,654],{"class":485},[480,877,878],{"class":818},"spec",[480,880,780],{"class":485},[480,882,883],{"class":482}," IbanSpecification",[480,885,827],{"class":485},[480,887,830],{"class":482},[480,889,890],{"class":562,"line":592},[480,891,596],{"emptyLinePlaceholder":595},[480,893,894,896,898,901,903,905,907],{"class":562,"line":599},[480,895,693],{"class":482},[480,897,654],{"class":485},[480,899,900],{"class":818},"iban",[480,902,780],{"class":485},[480,904,824],{"class":482},[480,906,827],{"class":485},[480,908,909],{"class":482}," boolean\n",[480,911,912,914,916,918,920,922,924,927,929,931,933,935],{"class":562,"line":629},[480,913,651],{"class":482},[480,915,654],{"class":485},[480,917,900],{"class":818},[480,919,780],{"class":485},[480,921,824],{"class":482},[480,923,611],{"class":485},[480,925,926],{"class":818}," separator",[480,928,852],{"class":485},[480,930,824],{"class":482},[480,932,827],{"class":485},[480,934,824],{"class":482},[480,936,937],{"class":671},"     \u002F\u002F разделитель по умолчанию ' '\n",[480,939,940,943,946],{"class":562,"line":634},[480,941,942],{"class":623},"electronicFormat",[480,944,945],{"class":573},"(iban: string): string                     ",[480,947,948],{"class":671},"\u002F\u002F убирает не-буквенно-цифровые символы, переводит в верхний регистр\n",[480,950,951],{"class":562,"line":668},[480,952,596],{"emptyLinePlaceholder":595},[480,954,955,958,961,963,965,967,970],{"class":562,"line":675},[480,956,957],{"class":623},"toBBAN",[480,959,960],{"class":573},"(iban: string",[480,962,611],{"class":485},[480,964,926],{"class":573},[480,966,852],{"class":485},[480,968,969],{"class":573}," string): string           ",[480,971,972],{"class":671},"\u002F\u002F разделитель по умолчанию ' '\n",[480,974,975,978,981,983],{"class":562,"line":680},[480,976,977],{"class":623},"fromBBAN",[480,979,980],{"class":573},"(countryCode: string",[480,982,611],{"class":485},[480,984,985],{"class":573}," bban: string): string\n",[480,987,988,991,993,995],{"class":562,"line":707},[480,989,990],{"class":623},"isValidBBAN",[480,992,980],{"class":573},[480,994,611],{"class":485},[480,996,997],{"class":573}," bban: string): boolean\n",[466,999,1001],{"id":1000},"key-concepts","Ключевые понятия",[1003,1004,1005],"note",{},[471,1006,1007,1010,1011,1013,1014,1016,1017,1020,1021,1024,1025,1028,1029,1031],{},[474,1008,1009],{},"FormatterNumbers.format"," выбирает локаль в таком порядке: явный аргумент ",[474,1012,819],{},", затем локаль, заданная через ",[474,1015,813],{},", затем ",[474,1018,1019],{},"navigator.language"," (только в браузере), затем откат к ",[474,1022,1023],{},"'en'",". Целые числа форматируются с 0 знаками после запятой, нецелые — ровно с 2. Когда разрешённая локаль содержит ",[474,1026,1027],{},"'ru'",", десятичная запятая, производимая ",[474,1030,511],{},", заменяется на точку.",[1003,1033,1034],{},[471,1035,1036,1039,1040,1042,1043,1042,1045,1047,1048,1051,1052,1055,1056,1058],{},[474,1037,1038],{},"FormatterIban.isValid"," и методы BBAN (",[474,1041,957],{},", ",[474,1044,977],{},[474,1046,990],{},") выбрасывают ",[474,1049,1050],{},"Error('No country with code XX')",", если у кода страны IBAN\u002FBBAN нет зарегистрированной ",[474,1053,1054],{},"IbanSpecification",". Поскольку ",[474,1057,537],{}," уже регистрирует каждую поддерживаемую страну, это случается только для действительно неподдерживаемых или некорректных кодов стран.",[493,1060,1061,1076,1091,1105],{},[496,1062,1063,1068,1069,1071,1072,1075],{},[499,1064,1065,1067],{},[474,1066,693],{}," принимает слабо форматированный ввод."," Сначала он прогоняет IBAN через ",[474,1070,942],{},", поэтому пробелы и буквы в нижнем регистре нормализуются до проверки специфичных для страны длины, структуры и контрольной суммы ISO 7064 MOD 97-10. Не-строковый ввод возвращает ",[474,1073,1074],{},"false"," вместо выброса исключения.",[496,1077,1078,1088,1089,640],{},[499,1079,1080,1082,1083,1085,1086],{},[474,1081,651],{}," и ",[474,1084,957],{}," оба сначала нормализуют через ",[474,1087,942],{},", поэтому принимают тот же слабо форматированный ввод, что и ",[474,1090,693],{},[496,1092,1093,1098,1099,1101,1102,1104],{},[499,1094,1095,1097],{},[474,1096,547],{}," перезаписывает по коду страны."," Повторный вызов для уже зарегистрированной страны (как делает ",[474,1100,537],{}," при каждом вызове) просто заменяет существующую ",[474,1103,1054],{}," — он не накопительный и не может выбросить исключение.",[496,1106,1107,1114,1115,1118,1119,640],{},[499,1108,1109,1082,1111,1113],{},[474,1110,507],{},[474,1112,522],{}," нельзя сконструировать напрямую."," Оба класса защищают свой конструктор, и только ",[474,1116,1117],{},"getInstance()"," может создать синглтон; всегда получайте их через ",[474,1120,537],{},[466,1122,375],{"id":1123},"error-handling",[471,1125,1126,1128,1129,1131,1132,1134,1135,1042,1137,1042,1139,1141,1142,1144,1145,1147,1148,1150,1151,1153,1154,1156,1157,1160],{},[474,1127,537],{}," сам по себе никогда не выбрасывает исключений. ",[474,1130,1038],{}," возвращает ",[474,1133,1074],{}," для некорректного или не-строкового ввода вместо выброса. Хелперы BBAN (",[474,1136,957],{},[474,1138,977],{},[474,1140,990],{},") и путь проверки контрольной суммы выбрасывают ",[474,1143,1050],{}," только для кода страны без зарегистрированной ",[474,1146,1054],{}," — чего ",[474,1149,537],{}," никогда не производит, так как регистрирует каждую поддерживаемую страну при каждом вызове. ",[474,1152,507],{}," делегирует ",[474,1155,511],{},", который выбрасывает ",[474,1158,1159],{},"RangeError"," для недопустимой локали или опции, но не для числового ввода.",[466,1162,352],{"id":362},[471,1164,1165],{},"Валидация и форматирование IBAN:",[553,1167,1169],{"className":555,"code":1168,"language":557,"meta":478,"style":478},"import { useFormatter } from '@bitrix24\u002Fb24jssdk'\n\nconst { formatterIban } = useFormatter()\n\nformatterIban.isValid('DE89370400440532013000') \u002F\u002F true\nformatterIban.isValid('GB29NWBK60161331926818') \u002F\u002F false (неверная контрольная сумма)\n\nformatterIban.printFormat('GB29NWBK60161331926819') \u002F\u002F 'GB29 NWBK 6016 1331 9268 19'\nformatterIban.printFormat('GB29NWBK60161331926819', '-') \u002F\u002F 'GB29-NWBK-6016-1331-9268-19'\n\n\u002F\u002F Принимает слабо форматированный ввод (пробелы, нижний регистр)\nformatterIban.electronicFormat('GB29 NWBK 6016 1331 9268 19') \u002F\u002F 'GB29NWBK60161331926819'\n",[474,1170,1171,1189,1193,1209,1213,1234,1256,1260,1280,1310,1314,1319],{"__ignoreMap":478},[480,1172,1173,1175,1177,1179,1181,1183,1185,1187],{"class":562,"line":563},[480,1174,567],{"class":566},[480,1176,570],{"class":485},[480,1178,574],{"class":573},[480,1180,577],{"class":485},[480,1182,580],{"class":566},[480,1184,583],{"class":485},[480,1186,490],{"class":586},[480,1188,589],{"class":485},[480,1190,1191],{"class":562,"line":592},[480,1192,596],{"emptyLinePlaceholder":595},[480,1194,1195,1197,1199,1201,1203,1205,1207],{"class":562,"line":599},[480,1196,603],{"class":602},[480,1198,570],{"class":485},[480,1200,614],{"class":573},[480,1202,617],{"class":485},[480,1204,620],{"class":485},[480,1206,574],{"class":623},[480,1208,626],{"class":573},[480,1210,1211],{"class":562,"line":629},[480,1212,596],{"emptyLinePlaceholder":595},[480,1214,1215,1217,1219,1221,1223,1225,1227,1229,1232],{"class":562,"line":634},[480,1216,519],{"class":573},[480,1218,640],{"class":485},[480,1220,693],{"class":623},[480,1222,654],{"class":573},[480,1224,657],{"class":485},[480,1226,700],{"class":586},[480,1228,657],{"class":485},[480,1230,1231],{"class":573},") ",[480,1233,710],{"class":671},[480,1235,1236,1238,1240,1242,1244,1246,1249,1251,1253],{"class":562,"line":668},[480,1237,519],{"class":573},[480,1239,640],{"class":485},[480,1241,693],{"class":623},[480,1243,654],{"class":573},[480,1245,657],{"class":485},[480,1247,1248],{"class":586},"GB29NWBK60161331926818",[480,1250,657],{"class":485},[480,1252,1231],{"class":573},[480,1254,1255],{"class":671},"\u002F\u002F false (неверная контрольная сумма)\n",[480,1257,1258],{"class":562,"line":675},[480,1259,596],{"emptyLinePlaceholder":595},[480,1261,1262,1264,1266,1268,1270,1272,1274,1276,1278],{"class":562,"line":680},[480,1263,519],{"class":573},[480,1265,640],{"class":485},[480,1267,651],{"class":623},[480,1269,654],{"class":573},[480,1271,657],{"class":485},[480,1273,660],{"class":586},[480,1275,657],{"class":485},[480,1277,1231],{"class":573},[480,1279,672],{"class":671},[480,1281,1282,1284,1286,1288,1290,1292,1294,1296,1298,1300,1303,1305,1307],{"class":562,"line":707},[480,1283,519],{"class":573},[480,1285,640],{"class":485},[480,1287,651],{"class":623},[480,1289,654],{"class":573},[480,1291,657],{"class":485},[480,1293,660],{"class":586},[480,1295,657],{"class":485},[480,1297,611],{"class":485},[480,1299,583],{"class":485},[480,1301,1302],{"class":586},"-",[480,1304,657],{"class":485},[480,1306,1231],{"class":573},[480,1308,1309],{"class":671},"\u002F\u002F 'GB29-NWBK-6016-1331-9268-19'\n",[480,1311,1312],{"class":562,"line":713},[480,1313,596],{"emptyLinePlaceholder":595},[480,1315,1316],{"class":562,"line":718},[480,1317,1318],{"class":671},"\u002F\u002F Принимает слабо форматированный ввод (пробелы, нижний регистр)\n",[480,1320,1321,1323,1325,1327,1329,1331,1334,1336,1338],{"class":562,"line":743},[480,1322,519],{"class":573},[480,1324,640],{"class":485},[480,1326,942],{"class":623},[480,1328,654],{"class":573},[480,1330,657],{"class":485},[480,1332,1333],{"class":586},"GB29 NWBK 6016 1331 9268 19",[480,1335,657],{"class":485},[480,1337,1231],{"class":573},[480,1339,1340],{"class":671},"\u002F\u002F 'GB29NWBK60161331926819'\n",[471,1342,1343],{},"Конвертация между IBAN и BBAN:",[553,1345,1347],{"className":555,"code":1346,"language":557,"meta":478,"style":478},"import { useFormatter } from '@bitrix24\u002Fb24jssdk'\n\nconst { formatterIban } = useFormatter()\n\nformatterIban.toBBAN('GB29NWBK60161331926819') \u002F\u002F 'NWBK 601613 31926819'\nformatterIban.toBBAN('GB29NWBK60161331926819', '-') \u002F\u002F 'NWBK-601613-31926819'\n\nformatterIban.isValidBBAN('GB', 'NWBK60161331926819') \u002F\u002F true\nformatterIban.fromBBAN('GB', 'NWBK60161331926819') \u002F\u002F 'GB29NWBK60161331926819'\n",[474,1348,1349,1367,1371,1387,1391,1412,1441,1445,1475],{"__ignoreMap":478},[480,1350,1351,1353,1355,1357,1359,1361,1363,1365],{"class":562,"line":563},[480,1352,567],{"class":566},[480,1354,570],{"class":485},[480,1356,574],{"class":573},[480,1358,577],{"class":485},[480,1360,580],{"class":566},[480,1362,583],{"class":485},[480,1364,490],{"class":586},[480,1366,589],{"class":485},[480,1368,1369],{"class":562,"line":592},[480,1370,596],{"emptyLinePlaceholder":595},[480,1372,1373,1375,1377,1379,1381,1383,1385],{"class":562,"line":599},[480,1374,603],{"class":602},[480,1376,570],{"class":485},[480,1378,614],{"class":573},[480,1380,617],{"class":485},[480,1382,620],{"class":485},[480,1384,574],{"class":623},[480,1386,626],{"class":573},[480,1388,1389],{"class":562,"line":629},[480,1390,596],{"emptyLinePlaceholder":595},[480,1392,1393,1395,1397,1399,1401,1403,1405,1407,1409],{"class":562,"line":634},[480,1394,519],{"class":573},[480,1396,640],{"class":485},[480,1398,957],{"class":623},[480,1400,654],{"class":573},[480,1402,657],{"class":485},[480,1404,660],{"class":586},[480,1406,657],{"class":485},[480,1408,1231],{"class":573},[480,1410,1411],{"class":671},"\u002F\u002F 'NWBK 601613 31926819'\n",[480,1413,1414,1416,1418,1420,1422,1424,1426,1428,1430,1432,1434,1436,1438],{"class":562,"line":668},[480,1415,519],{"class":573},[480,1417,640],{"class":485},[480,1419,957],{"class":623},[480,1421,654],{"class":573},[480,1423,657],{"class":485},[480,1425,660],{"class":586},[480,1427,657],{"class":485},[480,1429,611],{"class":485},[480,1431,583],{"class":485},[480,1433,1302],{"class":586},[480,1435,657],{"class":485},[480,1437,1231],{"class":573},[480,1439,1440],{"class":671},"\u002F\u002F 'NWBK-601613-31926819'\n",[480,1442,1443],{"class":562,"line":675},[480,1444,596],{"emptyLinePlaceholder":595},[480,1446,1447,1449,1451,1453,1455,1457,1460,1462,1464,1466,1469,1471,1473],{"class":562,"line":680},[480,1448,519],{"class":573},[480,1450,640],{"class":485},[480,1452,990],{"class":623},[480,1454,654],{"class":573},[480,1456,657],{"class":485},[480,1458,1459],{"class":586},"GB",[480,1461,657],{"class":485},[480,1463,611],{"class":485},[480,1465,583],{"class":485},[480,1467,1468],{"class":586},"NWBK60161331926819",[480,1470,657],{"class":485},[480,1472,1231],{"class":573},[480,1474,710],{"class":671},[480,1476,1477,1479,1481,1483,1485,1487,1489,1491,1493,1495,1497,1499,1501],{"class":562,"line":707},[480,1478,519],{"class":573},[480,1480,640],{"class":485},[480,1482,977],{"class":623},[480,1484,654],{"class":573},[480,1486,657],{"class":485},[480,1488,1459],{"class":586},[480,1490,657],{"class":485},[480,1492,611],{"class":485},[480,1494,583],{"class":485},[480,1496,1468],{"class":586},[480,1498,657],{"class":485},[480,1500,1231],{"class":573},[480,1502,1340],{"class":671},[471,1504,1505],{},"Форматирование чисел с учётом локали:",[553,1507,1509],{"className":555,"code":1508,"language":557,"meta":478,"style":478},"import { useFormatter } from '@bitrix24\u002Fb24jssdk'\n\nconst { formatterNumber } = useFormatter()\n\nformatterNumber.format(1234) \u002F\u002F '1,234' (целое, 'en' по умолчанию)\nformatterNumber.format(1234.567) \u002F\u002F '1,234.57' (округлено до 2 знаков)\nformatterNumber.format(1234.5, 'de') \u002F\u002F '1.234,50'\n\nformatterNumber.setDefLocale('ru')\nformatterNumber.format(1234.5) \u002F\u002F '1 234.50' (ru-группировка, точка сохранена вместо запятой)\n",[474,1510,1511,1529,1533,1550,1554,1572,1589,1616,1620,1640],{"__ignoreMap":478},[480,1512,1513,1515,1517,1519,1521,1523,1525,1527],{"class":562,"line":563},[480,1514,567],{"class":566},[480,1516,570],{"class":485},[480,1518,574],{"class":573},[480,1520,577],{"class":485},[480,1522,580],{"class":566},[480,1524,583],{"class":485},[480,1526,490],{"class":586},[480,1528,589],{"class":485},[480,1530,1531],{"class":562,"line":592},[480,1532,596],{"emptyLinePlaceholder":595},[480,1534,1535,1537,1539,1542,1544,1546,1548],{"class":562,"line":599},[480,1536,603],{"class":602},[480,1538,570],{"class":485},[480,1540,1541],{"class":573}," formatterNumber ",[480,1543,617],{"class":485},[480,1545,620],{"class":485},[480,1547,574],{"class":623},[480,1549,626],{"class":573},[480,1551,1552],{"class":562,"line":629},[480,1553,596],{"emptyLinePlaceholder":595},[480,1555,1556,1558,1560,1562,1564,1567,1569],{"class":562,"line":634},[480,1557,503],{"class":573},[480,1559,640],{"class":485},[480,1561,732],{"class":623},[480,1563,654],{"class":573},[480,1565,1566],{"class":737},"1234",[480,1568,1231],{"class":573},[480,1570,1571],{"class":671},"\u002F\u002F '1,234' (целое, 'en' по умолчанию)\n",[480,1573,1574,1576,1578,1580,1582,1584,1586],{"class":562,"line":668},[480,1575,503],{"class":573},[480,1577,640],{"class":485},[480,1579,732],{"class":623},[480,1581,654],{"class":573},[480,1583,738],{"class":737},[480,1585,1231],{"class":573},[480,1587,1588],{"class":671},"\u002F\u002F '1,234.57' (округлено до 2 знаков)\n",[480,1590,1591,1593,1595,1597,1599,1602,1604,1606,1609,1611,1613],{"class":562,"line":675},[480,1592,503],{"class":573},[480,1594,640],{"class":485},[480,1596,732],{"class":623},[480,1598,654],{"class":573},[480,1600,1601],{"class":737},"1234.5",[480,1603,611],{"class":485},[480,1605,583],{"class":485},[480,1607,1608],{"class":586},"de",[480,1610,657],{"class":485},[480,1612,1231],{"class":573},[480,1614,1615],{"class":671},"\u002F\u002F '1.234,50'\n",[480,1617,1618],{"class":562,"line":680},[480,1619,596],{"emptyLinePlaceholder":595},[480,1621,1622,1624,1626,1628,1630,1632,1635,1637],{"class":562,"line":707},[480,1623,503],{"class":573},[480,1625,640],{"class":485},[480,1627,813],{"class":623},[480,1629,654],{"class":573},[480,1631,657],{"class":485},[480,1633,1634],{"class":586},"ru",[480,1636,657],{"class":485},[480,1638,1639],{"class":573},")\n",[480,1641,1642,1644,1646,1648,1650,1652,1654],{"class":562,"line":713},[480,1643,503],{"class":573},[480,1645,640],{"class":485},[480,1647,732],{"class":623},[480,1649,654],{"class":573},[480,1651,1601],{"class":737},[480,1653,1231],{"class":573},[480,1655,1656],{"class":671},"\u002F\u002F '1 234.50' (ru-группировка, точка сохранена вместо запятой)\n",[466,1658,1660],{"id":1659},"alternatives-and-recommendations","Альтернативы и рекомендации",[493,1662,1663,1678,1687,1710],{},[496,1664,1665,1677],{},[499,1666,1667,1668,1671,1672,1674,1675,640],{},"Используйте ",[474,1669,1670],{},"formatterIban.isValid"," для проверки пользовательского ввода перед вызовом ",[474,1673,651],{},"\u002F",[474,1676,957],{}," Оба метода форматирования только нормализуют строку — они не проверяют контрольную сумму, поэтому некорректный IBAN всё равно можно «напечатать» или сконвертировать.",[496,1679,1680,1686],{},[499,1681,1682,1683,1685],{},"Вызывайте ",[474,1684,537],{}," один раз на модуль\u002Fкомпонент и деструктурируйте то, что нужно."," Поскольку оба форматтера — синглтоны, нет смысла кэшировать возвращаемый объект самому, кроме как ради избавления от boilerplate деструктуризации.",[496,1688,1689,1699,1700,1703,1704,1706,1707,1709],{},[499,1690,1691,1692,640],{},"Для обычного форматирования тысяч\u002Fдесятичных без учёта локали предпочитайте ",[1693,1694,1696],"a",{"href":1695},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftools-text\u002F",[474,1697,1698],{},"Text.numberFormat"," ",[474,1701,1702],{},"formatterNumber.format"," учитывает локаль (через ",[474,1705,511],{},") и всегда округляет нецелые до ровно 2 знаков; ",[474,1708,1698],{}," позволяет явно выбрать число знаков и разделители, что соответствует серверному форматированию, используемому в остальных payload'ах Bitrix24 REST.",[496,1711,1712,1699,1717,1719,1720,1722,1723,1725],{},[499,1713,1714,1716],{},[474,1715,547],{}," существует в основном для внутреннего использования.",[474,1718,537],{}," уже регистрирует каждую поддерживаемую страну при каждом вызове; сама ",[474,1721,1054],{}," не экспортируется из ",[474,1724,490],{},", поэтому расширение списка стран из кода приложения сегодня не является поддерживаемым публичным сценарием.",[1727,1728,1729],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .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 .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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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":478,"searchDepth":592,"depth":592,"links":1731},[1732,1733,1738,1739,1740,1741],{"id":468,"depth":592,"text":469},{"id":749,"depth":592,"text":750,"children":1734},[1735,1736,1737],{"id":754,"depth":599,"text":537},{"id":801,"depth":599,"text":507},{"id":862,"depth":599,"text":522},{"id":1000,"depth":592,"text":1001},{"id":1123,"depth":592,"text":375},{"id":362,"depth":592,"text":352},{"id":1659,"depth":592,"text":1660},"md",[1744],{"label":316,"iconName":1745,"to":1746},"GitHubIcon","https:\u002F\u002Fgithub.com\u002Fbitrix24\u002Fb24jssdk\u002Fblob\u002Fmain\u002Fpackages\u002Fjssdk\u002Fsrc\u002Ftools\u002Fuse-formatters.ts",{},{"title":316},{"title":316,"description":319},"xo_yhaSXpWgssjI-1YpfAQ0bm_XnPxsG6kjqwdqjpOo",{"data":1752,"body":1753},{},{"type":1754,"children":1755},"root",[1756],{"type":1757,"tag":471,"props":1758,"children":1759},"element",{},[1760,1763,1768,1769,1774],{"type":1761,"value":1762},"text","Composable, возвращающий общие экземпляры ",{"type":1757,"tag":474,"props":1764,"children":1766},{"className":1765},[],[1767],{"type":1761,"value":507},{"type":1761,"value":1082},{"type":1757,"tag":474,"props":1770,"children":1772},{"className":1771},[],[1773],{"type":1761,"value":522},{"type":1761,"value":1775},", преднастроенные спецификациями стран.",1783080228926]