Работа с интеграцией 1С:Бэк-офис и Битрикс24 часто ставит перед разработчиком сложные задачи, так как 1С в данном случае запускается внутри веб-интерфейса CRM (в так называемом "слайдере"). Это создает дополнительные уровни абстракции, затрудняющие стандартную отладку. В этой статье мы подробно разберем, как активировать отладку в таком режиме, проанализируем особенности работы с динамическими реквизитами формы и выясним, почему данные из Битрикс24 могут не попадать в документы 1С.
Для начала проанализируем, как именно Битрикс24 взаимодействует с 1С. Существует два основных режима запуска:
session и url (навигационная ссылка на объект 1С).idUserB24.Проблема заключается в том, что когда 1С работает внутри фрейма Битрикс24, стандартный механизм подключения отладчика "по умолчанию" часто не срабатывает. Выясним, как это исправить.
Если ваша база опубликована на веб-сервере (Apache или IIS), для отладки необходимо использовать протокол HTTP. Рассмотрим шаги по его активации:
Во-первых, убедитесь, что на сервере 1С включена отладка по HTTP. Во-вторых, необходимо правильно настроить файл публикации default.vrd. В секции debug атрибут url должен указывать на адрес вашего компьютера, где запущен Конфигуратор.
Пример настройки в default.vrd:
<debug enable="true" protocol="http" url="http://ваш-ip-адрес:1560" />
Важный нюанс: Чтобы веб-клиент инициировал сессию отладки, в адресную строку (которую формирует модуль Бэк-офиса) должен попасть параметр ?debug=http. Если вы тестируете функционал вручную, добавьте этот параметр в конец URL. Если же отладка нужна именно в момент вызова из Битрикс24, этот параметр должен добавляться программно в модуле интеграции, где формируется ссылка для открытия слайдера.
Поскольку 1С открывается внутри iframe на домене Битрикс24, современные браузеры могут блокировать служебные запросы отладки из-за политики безопасности. Разберем, как это обойти:
SameSite=None; Secure. Без этого сессия отладки может "отваливаться" при переходе между страницами.Часто в модулях Бэк-офиса реквизиты формы (такие как сессия, настройки взаимодействия) добавляются программно. Рассмотрим типичную ошибку разработчика, когда данные в форме есть, но код их "не видит".
При использовании метода ИзменитьРеквизиты() новые элементы не становятся статическими переменными модуля. Обращение к ним должно происходить через ЭтотОбъект. Проанализируем правильный код обработки создания формы и ее открытия:
&НаСервере
Процедура Б24_Бэк_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
ДобавляемыеРеквизиты = Новый Массив;
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Б24_Бэк_Сессия", Новый ОписаниеТипов("Строка")));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Б24_Бэк_ЭтоДокументБэкофиса", Новый ОписаниеТипов("Булево")));
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
КонецПроцедуры
&НаКлиенте
Процедура Б24_Бэк_ПриОткрытииПосле(Отказ)
// ОШИБКА: Б24_Бэк_Сессия = "Значение";
// ПРАВИЛЬНО:
ЭтотОбъект.Б24_Бэк_Сессия = Б24_Бэк_НастройкиСеанса.СессияБитрикс24;
Если ЗначениеЗаполнено(ЭтотОбъект.Б24_Бэк_Сессия) Тогда
ЭтотОбъект.Б24_Бэк_ЭтоДокументБэкофиса = Истина;
ПодключитьОбработчикОжидания("Б24_Бэк_ПроверитьДанныеБитрикс24", 2, Истина);
КонецЕсли;
КонецПроцедуры
Именно использование явного указания ЭтотОбъект позволяет корректно работать с программно созданными реквизитами в контексте управляемой формы.
Рассмотрим ситуацию: отладка включена, код работает, но данные (Контрагент, Партнер) в новый документ не подставляются. Выясним основные причины:
1. Синхронизация сессий. Данные из Битрикс24 передаются в 1С асинхронно и записываются в регистр сведений Б24_Бэк_ДанныеДляНовыхДокументовИзБитрикс24. Ключом поиска выступает идентификатор сессии. Если в регистре сессия записана в одном формате (например, с кодированием URL), а в форму 1С она пришла в другом — поиск не даст результата.
2. Права доступа. Модуль Бэк-офиса активно использует фоновые задания и HTTP-сервисы. Убедитесь, что у пользователя, под которым работает интеграция, достаточно прав на чтение указанного регистра и на работу с соответствующими справочниками (Партнеры, Контрагенты).
3. Проверка коннекта. Зайдите в Битрикс24 на страницу "1С + CRM Битрикс24". Статус подключения в блоке настроек должен быть активен (желтый фон). Если используется тип соединения p&p (Push & Pull), проверьте, запущен ли в 1С отдельный сеанс, ожидающий команды от Битрикс24.
Если отладка в веб-клиенте все же не поддается настройке, воспользуемся советом опытных разработчиков: эмулируйте работу Бэк-офиса в тонком клиенте. Для этого:
/c, передав в параметрах строку запуска, которую обычно формирует Битрикс24 (включая session и url).Это позволит использовать привычную отладку тонкого клиента для поиска ошибок в логике заполнения документов.
Таким образом, успех отладки в Бэк-офисе зависит от трех факторов: правильной конфигурации default.vrd, учета специфики IFrame (HTTPS и SameSite) и внимательного отношения к программному созданию реквизитов формы. Соблюдая эти рекомендации, вы сможете эффективно диагностировать любые проблемы интеграции.