При эксплуатации конфигурации 1С:Управление производственным предприятием 1.3 (УПП) на современной платформе 1С:Предприятие 8.3 разработчики часто сталкиваются с дилеммой: в свойствах конфигурации установлен режим совместимости Версия 8.2.13, что блокирует использование многих возможностей платформы 8.3 (например, входящих HTTP-сервисов, новых конструкций языка, расширений). Разберем детально, к чему приведет отключение или повышение режима совместимости, почему возникают ошибки при вызове модулей и какие способы интеграции остаются рабочими.
Конфигурация УПП 1.3 изначально проектировалась под архитектуру толстого клиента и платформу 1С:Предприятие 8.2. Если в свойствах конфигурации переключить режим совместимости в значение «Не использовать» или поднять его до версий 8.3.x, прикладное решение столкнется с системными сбоями. Рассмотрим основные причины:
NULL и неявное приведение типов данных. В результате многие сложные расчетные отчеты, закрытие месяца и алгоритмы проведения документов начинают выдавать некорректные результаты или завершаться аварийно.Версия 8.2.13. Любое ручное изменение этого параметра приведет к конфликтам при каждом последующем обновлении через файлы поставки .cfu или .cf.Проанализируем частую ситуацию: разработчик добавляет в конфигурацию объект HTTP-сервис, сервис принимает запрос, но при попытке вызвать функцию типового общего модуля возникает исключение Ошибка инициализации модуля. Выясним причину такого поведения:
HTTP-сервис выполняется на стороне сервера в неинтерактивном веб-сеансе. В этом контексте полностью отсутствует клиентское окружение. Большинство общих модулей УПП 1.3 имеют флаги компиляции Клиент (обычное приложение) или при своей загрузке инициализируют глобальные переменные интерфейса (например, глТекущийПользователь). Попытка обращения к таким модулям из фонового или веб-сеанса приводит к падению платформы на этапе инициализации контекста.
Разберем по шагам, какие инструменты следует применять для обмена данными, оставаясь в штатном режиме совместимости Версия 8.2.13:
Web-сервисы полноценно поддерживаются платформой в режиме совместимости 8.2.13. Они работают на базе стандартных XDTO-пакетов и протокола SOAP, являясь наиболее надежным решением для организации входящих запросов в УПП.HTTPСоединение. Он доступен в режиме 8.2.13 и не требует изменения настроек конфигурации:
// Пример выполнения исходящего запроса к внешнему API
ИмяСервера = "api.service.local";
Порт = 80;
HTTPСоединение = Новый HTTPСоединение(ИмяСервера, Порт);
HTTPЗапрос = Новый HTTPЗапрос("/api/v1/gate/open");
HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
Попытка
HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
КодСостояния = HTTPОтвет.КодСостояния;
ТелоОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
Исключение
ЗаписьЖурналаРегистрации("ИнтеграцияСКУД", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
КонецПопытки;
V83.COMConnector, который открывает доступ ко всем экспортным процедурам модулей внешнего соединения.Рассмотрим вопрос поддержки формата EnterpriseData и механизмов «Конвертации данных 3.0» (КД 3.0). В типовой конфигурации УПП 1.3 поддержка КД 3.0 отсутствует и добавляться разработчиками не будет.
Механизм КД 3.0 жестко завязан на функционал «Библиотеки стандартных подсистем» (БСП) версии 2.2 и выше, а также на объектную модель XDTO формата EnterpriseData. В УПП 1.3 используется устаревшая ветка подсистем. Для организации обменов с УПП 1.3 применяются классические правила обмена на базе «Конвертации данных 2.1» (XML) либо разрабатываются индивидуальные сервисы сериализации данных.