[{"data":1,"prerenderedAt":2199},["ShallowReactive",2],{"navigation":3,"-docs-working-with-the-rest-api-tools-text":459,"-docs-working-with-the-rest-api-tools-text-description":2174},[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":306,"audited":461,"badge":15,"body":462,"category":303,"description":309,"extension":2165,"links":2166,"meta":2170,"navigation":2171,"path":307,"restApiVersion":15,"seo":2172,"stem":308,"__hash__":2173},"docs\u002Fdocs\u002F2.working-with-the-rest-api\u002F80.tools-text.md","2026-07-01",{"type":463,"value":464,"toc":2149},"minimark",[465,470,492,577,707,711,715,767,771,807,810,868,871,929,932,1006,1010,1095,1099,1125,1129,1174,1206,1328,1331,1377,1379,1382,1469,1472,1653,1656,1830,1833,2052,2056,2145],[466,467,469],"h2",{"id":468},"overview","Обзор",[471,472,473,483,484,487,488,491],"p",{},[474,475,479],"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,306],"span",{"class":482},"sBMFI"," — это синглтон (",[474,485,486],{},"new TextManager()","), экспортируемый из ",[474,489,490],{},"@bitrix24\u002Fb24jssdk",". Он объединяет небольшие хелперы для текста и дат, на которые SDK опирается внутри, и предоставляет их коду приложения:",[493,494,495,503,517,523,543,549,567],"ul",{},[496,497,498,502],"li",{},[499,500,501],"strong",{},"Идентификаторы"," — случайные строки, локально генерируемый UUID v4 и упорядоченный по времени UUID v7 (request id по умолчанию у SDK).",[496,504,505,508,509,512,513,516],{},[499,506,507],{},"Кодирование HTML-сущностей"," — ",[474,510,511],{},"encode"," \u002F ",[474,514,515],{},"decode"," в стиле legacy Bitrix Framework.",[496,518,519,522],{},[499,520,521],{},"Преобразование типов"," — приведение произвольных значений к числам, целым и булевым.",[496,524,525,508,528,531,532,531,535,538,539,542],{},[499,526,527],{},"Хелперы регистра",[474,529,530],{},"camelCase",", ",[474,533,534],{},"PascalCase",[474,536,537],{},"kebab-case"," и ",[474,540,541],{},"capitalize",".",[496,544,545,548],{},[499,546,547],{},"Форматирование чисел"," — группировка тысяч с фиксированным числом знаков после запятой.",[496,550,551,554,555,562,563,566],{},[499,552,553],{},"Хелперы дат"," — парсинг на ",[556,557,561],"a",{"href":558,"rel":559},"https:\u002F\u002Fmoment.github.io\u002Fluxon\u002F",[560],"nofollow","Luxon"," и формат ",[474,564,565],{},"yyyy-MM-dd'T'HH:mm:ssZZ",", который Bitrix24 ожидает в REST-payload.",[496,568,569,572,573,576],{},[499,570,571],{},"Query-строки"," — сборка строки ",[474,574,575],{},"application\u002Fx-www-form-urlencoded"," из обычного объекта.",[578,579,583],"pre",{"className":580,"code":581,"language":582,"meta":478,"style":478},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { Text } from '@bitrix24\u002Fb24jssdk'\n\nconsole.log(Text.getUuidRfc4122())          \u002F\u002F '019323ac-8ace-725b-a3dc-6a7c333da066'\nconsole.log(Text.getDateForLog())           \u002F\u002F '2026-05-04 09:53:51'\nconsole.log(Text.numberFormat(1234.567, 2)) \u002F\u002F '1,234.57'\n","ts",[474,584,585,616,623,650,672],{"__ignoreMap":478},[480,586,589,593,597,601,604,607,610,613],{"class":587,"line":588},"line",1,[480,590,592],{"class":591},"s7zQu","import",[480,594,596],{"class":595},"sMK4o"," {",[480,598,600],{"class":599},"sTEyZ"," Text",[480,602,603],{"class":595}," }",[480,605,606],{"class":591}," from",[480,608,609],{"class":595}," '",[480,611,490],{"class":612},"sfazB",[480,614,615],{"class":595},"'\n",[480,617,619],{"class":587,"line":618},2,[480,620,622],{"emptyLinePlaceholder":621},true,"\n",[480,624,626,629,631,635,638,640,643,646],{"class":587,"line":625},3,[480,627,628],{"class":599},"console",[480,630,542],{"class":595},[480,632,634],{"class":633},"s2Zo4","log",[480,636,637],{"class":599},"(Text",[480,639,542],{"class":595},[480,641,642],{"class":633},"getUuidRfc4122",[480,644,645],{"class":599},"())          ",[480,647,649],{"class":648},"sHwdD","\u002F\u002F '019323ac-8ace-725b-a3dc-6a7c333da066'\n",[480,651,653,655,657,659,661,663,666,669],{"class":587,"line":652},4,[480,654,628],{"class":599},[480,656,542],{"class":595},[480,658,634],{"class":633},[480,660,637],{"class":599},[480,662,542],{"class":595},[480,664,665],{"class":633},"getDateForLog",[480,667,668],{"class":599},"())           ",[480,670,671],{"class":648},"\u002F\u002F '2026-05-04 09:53:51'\n",[480,673,675,677,679,681,683,685,688,691,695,698,701,704],{"class":587,"line":674},5,[480,676,628],{"class":599},[480,678,542],{"class":595},[480,680,634],{"class":633},[480,682,637],{"class":599},[480,684,542],{"class":595},[480,686,687],{"class":633},"numberFormat",[480,689,690],{"class":599},"(",[480,692,694],{"class":693},"sbssI","1234.567",[480,696,697],{"class":595},",",[480,699,700],{"class":693}," 2",[480,702,703],{"class":599},")) ",[480,705,706],{"class":648},"\u002F\u002F '1,234.57'\n",[466,708,710],{"id":709},"method-signature","Сигнатура методов",[712,713,501],"h3",{"id":714},"identifiers",[578,716,718],{"className":476,"code":717,"language":477,"meta":478,"style":478},"getRandom(length?: number): string          \u002F\u002F случайные [a-z0-9], длина по умолчанию 8\ngetUniqId(): string                          \u002F\u002F UUID v4 (по возможности, локально)\ngetUuidRfc4122(): string                     \u002F\u002F UUID v7 (упорядоченный по времени) — request id по умолчанию у SDK\n",[474,719,720,746,757],{"__ignoreMap":478},[480,721,722,725,727,731,734,737,740,743],{"class":587,"line":588},[480,723,724],{"class":482},"getRandom",[480,726,690],{"class":595},[480,728,730],{"class":729},"sHdIc","length",[480,732,733],{"class":595},"?:",[480,735,736],{"class":482}," number",[480,738,739],{"class":595},"):",[480,741,742],{"class":482}," string",[480,744,745],{"class":648},"          \u002F\u002F случайные [a-z0-9], длина по умолчанию 8\n",[480,747,748,751,754],{"class":587,"line":618},[480,749,750],{"class":633},"getUniqId",[480,752,753],{"class":599},"(): string                          ",[480,755,756],{"class":648},"\u002F\u002F UUID v4 (по возможности, локально)\n",[480,758,759,761,764],{"class":587,"line":625},[480,760,642],{"class":633},[480,762,763],{"class":599},"(): string                     ",[480,765,766],{"class":648},"\u002F\u002F UUID v7 (упорядоченный по времени) — request id по умолчанию у SDK\n",[712,768,770],{"id":769},"entity-encoding","Кодирование сущностей",[578,772,774],{"className":476,"code":773,"language":477,"meta":478,"style":478},"encode(value: string): string                \u002F\u002F & \u003C > ' \"  → entity-коды (без завершающей ;)\ndecode(value: string): string                \u002F\u002F обратное к encode, также числовые сущности\n",[474,775,776,797],{"__ignoreMap":478},[480,777,778,780,782,785,788,790,792,794],{"class":587,"line":588},[480,779,511],{"class":482},[480,781,690],{"class":595},[480,783,784],{"class":729},"value",[480,786,787],{"class":595},":",[480,789,742],{"class":482},[480,791,739],{"class":595},[480,793,742],{"class":482},[480,795,796],{"class":648},"                \u002F\u002F & \u003C > ' \"  → entity-коды (без завершающей ;)\n",[480,798,799,801,804],{"class":587,"line":618},[480,800,515],{"class":633},[480,802,803],{"class":599},"(value: string): string                ",[480,805,806],{"class":648},"\u002F\u002F обратное к encode, также числовые сущности\n",[712,808,521],{"id":809},"type-conversion",[578,811,813],{"className":476,"code":812,"language":477,"meta":478,"style":478},"toNumber(value: any): number                 \u002F\u002F 0 при неудаче парсинга\ntoInteger(value: any): number                \u002F\u002F toNumber(parseInt(value, 10))\ntoBoolean(value: any, trueValues?: string[]): boolean \u002F\u002F 'true'\u002F'y'\u002F'1'\u002F1\u002Ftrue → true\n",[474,814,815,836,847],{"__ignoreMap":478},[480,816,817,820,822,824,826,829,831,833],{"class":587,"line":588},[480,818,819],{"class":482},"toNumber",[480,821,690],{"class":595},[480,823,784],{"class":729},[480,825,787],{"class":595},[480,827,828],{"class":482}," any",[480,830,739],{"class":595},[480,832,736],{"class":482},[480,834,835],{"class":648},"                 \u002F\u002F 0 при неудаче парсинга\n",[480,837,838,841,844],{"class":587,"line":618},[480,839,840],{"class":633},"toInteger",[480,842,843],{"class":599},"(value: any): number                ",[480,845,846],{"class":648},"\u002F\u002F toNumber(parseInt(value, 10))\n",[480,848,849,852,855,857,860,862,865],{"class":587,"line":625},[480,850,851],{"class":633},"toBoolean",[480,853,854],{"class":599},"(value: any",[480,856,697],{"class":595},[480,858,859],{"class":599}," trueValues",[480,861,733],{"class":595},[480,863,864],{"class":599}," string[]): boolean ",[480,866,867],{"class":648},"\u002F\u002F 'true'\u002F'y'\u002F'1'\u002F1\u002Ftrue → true\n",[712,869,527],{"id":870},"case-helpers",[578,872,874],{"className":476,"code":873,"language":477,"meta":478,"style":478},"toCamelCase(str: string): string\ntoPascalCase(str: string): string            \u002F\u002F capitalize(toCamelCase(str))\ntoKebabCase(str: string): string\ncapitalize(str: string): string\n",[474,875,876,895,915,923],{"__ignoreMap":478},[480,877,878,881,883,886,888,890,892],{"class":587,"line":588},[480,879,880],{"class":482},"toCamelCase",[480,882,690],{"class":595},[480,884,885],{"class":729},"str",[480,887,787],{"class":595},[480,889,742],{"class":482},[480,891,739],{"class":595},[480,893,894],{"class":482}," string\n",[480,896,897,900,902,904,906,908,910,912],{"class":587,"line":618},[480,898,899],{"class":482},"toPascalCase",[480,901,690],{"class":595},[480,903,885],{"class":729},[480,905,787],{"class":595},[480,907,742],{"class":482},[480,909,739],{"class":595},[480,911,742],{"class":482},[480,913,914],{"class":648},"            \u002F\u002F capitalize(toCamelCase(str))\n",[480,916,917,920],{"class":587,"line":625},[480,918,919],{"class":633},"toKebabCase",[480,921,922],{"class":599},"(str: string): string\n",[480,924,925,927],{"class":587,"line":652},[480,926,541],{"class":633},[480,928,922],{"class":599},[712,930,547],{"id":931},"number-formatting",[578,933,935],{"className":476,"code":934,"language":477,"meta":478,"style":478},"numberFormat(\n  number: number,\n  decimals?: number,        \u002F\u002F по умолчанию 0\n  decPoint?: string,        \u002F\u002F по умолчанию '.'\n  thousandsSep?: string     \u002F\u002F по умолчанию ','\n): string\n",[474,936,937,944,956,970,984,996],{"__ignoreMap":478},[480,938,939,941],{"class":587,"line":588},[480,940,687],{"class":482},[480,942,943],{"class":599},"(\n",[480,945,946,949,951,953],{"class":587,"line":618},[480,947,948],{"class":729},"  number",[480,950,787],{"class":595},[480,952,736],{"class":482},[480,954,955],{"class":595},",\n",[480,957,958,961,963,965,967],{"class":587,"line":625},[480,959,960],{"class":729},"  decimals",[480,962,733],{"class":595},[480,964,736],{"class":482},[480,966,697],{"class":595},[480,968,969],{"class":648},"        \u002F\u002F по умолчанию 0\n",[480,971,972,975,977,979,981],{"class":587,"line":652},[480,973,974],{"class":729},"  decPoint",[480,976,733],{"class":595},[480,978,742],{"class":482},[480,980,697],{"class":595},[480,982,983],{"class":648},"        \u002F\u002F по умолчанию '.'\n",[480,985,986,989,991,993],{"class":587,"line":674},[480,987,988],{"class":729},"  thousandsSep",[480,990,733],{"class":595},[480,992,742],{"class":482},[480,994,995],{"class":648},"     \u002F\u002F по умолчанию ','\n",[480,997,999,1002,1004],{"class":587,"line":998},6,[480,1000,1001],{"class":599},")",[480,1003,787],{"class":595},[480,1005,894],{"class":482},[712,1007,1009],{"id":1008},"date-helpers-luxon","Хелперы дат (Luxon)",[578,1011,1013],{"className":476,"code":1012,"language":477,"meta":478,"style":478},"toDateTime(dateString: string, template?: string, opts?: DateTimeOptions): DateTime\ntoB24Format(date: string | Date | DateTime): string   \u002F\u002F yyyy-MM-dd'T'HH:mm:ssZZ\ngetDateForLog(): string                                \u002F\u002F 'yyyy-MM-dd HH:mm:ss'\n",[474,1014,1015,1053,1085],{"__ignoreMap":478},[480,1016,1017,1020,1022,1025,1027,1029,1031,1034,1036,1038,1040,1043,1045,1048,1050],{"class":587,"line":588},[480,1018,1019],{"class":482},"toDateTime",[480,1021,690],{"class":595},[480,1023,1024],{"class":729},"dateString",[480,1026,787],{"class":595},[480,1028,742],{"class":482},[480,1030,697],{"class":595},[480,1032,1033],{"class":729}," template",[480,1035,733],{"class":595},[480,1037,742],{"class":482},[480,1039,697],{"class":595},[480,1041,1042],{"class":729}," opts",[480,1044,733],{"class":595},[480,1046,1047],{"class":482}," DateTimeOptions",[480,1049,739],{"class":595},[480,1051,1052],{"class":482}," DateTime\n",[480,1054,1055,1058,1060,1063,1065,1067,1070,1073,1075,1078,1080,1082],{"class":587,"line":618},[480,1056,1057],{"class":482},"toB24Format",[480,1059,690],{"class":595},[480,1061,1062],{"class":729},"date",[480,1064,787],{"class":595},[480,1066,742],{"class":482},[480,1068,1069],{"class":595}," |",[480,1071,1072],{"class":482}," Date",[480,1074,1069],{"class":595},[480,1076,1077],{"class":482}," DateTime",[480,1079,739],{"class":595},[480,1081,742],{"class":482},[480,1083,1084],{"class":648},"   \u002F\u002F yyyy-MM-dd'T'HH:mm:ssZZ\n",[480,1086,1087,1089,1092],{"class":587,"line":625},[480,1088,665],{"class":633},[480,1090,1091],{"class":599},"(): string                                ",[480,1093,1094],{"class":648},"\u002F\u002F 'yyyy-MM-dd HH:mm:ss'\n",[712,1096,1098],{"id":1097},"query-string","Query-строка",[578,1100,1102],{"className":476,"code":1101,"language":477,"meta":478,"style":478},"buildQueryString(params: any): string        \u002F\u002F application\u002Fx-www-form-urlencoded, без ведущего '?'\n",[474,1103,1104],{"__ignoreMap":478},[480,1105,1106,1109,1111,1114,1116,1118,1120,1122],{"class":587,"line":588},[480,1107,1108],{"class":482},"buildQueryString",[480,1110,690],{"class":595},[480,1112,1113],{"class":729},"params",[480,1115,787],{"class":595},[480,1117,828],{"class":482},[480,1119,739],{"class":595},[480,1121,742],{"class":482},[480,1123,1124],{"class":648},"        \u002F\u002F application\u002Fx-www-form-urlencoded, без ведущего '?'\n",[466,1126,1128],{"id":1127},"key-concepts","Ключевые понятия",[1130,1131,1132],"note",{},[471,1133,1134,512,1136,1138,1139,1142,1143,1146,1147,1150,1151,1153,1154,531,1157,1160,1161,1163,1164,1166,1167,1169,1170,1173],{},[474,1135,511],{},[474,1137,515],{}," намеренно опускают завершающую ",[474,1140,1141],{},";"," (например, ",[474,1144,1145],{},"&amp"," вместо ",[474,1148,1149],{},"&amp;","). Это соответствует поведению legacy Bitrix Framework. ",[474,1152,515],{}," разворачивает такой вывод и также распознаёт числовые сущности (",[474,1155,1156],{},"&#38",[474,1158,1159],{},"&#60",", …). Поскольку токены не несут ",[474,1162,1141],{},", завершающая ",[474,1165,1141],{}," во входе остаётся на месте (",[474,1168,1149],{}," → ",[474,1171,1172],{},"&;",").",[1175,1176,1177],"caution",{},[471,1178,1179,1181,1182,1185,1186,531,1189,531,1192,531,1195,538,1198,1201,1202,1205],{},[474,1180,511],{}," — это ",[499,1183,1184],{},"не"," универсальный HTML-санитайзер. Он экранирует только ",[474,1187,1188],{},"&",[474,1190,1191],{},"\u003C",[474,1193,1194],{},">",[474,1196,1197],{},"'",[474,1199,1200],{},"\""," и не учитывает контекст — он не остановит выход за пределы атрибута, ",[474,1203,1204],{},"javascript:","-URL или разметку вне этих пяти символов. Не используйте его как единственную защиту от XSS для недоверенного ввода, рендеримого как HTML.",[493,1207,1208,1222,1243,1272,1288,1316],{},[496,1209,1210,1217,1218,1221],{},[499,1211,1212,512,1214,1216],{},[474,1213,724],{},[474,1215,750],{}," не криптографически стойкие."," Оба построены на ",[474,1219,1220],{},"Math.random()"," — используйте их для ключей cache-busting и одноразовых id, но никогда для токенов или секретов.",[496,1223,1224,1229,1230,531,1233,1236,1237,1169,1240,1173],{},[499,1225,1226,1227,542],{},"Разделители ",[474,1228,880],{}," ",[474,1231,1232],{},"-",[474,1234,1235],{},"_"," и пробелы трактуются как границы слов; полностью заглавный вход приводится к нижнему регистру (",[474,1238,1239],{},"'ABC'",[474,1241,1242],{},"'abc'",[496,1244,1245,1229,1250,1169,1253,538,1256,1169,1259,1262,1263,1265,1266,1169,1269,1173],{},[499,1246,1247,1249],{},[474,1248,919],{}," разбивает по границам регистра.",[474,1251,1252],{},"getUserId",[474,1254,1255],{},"get-user-id",[474,1257,1258],{},"XMLHttpRequest",[474,1260,1261],{},"xml-http-request",", поэтому ",[474,1264,530],{}," и смешанные аббревиатуры обрабатываются. Один крайний случай: последовательность заглавных, сразу за которой идёт цифра, разбивается буква-за-буквой (",[474,1267,1268],{},"parseHTML5",[474,1270,1271],{},"parse-h-t-m-l-5",[496,1273,1274,1279,1280,1283,1284,1287],{},[499,1275,1276,1278],{},[474,1277,687],{}," соответствует серверу."," Не-конечные значения становятся ",[474,1281,1282],{},"0",", дробная часть округляется до ",[474,1285,1286],{},"decimals"," знаков, а разделитель тысяч вставляется каждые три цифры слева от десятичной точки.",[496,1289,1290,1299,1300,1303,1304,1307,1308,1311,1312,1315],{},[499,1291,1292,1294,1295,1298],{},[474,1293,1019],{}," возвращает ",[474,1296,1297],{},"DateTime"," даже для некорректного ввода."," Когда передан ",[474,1301,1302],{},"template",", используется ",[474,1305,1306],{},"DateTime.fromFormat",", иначе ",[474,1309,1310],{},"DateTime.fromISO",". Проверяйте ",[474,1313,1314],{},"result.isValid"," перед использованием.",[496,1317,1318,1323,1324,1327],{},[499,1319,1320,1322],{},[474,1321,1057],{}," пропускает строки без изменений"," (считаются уже отформатированными); JS-",[474,1325,1326],{},"Date"," сначала нормализуется через Luxon.",[466,1329,375],{"id":1330},"error-handling",[471,1332,1333,1334,1336,1337,512,1339,1341,1342,531,1344,1294,1346,531,1349,1294,1352,1355,1356,512,1358,1360,1361,1363,1364,1366,1367,1370,1371,1373,1374,1376],{},"Хелперы ",[474,1335,306],{}," не выбрасывают исключений для неожиданного ввода — они деградируют мягко: ",[474,1338,819],{},[474,1340,840],{}," возвращают ",[474,1343,1282],{},[474,1345,851],{},[474,1347,1348],{},"false",[474,1350,1351],{},"buildQueryString(null)",[474,1353,1354],{},"''",", а ",[474,1357,511],{},[474,1359,515],{}," возвращают не-строковые значения без изменений. ",[474,1362,1019],{}," тоже никогда не выбрасывает — он возвращает ",[474,1365,1297],{},", чей флаг ",[474,1368,1369],{},"isValid"," равен ",[474,1372,1348],{}," для неразбираемого ввода, поэтому проверяйте ",[474,1375,1314],{}," перед использованием значения.",[466,1378,352],{"id":362},[471,1380,1381],{},"Идентификаторы и request id:",[578,1383,1385],{"className":580,"code":1384,"language":582,"meta":478,"style":478},"import { Text } from '@bitrix24\u002Fb24jssdk'\n\nText.getRandom()          \u002F\u002F 'a7f3k1z9'\nText.getRandom(4)         \u002F\u002F 'p2x8'\nText.getUniqId()          \u002F\u002F 'd2b8a1f0-3c4e-4a9b-8f7c-1e2d3a4b5c6d'  (UUID v4)\nText.getUuidRfc4122()     \u002F\u002F '019323ac-8ace-725b-a3dc-6a7c333da066'  (UUID v7)\n",[474,1386,1387,1405,1409,1423,1442,1455],{"__ignoreMap":478},[480,1388,1389,1391,1393,1395,1397,1399,1401,1403],{"class":587,"line":588},[480,1390,592],{"class":591},[480,1392,596],{"class":595},[480,1394,600],{"class":599},[480,1396,603],{"class":595},[480,1398,606],{"class":591},[480,1400,609],{"class":595},[480,1402,490],{"class":612},[480,1404,615],{"class":595},[480,1406,1407],{"class":587,"line":618},[480,1408,622],{"emptyLinePlaceholder":621},[480,1410,1411,1413,1415,1417,1420],{"class":587,"line":625},[480,1412,306],{"class":599},[480,1414,542],{"class":595},[480,1416,724],{"class":633},[480,1418,1419],{"class":599},"()          ",[480,1421,1422],{"class":648},"\u002F\u002F 'a7f3k1z9'\n",[480,1424,1425,1427,1429,1431,1433,1436,1439],{"class":587,"line":652},[480,1426,306],{"class":599},[480,1428,542],{"class":595},[480,1430,724],{"class":633},[480,1432,690],{"class":599},[480,1434,1435],{"class":693},"4",[480,1437,1438],{"class":599},")         ",[480,1440,1441],{"class":648},"\u002F\u002F 'p2x8'\n",[480,1443,1444,1446,1448,1450,1452],{"class":587,"line":674},[480,1445,306],{"class":599},[480,1447,542],{"class":595},[480,1449,750],{"class":633},[480,1451,1419],{"class":599},[480,1453,1454],{"class":648},"\u002F\u002F 'd2b8a1f0-3c4e-4a9b-8f7c-1e2d3a4b5c6d'  (UUID v4)\n",[480,1456,1457,1459,1461,1463,1466],{"class":587,"line":998},[480,1458,306],{"class":599},[480,1460,542],{"class":595},[480,1462,642],{"class":633},[480,1464,1465],{"class":599},"()     ",[480,1467,1468],{"class":648},"\u002F\u002F '019323ac-8ace-725b-a3dc-6a7c333da066'  (UUID v7)\n",[471,1470,1471],{},"Кодирование и преобразование типов:",[578,1473,1475],{"className":580,"code":1474,"language":582,"meta":478,"style":478},"import { Text } from '@bitrix24\u002Fb24jssdk'\n\nText.encode('\u003Cb>Tom & Jerry\u003C\u002Fb>') \u002F\u002F '&ltb&gtTom &amp Jerry&lt\u002Fb&gt'\nText.decode('&ltb&gtTom &amp Jerry&lt\u002Fb&gt') \u002F\u002F '\u003Cb>Tom & Jerry\u003C\u002Fb>'\n\nText.toNumber('12.5')     \u002F\u002F 12.5\nText.toInteger('42.9')    \u002F\u002F 42\nText.toBoolean('Y')       \u002F\u002F true\nText.toBoolean('on', ['on']) \u002F\u002F true\n",[474,1476,1477,1495,1499,1522,1544,1548,1571,1595,1619],{"__ignoreMap":478},[480,1478,1479,1481,1483,1485,1487,1489,1491,1493],{"class":587,"line":588},[480,1480,592],{"class":591},[480,1482,596],{"class":595},[480,1484,600],{"class":599},[480,1486,603],{"class":595},[480,1488,606],{"class":591},[480,1490,609],{"class":595},[480,1492,490],{"class":612},[480,1494,615],{"class":595},[480,1496,1497],{"class":587,"line":618},[480,1498,622],{"emptyLinePlaceholder":621},[480,1500,1501,1503,1505,1507,1509,1511,1514,1516,1519],{"class":587,"line":625},[480,1502,306],{"class":599},[480,1504,542],{"class":595},[480,1506,511],{"class":633},[480,1508,690],{"class":599},[480,1510,1197],{"class":595},[480,1512,1513],{"class":612},"\u003Cb>Tom & Jerry\u003C\u002Fb>",[480,1515,1197],{"class":595},[480,1517,1518],{"class":599},") ",[480,1520,1521],{"class":648},"\u002F\u002F '&ltb&gtTom &amp Jerry&lt\u002Fb&gt'\n",[480,1523,1524,1526,1528,1530,1532,1534,1537,1539,1541],{"class":587,"line":652},[480,1525,306],{"class":599},[480,1527,542],{"class":595},[480,1529,515],{"class":633},[480,1531,690],{"class":599},[480,1533,1197],{"class":595},[480,1535,1536],{"class":612},"&ltb&gtTom &amp Jerry&lt\u002Fb&gt",[480,1538,1197],{"class":595},[480,1540,1518],{"class":599},[480,1542,1543],{"class":648},"\u002F\u002F '\u003Cb>Tom & Jerry\u003C\u002Fb>'\n",[480,1545,1546],{"class":587,"line":674},[480,1547,622],{"emptyLinePlaceholder":621},[480,1549,1550,1552,1554,1556,1558,1560,1563,1565,1568],{"class":587,"line":998},[480,1551,306],{"class":599},[480,1553,542],{"class":595},[480,1555,819],{"class":633},[480,1557,690],{"class":599},[480,1559,1197],{"class":595},[480,1561,1562],{"class":612},"12.5",[480,1564,1197],{"class":595},[480,1566,1567],{"class":599},")     ",[480,1569,1570],{"class":648},"\u002F\u002F 12.5\n",[480,1572,1574,1576,1578,1580,1582,1584,1587,1589,1592],{"class":587,"line":1573},7,[480,1575,306],{"class":599},[480,1577,542],{"class":595},[480,1579,840],{"class":633},[480,1581,690],{"class":599},[480,1583,1197],{"class":595},[480,1585,1586],{"class":612},"42.9",[480,1588,1197],{"class":595},[480,1590,1591],{"class":599},")    ",[480,1593,1594],{"class":648},"\u002F\u002F 42\n",[480,1596,1598,1600,1602,1604,1606,1608,1611,1613,1616],{"class":587,"line":1597},8,[480,1599,306],{"class":599},[480,1601,542],{"class":595},[480,1603,851],{"class":633},[480,1605,690],{"class":599},[480,1607,1197],{"class":595},[480,1609,1610],{"class":612},"Y",[480,1612,1197],{"class":595},[480,1614,1615],{"class":599},")       ",[480,1617,1618],{"class":648},"\u002F\u002F true\n",[480,1620,1622,1624,1626,1628,1630,1632,1635,1637,1639,1642,1644,1646,1648,1651],{"class":587,"line":1621},9,[480,1623,306],{"class":599},[480,1625,542],{"class":595},[480,1627,851],{"class":633},[480,1629,690],{"class":599},[480,1631,1197],{"class":595},[480,1633,1634],{"class":612},"on",[480,1636,1197],{"class":595},[480,1638,697],{"class":595},[480,1640,1641],{"class":599}," [",[480,1643,1197],{"class":595},[480,1645,1634],{"class":612},[480,1647,1197],{"class":595},[480,1649,1650],{"class":599},"]) ",[480,1652,1618],{"class":648},[471,1654,1655],{},"Хелперы регистра и форматирование чисел:",[578,1657,1659],{"className":580,"code":1658,"language":582,"meta":478,"style":478},"import { Text } from '@bitrix24\u002Fb24jssdk'\n\nText.toCamelCase('get_user_id')  \u002F\u002F 'getUserId'\nText.toPascalCase('get_user_id') \u002F\u002F 'GetUserId'\nText.toKebabCase('getUserId')    \u002F\u002F 'get-user-id'\nText.capitalize('hello')         \u002F\u002F 'Hello'\n\nText.numberFormat(1234.567, 2)           \u002F\u002F '1,234.57'\nText.numberFormat(1234.567, 2, ',', ' ') \u002F\u002F '1 234,57'\n",[474,1660,1661,1679,1683,1706,1727,1748,1770,1774,1795],{"__ignoreMap":478},[480,1662,1663,1665,1667,1669,1671,1673,1675,1677],{"class":587,"line":588},[480,1664,592],{"class":591},[480,1666,596],{"class":595},[480,1668,600],{"class":599},[480,1670,603],{"class":595},[480,1672,606],{"class":591},[480,1674,609],{"class":595},[480,1676,490],{"class":612},[480,1678,615],{"class":595},[480,1680,1681],{"class":587,"line":618},[480,1682,622],{"emptyLinePlaceholder":621},[480,1684,1685,1687,1689,1691,1693,1695,1698,1700,1703],{"class":587,"line":625},[480,1686,306],{"class":599},[480,1688,542],{"class":595},[480,1690,880],{"class":633},[480,1692,690],{"class":599},[480,1694,1197],{"class":595},[480,1696,1697],{"class":612},"get_user_id",[480,1699,1197],{"class":595},[480,1701,1702],{"class":599},")  ",[480,1704,1705],{"class":648},"\u002F\u002F 'getUserId'\n",[480,1707,1708,1710,1712,1714,1716,1718,1720,1722,1724],{"class":587,"line":652},[480,1709,306],{"class":599},[480,1711,542],{"class":595},[480,1713,899],{"class":633},[480,1715,690],{"class":599},[480,1717,1197],{"class":595},[480,1719,1697],{"class":612},[480,1721,1197],{"class":595},[480,1723,1518],{"class":599},[480,1725,1726],{"class":648},"\u002F\u002F 'GetUserId'\n",[480,1728,1729,1731,1733,1735,1737,1739,1741,1743,1745],{"class":587,"line":674},[480,1730,306],{"class":599},[480,1732,542],{"class":595},[480,1734,919],{"class":633},[480,1736,690],{"class":599},[480,1738,1197],{"class":595},[480,1740,1252],{"class":612},[480,1742,1197],{"class":595},[480,1744,1591],{"class":599},[480,1746,1747],{"class":648},"\u002F\u002F 'get-user-id'\n",[480,1749,1750,1752,1754,1756,1758,1760,1763,1765,1767],{"class":587,"line":998},[480,1751,306],{"class":599},[480,1753,542],{"class":595},[480,1755,541],{"class":633},[480,1757,690],{"class":599},[480,1759,1197],{"class":595},[480,1761,1762],{"class":612},"hello",[480,1764,1197],{"class":595},[480,1766,1438],{"class":599},[480,1768,1769],{"class":648},"\u002F\u002F 'Hello'\n",[480,1771,1772],{"class":587,"line":1573},[480,1773,622],{"emptyLinePlaceholder":621},[480,1775,1776,1778,1780,1782,1784,1786,1788,1790,1793],{"class":587,"line":1597},[480,1777,306],{"class":599},[480,1779,542],{"class":595},[480,1781,687],{"class":633},[480,1783,690],{"class":599},[480,1785,694],{"class":693},[480,1787,697],{"class":595},[480,1789,700],{"class":693},[480,1791,1792],{"class":599},")           ",[480,1794,706],{"class":648},[480,1796,1797,1799,1801,1803,1805,1807,1809,1811,1813,1815,1817,1819,1821,1823,1825,1827],{"class":587,"line":1621},[480,1798,306],{"class":599},[480,1800,542],{"class":595},[480,1802,687],{"class":633},[480,1804,690],{"class":599},[480,1806,694],{"class":693},[480,1808,697],{"class":595},[480,1810,700],{"class":693},[480,1812,697],{"class":595},[480,1814,609],{"class":595},[480,1816,697],{"class":612},[480,1818,1197],{"class":595},[480,1820,697],{"class":595},[480,1822,609],{"class":595},[480,1824,609],{"class":595},[480,1826,1518],{"class":599},[480,1828,1829],{"class":648},"\u002F\u002F '1 234,57'\n",[471,1831,1832],{},"Даты и query-строки:",[578,1834,1836],{"className":580,"code":1835,"language":582,"meta":478,"style":478},"import { Text } from '@bitrix24\u002Fb24jssdk'\n\n\u002F\u002F Форматирование даты для REST-payload\nText.toB24Format(new Date()) \u002F\u002F '2026-05-04T09:53:51+03:00'\n\n\u002F\u002F Разбор ISO-строки или кастомного шаблона\nconst dt = Text.toDateTime('04.05.2026', 'dd.MM.yyyy')\nif (dt.isValid) {\n  console.log(dt.toISODate()) \u002F\u002F '2026-05-04'\n}\n\n\u002F\u002F Сборка query-строки (ведущий '?' не включается)\nText.buildQueryString({ id: 7, tag: ['a', 'b'] })\n\u002F\u002F 'id=7&tag%5B0%5D=a&tag%5B1%5D=b'\n",[474,1837,1838,1856,1860,1865,1886,1890,1895,1934,1950,1975,1981,1986,1992,2046],{"__ignoreMap":478},[480,1839,1840,1842,1844,1846,1848,1850,1852,1854],{"class":587,"line":588},[480,1841,592],{"class":591},[480,1843,596],{"class":595},[480,1845,600],{"class":599},[480,1847,603],{"class":595},[480,1849,606],{"class":591},[480,1851,609],{"class":595},[480,1853,490],{"class":612},[480,1855,615],{"class":595},[480,1857,1858],{"class":587,"line":618},[480,1859,622],{"emptyLinePlaceholder":621},[480,1861,1862],{"class":587,"line":625},[480,1863,1864],{"class":648},"\u002F\u002F Форматирование даты для REST-payload\n",[480,1866,1867,1869,1871,1873,1875,1878,1880,1883],{"class":587,"line":652},[480,1868,306],{"class":599},[480,1870,542],{"class":595},[480,1872,1057],{"class":633},[480,1874,690],{"class":599},[480,1876,1877],{"class":595},"new",[480,1879,1072],{"class":633},[480,1881,1882],{"class":599},"()) ",[480,1884,1885],{"class":648},"\u002F\u002F '2026-05-04T09:53:51+03:00'\n",[480,1887,1888],{"class":587,"line":674},[480,1889,622],{"emptyLinePlaceholder":621},[480,1891,1892],{"class":587,"line":998},[480,1893,1894],{"class":648},"\u002F\u002F Разбор ISO-строки или кастомного шаблона\n",[480,1896,1897,1901,1904,1907,1909,1911,1913,1915,1917,1920,1922,1924,1926,1929,1931],{"class":587,"line":1573},[480,1898,1900],{"class":1899},"spNyl","const",[480,1902,1903],{"class":599}," dt ",[480,1905,1906],{"class":595},"=",[480,1908,600],{"class":599},[480,1910,542],{"class":595},[480,1912,1019],{"class":633},[480,1914,690],{"class":599},[480,1916,1197],{"class":595},[480,1918,1919],{"class":612},"04.05.2026",[480,1921,1197],{"class":595},[480,1923,697],{"class":595},[480,1925,609],{"class":595},[480,1927,1928],{"class":612},"dd.MM.yyyy",[480,1930,1197],{"class":595},[480,1932,1933],{"class":599},")\n",[480,1935,1936,1939,1942,1944,1947],{"class":587,"line":1597},[480,1937,1938],{"class":591},"if",[480,1940,1941],{"class":599}," (dt",[480,1943,542],{"class":595},[480,1945,1946],{"class":599},"isValid) ",[480,1948,1949],{"class":595},"{\n",[480,1951,1952,1955,1957,1959,1962,1965,1967,1970,1972],{"class":587,"line":1621},[480,1953,1954],{"class":599},"  console",[480,1956,542],{"class":595},[480,1958,634],{"class":633},[480,1960,690],{"class":1961},"swJcz",[480,1963,1964],{"class":599},"dt",[480,1966,542],{"class":595},[480,1968,1969],{"class":633},"toISODate",[480,1971,1882],{"class":1961},[480,1973,1974],{"class":648},"\u002F\u002F '2026-05-04'\n",[480,1976,1978],{"class":587,"line":1977},10,[480,1979,1980],{"class":595},"}\n",[480,1982,1984],{"class":587,"line":1983},11,[480,1985,622],{"emptyLinePlaceholder":621},[480,1987,1989],{"class":587,"line":1988},12,[480,1990,1991],{"class":648},"\u002F\u002F Сборка query-строки (ведущий '?' не включается)\n",[480,1993,1995,1997,1999,2001,2003,2006,2009,2011,2014,2016,2019,2021,2023,2025,2027,2029,2031,2033,2036,2038,2041,2044],{"class":587,"line":1994},13,[480,1996,306],{"class":599},[480,1998,542],{"class":595},[480,2000,1108],{"class":633},[480,2002,690],{"class":599},[480,2004,2005],{"class":595},"{",[480,2007,2008],{"class":1961}," id",[480,2010,787],{"class":595},[480,2012,2013],{"class":693}," 7",[480,2015,697],{"class":595},[480,2017,2018],{"class":1961}," tag",[480,2020,787],{"class":595},[480,2022,1641],{"class":599},[480,2024,1197],{"class":595},[480,2026,556],{"class":612},[480,2028,1197],{"class":595},[480,2030,697],{"class":595},[480,2032,609],{"class":595},[480,2034,2035],{"class":612},"b",[480,2037,1197],{"class":595},[480,2039,2040],{"class":599},"] ",[480,2042,2043],{"class":595},"}",[480,2045,1933],{"class":599},[480,2047,2049],{"class":587,"line":2048},14,[480,2050,2051],{"class":648},"\u002F\u002F 'id=7&tag%5B0%5D=a&tag%5B1%5D=b'\n",[466,2053,2055],{"id":2054},"alternatives-and-recommendations","Альтернативы и рекомендации",[493,2057,2058,2073,2089,2112,2125],{},[496,2059,2060,2069,2070,2072],{},[499,2061,2062,2063,1146,2066,542],{},"Предпочитайте ",[474,2064,2065],{},"getUuidRfc4122()",[474,2067,2068],{},"getUniqId()"," Идентификатор v7 упорядочен по времени и совместим с RFC 4122 — поэтому SDK использует его как request id по умолчанию. Берите ",[474,2071,2068],{}," (UUID v4) только когда вам конкретно нужен случайный, несортируемый id, и ни то ни другое — когда нужна криптографическая случайность.",[496,2074,2075,2081,2082,2084,2085,542],{},[499,2076,2077,2078,2080],{},"Используйте ",[474,2079,1057],{}," для каждой даты, которую отправляете в REST API."," Передача сырого ",[474,2083,1326],{}," или ISO-строки с неверным смещением — самая частая причина несовпадений фильтров; примеры фильтров по диапазону дат см. в ",[556,2086,2088],{"href":2087},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Ffiltering\u002F","Фильтрации",[496,2090,2091,1229,2099,2101,2102,2104,2105,531,2108,2111],{},[499,2092,2093,2094,542],{},"Проверки типов в runtime живут в ",[556,2095,2097],{"href":2096},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftools-type\u002F",[474,2098,311],{},[474,2100,306],{}," сфокусирован на преобразовании; используйте проверки ",[474,2103,311],{}," (",[474,2106,2107],{},"isStringFilled",[474,2109,2110],{},"isArrayFilled",", …), когда сначала нужно ветвиться по форме значения.",[496,2113,2114,1229,2122,2124],{},[499,2115,2116,2117,542],{},"Форматирование валюты \u002F IBAN с учётом локали живёт в ",[556,2118,2120],{"href":2119},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftools-use-formatters\u002F",[474,2121,316],{},[474,2123,687],{}," — это лёгкий хелпер тысяч-и-десятичных; для валюты, процентов или IBAN используйте специализированные форматтеры.",[496,2126,2127,1229,2130,2132,2133,512,2135,2137,2138,2140,2141,2144],{},[499,2128,2129],{},"Для чего-либо богаче парсинга работайте с Luxon напрямую.",[474,2131,1019],{}," — тонкая обёртка над ",[474,2134,1310],{},[474,2136,1306],{},"; для арифметики, зон и длительностей импортируйте ",[474,2139,1297],{}," из ",[474,2142,2143],{},"luxon"," и оперируйте возвращённым значением.",[2146,2147,2148],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}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 .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 .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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":478,"searchDepth":618,"depth":618,"links":2150},[2151,2152,2161,2162,2163,2164],{"id":468,"depth":618,"text":469},{"id":709,"depth":618,"text":710,"children":2153},[2154,2155,2156,2157,2158,2159,2160],{"id":714,"depth":625,"text":501},{"id":769,"depth":625,"text":770},{"id":809,"depth":625,"text":521},{"id":870,"depth":625,"text":527},{"id":931,"depth":625,"text":547},{"id":1008,"depth":625,"text":1009},{"id":1097,"depth":625,"text":1098},{"id":1127,"depth":618,"text":1128},{"id":1330,"depth":618,"text":375},{"id":362,"depth":618,"text":352},{"id":2054,"depth":618,"text":2055},"md",[2167],{"label":306,"iconName":2168,"to":2169},"GitHubIcon","https:\u002F\u002Fgithub.com\u002Fbitrix24\u002Fb24jssdk\u002Fblob\u002Fmain\u002Fpackages\u002Fjssdk\u002Fsrc\u002Ftools\u002Ftext.ts",{},{"title":306},{"title":306,"description":309},"j8OEQ5gRYVKFev6I6nSuuKtA5Xa758_bAHnBEz_lI6U",{"data":2175,"body":2176},{},{"type":2177,"children":2178},"root",[2179],{"type":2180,"tag":471,"props":2181,"children":2182},"element",{},[2183,2186,2191,2192,2197],{"type":2184,"value":2185},"text","Утилиты для текста и дат — UUID v4 \u002F v7, кодирование \u002F декодирование HTML-сущностей, преобразования типов, хелперы регистра, ",{"type":2180,"tag":474,"props":2187,"children":2189},{"className":2188},[],[2190],{"type":2184,"value":1019},{"type":2184,"value":512},{"type":2180,"tag":474,"props":2193,"children":2195},{"className":2194},[],[2196],{"type":2184,"value":1057},{"type":2184,"value":2198}," на Luxon, форматирование чисел и конструктор query-строки.",1783080220050]