Миграция на v3 (удаление legacy REST-поверхности)

Как уйти с устаревшей REST-поверхности, которая удаляется в Bitrix24 JS SDK 3.0.0.

Это руководство перечисляет всё, что помечено @deprecated в 2.0.0 и удаляется в 3.0.0, с канонической заменой для каждого символа.

Символы ниже всё ещё поставляются в 2.0.0 — они продолжают работать, но при каждом вызове выводят рантайм-предупреждение об устаревании. В 3.0.0 они удалены. Мигрируйте до перехода на 3.0.0.
Пошаговые diff-примеры для каждого метода — в руководстве v0 → v1 в разделе «Deprecated». Эта страница — сжатый чеклист удалений.

Что удаляется в 3.0.0

Legacy REST-шорткаты на AbstractB24

Эти шорткаты экземпляра игнорируют разделение restApi:v2 / restApi:v3 и заменяются явной поверхностью действий:

УдаленоЗамена
b24.callMethod(method, params, start)b24.actions.v{2,3}.call.make(options)
b24.callListMethod(method, params, progress, customKeyForResult)b24.actions.v{2,3}.callList.make(options) 1
b24.fetchListMethod(method, params, idKey, customKeyForResult)b24.actions.v{2,3}.fetchList.make(options) 1
b24.callBatch(calls, isHaltOnError, returnAjaxResult)b24.actions.v{2,3}.batch.make(options)
b24.callBatchByChunk(calls, isHaltOnError)b24.actions.v{2,3}.batchByChunk.make(options)
- await b24.callMethod('crm.deal.list', { filter: { '>id': 123 } }, 100)
+ await b24.actions.v2.call.make({
+   method: 'crm.deal.list',
+   params: { filter: { '>id': 123 }, start: 100 },
+   requestId: 'unique-request-id'
+ })

AbstractB24.batchSize

Максимальная длина ответа батча.

Статическая константа удалена. Впишите значение 50 вручную, если полагались на неё.

- if (size < AbstractB24.batchSize) {
+ if (size < 50) {
  // some code ...
}

Хелперы пагинации AjaxResult

Они завязаны на поля конверта restApi:v2 next / total, которые restApi:v3 не возвращает:

УдаленоЗамена
result.isMore()используйте хелперы списков — они полностью скрывают пагинацию
result.hasMore()используйте хелперы списков
result.getNext(http)используйте хелперы списков
result.fetchNext(http)используйте хелперы списков
result.getTotal()restApi:v2: используйте хелперы списков; в restApi:v3 пока нет счётчика элементов (планируется действие aggregate)

Замените ручную пагинацию на callList.make (собрать всё) или fetchList.make (асинхронный генератор):

- // ручная пагинация на устаревшей поверхности
- const res = await b24.callMethod('crm.deal.list', {})
- let list = res.getData().result
- while (res.isMore()) { res = await res.getNext(http); list.push(...res.getData().result) }
+ // хелпер списка итерирует за вас — `chunk` это очередной массив элементов
+ for await (const chunk of b24.actions.v2.fetchList.make({ method: 'crm.deal.list' })) {
+   // обрабатываем chunk
+ }

LoggerBrowser и LoggerType

Заменены универсальной системой Logger / LoggerFactory. Enum LoggerType удалён без замены — LoggerFactory управляет уровнями сам, поэтому просто уберите импорт:

- import { LoggerBrowser, LoggerType } from '@bitrix24/b24jssdk'
+ import { LoggerFactory } from '@bitrix24/b24jssdk'

- const $logger = LoggerBrowser.build('MyApp', import.meta.env?.DEV === true)
+ const $logger = LoggerFactory.createForBrowser('MyApp', import.meta.env?.DEV === true)

- $logger.info('response', dataList)
+ $logger.info('response', { someInfo: dataList })

Как найти все места вызова

Устаревшие символы выводят предупреждение JSSDK_CORE_DEPRECATED_METHOD в рантайме, а LoggerBrowser логирует @deprecated: use Logger. Быстрая статическая проверка:

grep -rnE 'callMethod|callListMethod|fetchListMethod|callBatch|callBatchByChunk|\.isMore\(|\.hasMore\(|\.getNext\(|\.fetchNext\(|\.getTotal\(|LoggerBrowser|LoggerType' src

Как только это ничего не вернёт — вы готовы к 3.0.0.

Footnotes

  1. Передавайте правильный idKey'ID' для классических list-методов, 'id' для crm.item.* / restApi:v3. Пропуск может привести к молча пустому результату. 2