Что произойдет при отключении режима совместимости в УПП 1.3 и как организовать интеграцию

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

При эксплуатации конфигурации 1С:Управление производственным предприятием 1.3 (УПП) на современной платформе 1С:Предприятие 8.3 разработчики часто сталкиваются с дилеммой: в свойствах конфигурации установлен режим совместимости Версия 8.2.13, что блокирует использование многих возможностей платформы 8.3 (например, входящих HTTP-сервисов, новых конструкций языка, расширений). Разберем детально, к чему приведет отключение или повышение режима совместимости, почему возникают ошибки при вызове модулей и какие способы интеграции остаются рабочими.

Почему нельзя отключать или повышать режим совместимости в УПП 1.3

Конфигурация УПП 1.3 изначально проектировалась под архитектуру толстого клиента и платформу 1С:Предприятие 8.2. Если в свойствах конфигурации переключить режим совместимости в значение «Не использовать» или поднять его до версий 8.3.x, прикладное решение столкнется с системными сбоями. Рассмотрим основные причины:

  1. Строгий синтаксический контроль и контекст выполнения: Начиная с платформы 8.3 без режима совместимости ужесточаются правила компиляции. В коде УПП повсеместно используются конструкции толстого клиента, прямые обращения к элементам экранных форм и глобальным переменным сеанса. Отключение совместимости вызывает критические ошибки выполнения в типовых модулях.
  2. Ограничения модальности и синхронных вызовов: В режиме 8.3 по умолчанию блокируются или требуют переработки модальные окна (предупреждения, вопросы, выбор файлов), на которых построена значительная часть диалогов и обработок в обычных формах УПП.
  3. Изменение поведения запросов СУБД: Платформа 8.3 иначе обрабатывает пустые ссылки, значения NULL и неявное приведение типов данных. В результате многие сложные расчетные отчеты, закрытие месяца и алгоритмы проведения документов начинают выдавать некорректные результаты или завершаться аварийно.
  4. Проблемы с регулярными обновлениями: Фирма 1С выпускает типовые релизы УПП 1.3 строго для режима совместимости Версия 8.2.13. Любое ручное изменение этого параметра приведет к конфликтам при каждом последующем обновлении через файлы поставки .cfu или .cf.

Причина ошибки «Ошибка инициализации модуля» при обращении к HTTP-сервисам

Проанализируем частую ситуацию: разработчик добавляет в конфигурацию объект HTTP-сервис, сервис принимает запрос, но при попытке вызвать функцию типового общего модуля возникает исключение Ошибка инициализации модуля. Выясним причину такого поведения:

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

Правильная организация интеграции в УПП 1.3

Разберем по шагам, какие инструменты следует применять для обмена данными, оставаясь в штатном режиме совместимости Версия 8.2.13:

  1. Использование штатных Web-сервисов (SOAP): Объекты метаданных Web-сервисы полноценно поддерживаются платформой в режиме совместимости 8.2.13. Они работают на базе стандартных XDTO-пакетов и протокола SOAP, являясь наиболее надежным решением для организации входящих запросов в УПП.
  2. Изоляция серверной логики в отдельном модуле: Если для интеграции пишется собственный код, создадим новый общий модуль со следующими параметрами:
    1. Устанавливаем флаг Сервер (и при необходимости Вызов сервера).
    2. Снимаем флаги Клиент (обычное приложение) и Клиент (управляемое приложение).
    3. Исключаем из модуля любые вызовы глобальных клиентских переменных и функций открытия форм. Все необходимые параметры сеанса инициализируем явно внутри серверных процедур.
  3. Исходящие запросы через HTTPСоединение: Для отправки запросов во внешние системы (например, API сторонних сервисов или СКУД) используется платформенный объект 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Ответ.ПолучитьТелоКакСтроку();
    Исключение
        ЗаписьЖурналаРегистрации("ИнтеграцияСКУД", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
    КонецПопытки;
    
  4. Подключение через COM-соединение (Automation): Для прямого взаимодействия между базами 1С без развертывания веб-серверов используется объект V83.COMConnector, который открывает доступ ко всем экспортным процедурам модулей внешнего соединения.

Поддержка «Конвертации данных 3.0» (EnterpriseData) в УПП 1.3

Рассмотрим вопрос поддержки формата EnterpriseData и механизмов «Конвертации данных 3.0» (КД 3.0). В типовой конфигурации УПП 1.3 поддержка КД 3.0 отсутствует и добавляться разработчиками не будет.

Механизм КД 3.0 жестко завязан на функционал «Библиотеки стандартных подсистем» (БСП) версии 2.2 и выше, а также на объектную модель XDTO формата EnterpriseData. В УПП 1.3 используется устаревшая ветка подсистем. Для организации обменов с УПП 1.3 применяются классические правила обмена на базе «Конвертации данных 2.1» (XML) либо разрабатываются индивидуальные сервисы сериализации данных.

← На главную