Как подключить 1С:Аналитику к устаревшим базам УПП 1.3 и УТ 10.3 и исправить ошибку StrSplit?

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

При внедрении современных инструментов визуализации данных, таких как 1С:Аналитика, в ИТ-ландшафт предприятия часто возникает необходимость подключения к историческим системам: 1С:Управление производственным предприятием (УПП) ред. 1.3 или 1С:Управление торговлей (УТ) ред. 10.3. Несмотря на использование актуальной версии платформы 8.3.x, попытки стандартного подключения часто заканчиваются ошибкой {(209,9)}: Процедура или функция с указанным именем не определена (StrSplit) (500). В этой статье мы подробно разберем причины этой проблемы и рассмотрим несколько стратегий её решения.

Анализ причины возникновения ошибки StrSplit

Разберем ситуацию: ваша платформа может быть самой последней версии (например, 8.3.24), однако конфигурация (УПП или УТ) работает в режиме совместимости 8.2.14. Это критически важный фактор. 1С:Аналитика взаимодействует с информационной базой через автоматический интерфейс OData.

Проблема заключается в том, что функция СтрРазделить (или её англоязычный аналог StrSplit) была добавлена в платформу 1С:Предприятие только начиная с версии 8.3.6. Когда база работает в режиме совместимости 8.2.14, механизмы платформы, отвечающие за генерацию OData-запросов и обработку метаданных, ограничивают доступный функционал языковыми конструкциями версии 8.2. В результате, при попытке системы 1С:Аналитика запросить данные, платформа пытается вызвать StrSplit, не находит её в контексте текущего режима совместимости и выдает ошибку 500.

Решение №1: Повышение режима совместимости (Быстрый, но рискованный путь)

Как показывает практика, простейшим техническим решением является изменение режима совместимости в свойствах конфигурации. Если установить режим совместимости в значение 8.3.6 или выше (например, до актуальной версии платформы), функция СтрРазделить становится доступной, и 1С:Аналитика успешно считывает метаданные.

Рассмотрим риски этого метода:

  1. Изменение логики SQL-запросов: Платформа 8.3 строит запросы к СУБД иначе, чем 8.2. Это может привести к значительному замедлению работы тяжелых отчетов в УПП.
  2. Механизмы блокировок: В режиме 8.2 часто использовались автоматические блокировки. При переходе на 8.3 механизмы управления транзакциями могут измениться, что спровоцирует конфликты при одновременной работе пользователей.
  3. Ошибки в «обычных формах»: УПП и УТ 10.3 построены на толстом клиенте. Новые режимы совместимости могут некорректно интерпретировать старый программный код в глобальных модулях или при открытии форм.

Проанализируем ситуацию: если база рабочая и в ней одновременно трудятся сотни пользователей, менять режим совместимости «на лету» категорически не рекомендуется без полного цикла регрессионного тестирования.

Решение №2: Использование «Промежуточной базы» (Shadow DB)

Это наиболее архитектурно правильный и безопасный подход для интеграции современных аналитических систем с устаревшим ядром. Мы предлагаем не подключать Аналитику напрямую к УПП, а создать «буферную» зону.

Разберем по шагам реализацию этого метода:

  1. Создаем новую пустую информационную базу на актуальной платформе. В свойствах конфигурации устанавливаем режим совместимости «Не использовать».
  2. Разрабатываем механизм выгрузки данных из УПП в новую базу. Для этого можно использовать EnterpriseData, универсальные обмены через XML или прямое COM-соединение. Выгружать нужно только те данные, которые необходимы для анализа (например, регистры накопления «Продажи», «Закупки», «ПартииТоваровНаСкладах» и связанные справочники).
  3. Публикуем эту новую базу на веб-сервере с включенным интерфейсом OData.
  4. Подключаем 1С:Аналитику к этой промежуточной базе.

Таким образом, основная рабочая база УПП остается в безопасности, а аналитические отчеты работают максимально быстро на современной структуре данных.

Решение №3: Сервер Дата-акселератора (DBM)

Если у вас есть лицензии на 1С:Аналитику, скорее всего, вам доступен компонент Дата-акселератор. Это механизм In-Memory DB, который позволяет хранить копии данных в оперативной памяти для молниеносной обработки аналитических запросов.

Проанализируем, как это помогает обойти проблему StrSplit: Вы можете настроить механизм копий баз данных. Платформа будет сама реплицировать данные из вашей УПП в Дата-акселератор. Поскольку запросы 1С:Аналитики в этом случае будут направляться к акселератору, а не напрямую к SQL-таблицам старой базы через стандартный OData, многие ограничения режима совместимости будут нивелированы внутренними алгоритмами акселератора.

Решение №4: Настройка публикации OData с фильтрацией метаданных

Иногда ошибка возникает из-за того, что система пытается просканировать абсолютно все объекты метаданных, включая те, которые не поддерживаются или содержат ошибки в структуре. Выясним, как ограничить этот список.

При публикации базы на веб-сервере создается файл default.vrd. Мы можем вручную отредактировать секцию standardOData, чтобы разрешить доступ только к конкретным объектам. Рассмотрим пример настройки:


<standardOData>
    <allow>
        <object>Catalog.Номенклатура</object>
        <object>AccumulationRegister.Продажи</object>
        <object>Document.ЗаказПокупателя</object>
    </allow>
</standardOData>

Если исключить из публикации сложные объекты, которые вызывают обращение к неподдерживаемым функциям в режиме совместимости 8.2.14, первичная регистрация базы в 1С:Аналитике может пройти успешно.

Резюме и рекомендации

Подводя итог, если вы столкнулись с ошибкой StrSplit, у вас есть три основных пути. Если база небольшая или тестовая — поднимайте режим совместимости до 8.3.6 или выше. Если же вы работаете с высоконагруженной системой УПП 1.3, лучшим выбором будет создание промежуточной базы или использование Дата-акселератора. Это позволит вам использовать все преимущества 1С:Аналитики, не ставя под угрозу стабильность оперативного учета.

← На главную