Проблемы интеграции старых конфигураций 1С с модулем «Живая лента» Битрикс24

Платформа bitrix24.ru позволяет интегрировать базу 1С:Предприятия с модулем «Живая лента» портала на bitrix24.ru. При этом появляются возможности загружать произвольные печатные формы или отчеты в «Живую ленту». Для этого разработчики портала предоставляют специальные модули, которые можно объединить с существующей конфигурацией 1С. Модули предоставляются для определенного набора типовых конфигураций и, при этом, поддерживаются только самые новые версии конфигураций 1С. При попытке прямолинейного объединения модулей интеграции с конфигурациями, которые были разработаны на основе старый версий типовых конфигураций, могут возникать различные проблемы.

Одна из таких проблем — это то, что иногда в живую ленту портала могут загружаться поврежденные печатные формы. При публикации печатной формы эта форма сохраняется в формате Excel, этот файл загружается на сайт. Потом, когда пользователь загружает этот файл и пытается открыть, то он получает сообщение от Excel следующего вида: «Обнаружено содержимое которое не удалось прочитать». Далее Excel предлагает восстановить файл и, если разрешить восстановление, файл нормально открывается.

Проблема вызывается тем, что на сайт отправляются файлы, обрезанные с конца. У всех отправляемых файлов в конце будет обрезано три байта. Проблема вызывается как раз тем, что модуль интеграции рассчитан именно на новые версии конфигураций и платформ 1С. Передача файлов происходит при помощи объекта HTTPЗапрос платформы 1С. Модуль интеграции формирует запрос на сайт, загружает данные запроса в объект HTTPЗапрос методом «УстановитьТелоИзСтроки» и отправляет данные. Метод «УстановитьТелоИзСтроки» имеет параметр, который указывает платформе, следует ли при передаче запроса включать в начало данных BOM (Byte order mark). Этот параметр имеет различные значения по умолчанию, которые зависят от режима совместимости, включенного для конфигурации. Для режимов совместимости выше 8.3.5 BOM не включается, для режимов 8.3.5 и ниже BOM включается. Т.к. HTTPЗапрос по умолчанию использует кодировку UTF-8, то BOM будет занимать ровно три байта.

Таким образом, для платформы 8.3.5 и ниже отсылаемый на сайт запрос будет на три байта длиннее, чем для платформ с более новой версией. В принципе, это не было бы проблемой, если бы разработчики Битрикс24 не устанавливали при отправке запроса заголовок «Content-Length». В этот заголовок пишется длина отправляемых данных. Модуль интеграции пишет туда точную длину запроса. Запрос состоит из нескольких переменных и в конце содержатся данные файла печатной формы. На старых платформах запрос получается на три байта длиннее, чем предполагали разработчики. Сервер же читает столько байт, сколько указано в «Content-Length», поэтому три байта в конце файла обрезаются.

Возможные решения проблемы:

  • Установить режим совместимости конфигурации на версию более новую, чем 8.3.5. При этом никаких изменений в код интеграции с Битриксом вносить не потребуется.
  • Либо можно отредактировать вызов метода «УстановитьТелоИзСтроки» — отключить вывод BOM.
  • Либо можно отключить вывод заголовка «Content-Length».

Другие проблемы интеграции с «Живой лентой» Битрикса заключатся в том, что этот модуль рассчитывает на определенный функционал, присутствующий в типовой конфигурации 1С. Для старых конфигураций этот расчет часто не оправдывается. В результате модуль интеграции не работает и прямолинейная интеграция этого модуля с конфигурацией приводит к тому, что часть функционала самой конфигурации перестает работать. Например, может перестать работать печать документов, т.к. модуль интеграции пытается модифицировать общую форму, через которую выводятся печатные формы документов.

В таких случаях модуль интеграции надо включать в конфигурацию вручную при помощи разработчика. Для этого можно обратиться к нам.