sign 26.1200.0 Ломающее

Sign 26.1200.0: автоопределение бланков и удаление CRM API

4 мин чтения Устаревших API: 4
Узнавайте о ломающих изменениях Битрикса раньше, чем они доедут до прода: свежие разборы — в канале @bxmax_updates

Ломающее обновление

Удалены или изменены публичные API — прикладной код может перестать работать.

Sign 26.1200.0 упрощает загрузку документов КЭДО, добавляет списки сотрудников в робот и обновляет «Мой сейф» без перезагрузки страницы. Перед обновлением проверьте интеграции с CRM и сервисом бланков: четыре публичные точки API удалены, а CRM::saveCompanyStamp() сменил тип результата.

Новое

Загрузка сама определяет тип бланка

В B2E осталась одна область загрузки. Сервер определяет режим заполнения отдельно для каждого бланка: если его первый файл — DOCX, hasPlaceholders=true, иначе false. JPG, JPEG и PNG из одной пользовательской выборки объединяются в один документ; остальные файлы становятся отдельными документами, поэтому каждый DOCX получает true. Групповая операция при этом сохраняет защиту статусов документов.

Создание документа, групповая загрузка и замена бланка получили параметр autoDetectType. При создании можно передать expectedHasPlaceholders. Если ожидание расходится с распознанным типом, API отвечает ошибкой BLANK_TYPE_CONFIRMATION_REQUIRED и возвращает фактический hasPlaceholders.

Замена тоже учитывает тип. При переходе между DOCX с символьными кодами и документом с блоками интерфейс просит подтверждение, а после ошибки загрузки восстанавливает прежний бланк.

Ядро планирует порядок этапов

Новая точка расширения ManualFillingDecisionProvider отвечает, нужно ли ручное заполнение документа. Метод decide() возвращает одно из решений MANUAL_REQUIRED, NOT_REQUIRED, PENDING или ERROR, недостающие поля и признак завершённости. Сервис CompanyInitiatedPartyPlanService::plan() строит состав и очередность участников документа от компании.

Эта схема включается только при Feature::isKedoStageReorderEnabled(): провайдер должен быть готов, а соответствующая main-feature — включена. Тогда интерфейс скрывает ручной выбор редактора. Для документа от компании создатель становится первым редактором, если решение отличается от NOT_REQUIRED; за ним идут проверяющие, представитель и подписанты. Шаблоны и документы от сотрудника работают по прежней схеме.

Для интеграций появились MemberService::getB2eSignerParty() и MemberRepository::isEditorPartyBeforeReviewerParty().

Робот принимает списки сотрудников

SignB2EDocumentActivity теперь принимает отдельных сотрудников и списки подписантов. Настройка робота ищет списки, проверяет права, сохраняет название выбранного списка и разворачивает его состав. Лимит — 1000 сотрудников.

CRM-триггер защищён от повторов

После последнего редактора или проверяющего внутренний guard блокирует повторный запуск CRM-триггера SigningTrigger. Callback onSignedByReviewer(), onSignedByEditor() и notifyActivityChange() вызываются при каждом событии. Конкурирующие попытки запуска триггера синхронизируются блокировкой MySQL или PostgreSQL, а состояние хранится у участника со значениями pending и handled. MemberValidationCrmDispatchGuard помечен @internal. Внешнему коду доступен EventData::isMemberStatusChanged() для проверки смены статуса.

«Мой сейф» обновляется по Pull

Текущая страница грида обновляется после Pull-события. Автообновление учитывает ручной запрос грида, закрытие слайдера и изменение количества страниц. Ошибка появляется в уведомлении и в live announcer.

Что сломается

Удалены ProcessActivityHandler, CRM-провайдер Process и Container::getCrmProcessActivityHandler(). Внешний код с этими символами перестанет загружаться. Вместе с ними исчез провайдер CRM-дела SIGN_KEDO_PROCESS: Sign больше не создаёт дело «Процесс: ...» при привязке документа и не закрывает его после завершения бизнес-процесса.

Метода BlankService::getUploadedFilesTotalSize() больше нет. getUploadedFilesInfo() возвращает набор FileInfo, поэтому сумму размеров теперь считает вызывающий код.

CRM::saveCompanyStamp() возвращает Bitrix\Main\Result вместо bool. Условие if (CRM::saveCompanyStamp(...)) пропустит ошибку, потому что объект остаётся истинным. Проверяйте результат через isSuccess().

Параметры autoDetectType, expectedHasPlaceholders, orderByParty и previousStatus необязательны и имеют значения по умолчанию, поэтому старые позиционные вызовы сохраняют совместимость.

БД

Таблицы, колонки и индексы не менялись. Маркер однократной отправки CRM-триггера записывается в существующий META участника под ключом sign.validation_crm_dispatch.v1.

Регистрации crm:OnGetActivityProviders, bizproc:OnWorkflowComplete и bizproc:onAfterWorkflowKill убраны из установочной миграции вместе с CRM-провайдером процессов. Явного снятия уже зарегистрированных обработчиков нет, поэтому после обновления существующей коробки их стоит проверить.

Мелочи и находки

  • Добавлен код ошибки B2eErrorCode::SIGNING_FAILED.
  • При отказе CRM в сохранении печати интерфейс показывает ошибку прав и снимает бесконечное ожидание блока.
  • Размер бинарного файла считается через strlen(), поэтому лимит загрузки получает число байтов без занижения.

Устаревшие и удалённые API в этой версии

Символ Статус Чем заменять
Bitrix\Sign\Integration\CRM\Activity\ProcessActivityHandler Удалено —
Bitrix\Sign\Integration\CRM\Activity\Provider\Process Удалено —
Bitrix\Sign\Service\Container::getCrmProcessActivityHandler() Удалено —
Bitrix\Sign\Service\Sign\BlankService::getUploadedFilesTotalSize() Удалено Bitrix\Sign\Service\Sign\BlankService::getUploadedFilesInfo()

Новая версия вышла — разбор уже в Telegram

В канале @bxmax_updates публикуем каждый свежий разбор: что сломается, что устарело и что появилось в API. Узнаете до того, как обновите прод.

Подписаться

Читайте дальше

sign 26.1100.0 Ломающее Свежее

Sign 26.1100.0: ручное напоминание подписантам, скачивание шаблонов и REST провайдеров только для администратора

В sign 26.1100.0 подписантам можно напомнить из грида документа, подписание запускается из списка подписантов, а шаблоны и комплекты скачиваются незаполненными. REST провайдеров подписи теперь только для администратора, у сервисов списка символьных кодов новые сигнатуры. Версия требует main и humanr…

7 мин
sign 26.1000.0 Ломающее Свежее

Sign 26.1000.0: процессы КЭДО, цепочка роботов и лимит в 1000 подписантов

Sign 26.1000.0 добавляет запуск кадровых процессов и цепочку роботов «черновик → настройка → отправка», обе возможности по умолчанию выключены. Одновременно появился жёсткий лимит в 1000 уникальных подписантов. На портале с крупными отделами проверьте массовую отправку документов до обновления.

4 мин
sign 26.900.0 Заметное Свежее

Sign 26.900.0: представитель компании подписывает кадровые документы Госключом

Sign 26.900.0 для коробочного Битрикс24 добавляет в мастер КЭДО выбор, чем подписывает представитель компании: УКЭП или Госключом. Выбор появится только у компаний с провайдером goskey-lite и только там, где его открыл сервис подписи. Ещё переписали повторную отправку документа из таймлайна, и uid у…

3 мин
sign 26.800.0 Безопасность Свежее

Sign 26.800.0: закрыли доступ к чужим документам, к приглашению на подпись можно дописать текст

Sign 26.800.0 для коробочного Битрикс24 закрывает несколько дыр в проверке прав: часть AJAX-экшенов модуля не проверяла, есть ли у пользователя доступ к конкретному документу, группе или участнику. Если на портале подписывают документы, с сотрудниками или с клиентами, обновляйтесь. Из нового — текст…

2 мин
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…

Можно закрыть чат и перейти на другую страницу. Когда ответ будет готов, на кнопке Домового появится отметка.

Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти