Как настроить отладку 1С через Бэк-офис Битрикс24 и исправить ошибки получения данных?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Работа с интеграцией 1С:Бэк-офис и Битрикс24 часто ставит перед разработчиком сложные задачи, так как 1С в данном случае запускается внутри веб-интерфейса CRM (в так называемом "слайдере"). Это создает дополнительные уровни абстракции, затрудняющие стандартную отладку. В этой статье мы подробно разберем, как активировать отладку в таком режиме, проанализируем особенности работы с динамическими реквизитами формы и выясним, почему данные из Битрикс24 могут не попадать в документы 1С.

Особенности работы 1С внутри Бэк-офиса Битрикс24

Для начала проанализируем, как именно Битрикс24 взаимодействует с 1С. Существует два основных режима запуска:

  1. Запуск в слайдере (IFrame): 1С открывается в правой части экрана Битрикс24. В URL передается параметр session и url (навигационная ссылка на объект 1С).
  2. Запуск в десктопном приложении: 1С открывается в отдельном окне приложения Битрикс24, где идентификация происходит по idUserB24.

Проблема заключается в том, что когда 1С работает внутри фрейма Битрикс24, стандартный механизм подключения отладчика "по умолчанию" часто не срабатывает. Выясним, как это исправить.

Настройка HTTP-отладки для веб-клиента

Если ваша база опубликована на веб-сервере (Apache или IIS), для отладки необходимо использовать протокол HTTP. Рассмотрим шаги по его активации:

Во-первых, убедитесь, что на сервере 1С включена отладка по HTTP. Во-вторых, необходимо правильно настроить файл публикации default.vrd. В секции debug атрибут url должен указывать на адрес вашего компьютера, где запущен Конфигуратор.

Пример настройки в default.vrd:

<debug enable="true" protocol="http" url="http://ваш-ip-адрес:1560" />

Важный нюанс: Чтобы веб-клиент инициировал сессию отладки, в адресную строку (которую формирует модуль Бэк-офиса) должен попасть параметр ?debug=http. Если вы тестируете функционал вручную, добавьте этот параметр в конец URL. Если же отладка нужна именно в момент вызова из Битрикс24, этот параметр должен добавляться программно в модуле интеграции, где формируется ссылка для открытия слайдера.

Проблема Cross-Origin и Cookie (SameSite)

Поскольку 1С открывается внутри iframe на домене Битрикс24, современные браузеры могут блокировать служебные запросы отладки из-за политики безопасности. Разберем, как это обойти:

  1. Публикация 1С обязательно должна работать по протоколу HTTPS.
  2. В настройках веб-сервера необходимо разрешить передачу Cookie с атрибутом SameSite=None; Secure. Без этого сессия отладки может "отваливаться" при переходе между страницами.

Исправление ошибок при работе с динамическими реквизитами

Часто в модулях Бэк-офиса реквизиты формы (такие как сессия, настройки взаимодействия) добавляются программно. Рассмотрим типичную ошибку разработчика, когда данные в форме есть, но код их "не видит".

При использовании метода ИзменитьРеквизиты() новые элементы не становятся статическими переменными модуля. Обращение к ним должно происходить через ЭтотОбъект. Проанализируем правильный код обработки создания формы и ее открытия:


&НаСервере
Процедура Б24_Бэк_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    ДобавляемыеРеквизиты = Новый Массив;
    ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Б24_Бэк_Сессия", Новый ОписаниеТипов("Строка")));
    ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Б24_Бэк_ЭтоДокументБэкофиса", Новый ОписаниеТипов("Булево")));
    
    ИзменитьРеквизиты(ДобавляемыеРеквизиты);
КонецПроцедуры

&НаКлиенте
Процедура Б24_Бэк_ПриОткрытииПосле(Отказ)
    // ОШИБКА: Б24_Бэк_Сессия = "Значение"; 
    // ПРАВИЛЬНО:
    ЭтотОбъект.Б24_Бэк_Сессия = Б24_Бэк_НастройкиСеанса.СессияБитрикс24;
    
    Если ЗначениеЗаполнено(ЭтотОбъект.Б24_Бэк_Сессия) Тогда
        ЭтотОбъект.Б24_Бэк_ЭтоДокументБэкофиса = Истина;
        ПодключитьОбработчикОжидания("Б24_Бэк_ПроверитьДанныеБитрикс24", 2, Истина);
    КонецЕсли;
КонецПроцедуры

Именно использование явного указания ЭтотОбъект позволяет корректно работать с программно созданными реквизитами в контексте управляемой формы.

Почему не подтягиваются данные из Битрикс24?

Рассмотрим ситуацию: отладка включена, код работает, но данные (Контрагент, Партнер) в новый документ не подставляются. Выясним основные причины:

1. Синхронизация сессий. Данные из Битрикс24 передаются в 1С асинхронно и записываются в регистр сведений Б24_Бэк_ДанныеДляНовыхДокументовИзБитрикс24. Ключом поиска выступает идентификатор сессии. Если в регистре сессия записана в одном формате (например, с кодированием URL), а в форму 1С она пришла в другом — поиск не даст результата.

2. Права доступа. Модуль Бэк-офиса активно использует фоновые задания и HTTP-сервисы. Убедитесь, что у пользователя, под которым работает интеграция, достаточно прав на чтение указанного регистра и на работу с соответствующими справочниками (Партнеры, Контрагенты).

3. Проверка коннекта. Зайдите в Битрикс24 на страницу "1С + CRM Битрикс24". Статус подключения в блоке настроек должен быть активен (желтый фон). Если используется тип соединения p&p (Push & Pull), проверьте, запущен ли в 1С отдельный сеанс, ожидающий команды от Битрикс24.

Альтернативный способ тестирования

Если отладка в веб-клиенте все же не поддается настройке, воспользуемся советом опытных разработчиков: эмулируйте работу Бэк-офиса в тонком клиенте. Для этого:

  1. В модуле управляемого приложения временно закомментируйте проверку на тип клиента (чтобы код Бэк-офиса срабатывал не только в веб-клиенте).
  2. Запустите тонкий клиент с ключом /c, передав в параметрах строку запуска, которую обычно формирует Битрикс24 (включая session и url).

Это позволит использовать привычную отладку тонкого клиента для поиска ошибок в логике заполнения документов.

Таким образом, успех отладки в Бэк-офисе зависит от трех факторов: правильной конфигурации default.vrd, учета специфики IFrame (HTTPS и SameSite) и внимательного отношения к программному созданию реквизитов формы. Соблюдая эти рекомендации, вы сможете эффективно диагностировать любые проблемы интеграции.

← На главную