При сопровождении возрастных конфигураций, таких как Альфа-Авто 4.1, работающих на обычных формах, специалисты часто сталкиваются с требованием сторонних разработчиков повысить режим совместимости платформы (например, до версии 8.3.6). Чаще всего это происходит при внедрении современных интеграций с каталогами запчастей, такими как Elsa или Etka. Разберем подробно, насколько оправдано это требование, какие скрытые риски оно несет и как правильно подготовить базу к переходу.
На первый взгляд может показаться, что работа с форматом JSON доступна и в более ранних режимах совместимости. Проанализируем пример кода, который успешно выполняется на платформе 8.3 даже при установленном режиме совместимости 8.2.16:
Структура = Новый Структура;
Структура.Вставить("Фамилия", "Иванов");
Структура.Вставить("Возраст", 40);
Телефоны = Новый Массив;
Телефоны.Добавить("8-999-999-99-90");
Структура.Вставить("Телефоны", Телефоны);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.ОткрытьФайл("C:\Тест.json", , , Новый ПараметрыЗаписиJSON(, Символы.Таб));
ЗаписатьJSON(ЗаписьJSON, Структура);
ЗаписьJSON.Закрыть;
Как мы видим, методы ЗаписатьJSON и ПрочитатьJSON успешно отрабатывают. Однако требование версии 8.3.6 обусловлено не просто наличием этих функций, а глубокими изменениями в механизмах платформы:
Основная опасность при переходе на режим 8.3.6 в Альфа-Авто 4.1 кроется не в самом коде 1С, а во внешних компонентах. Рассмотрим ситуацию подробнее. Конфигурации от Рарус используют систему лицензирования и защиты (СЛК), где часть функционала вынесена в закрытые модули и внешние библиотеки (например, Protect.dll).
Проанализируем возможные проблемы:
Перед внесением изменений обязательно выясним версию вашей системы защиты. Для стабильной работы на 8.3.6+ необходимо обновить СЛК до актуальной версии, официально поддерживающей работу с платформой 8.3.10 и выше.
Одной из самых неприятных проблем при смене режима совместимости является ошибка SDBL. Таблица или поле Description не содержится в разделе FROM. Выясним причину ее возникновения.
При изменении режима совместимости с 8.2 на 8.3.6 платформа инициирует физическое изменение структуры таблиц в СУБД (MS SQL Server или PostgreSQL). Платформа меняет способы хранения индексов, итогов и некоторых типов данных. Если база была создана очень давно (например, еще в эпоху 1С 8.1), накопленные несоответствия в схеме данных мешают платформе корректно перестроить запросы.
Для решения проблемы выполним следующие шаги:
.dt и последующую загрузку в пустую базу. Это принудительно заставит платформу пересоздать все SQL-таблицы в соответствии с требованиями текущего режима совместимости.Если риски нарушения работы защиты Рарус слишком высоки, а интеграция с Elsa/Etka требуется срочно, рассмотрим обходной путь. Проанализируем возможность использования сторонних библиотек для работы с JSON. Существуют проверенные решения (например, на базе библиотек с Инфостарта), которые реализуют парсинг и формирование JSON-строк средствами встроенного языка 1С, не требуя перехода на 8.3.6.
Однако стоит помнить, что это лишь временная мера. Если планируется использование высокопроизводительных HTTP-сервисов, полноценный переход на режим 8.3.6 является неизбежным шагом для обеспечения технологического развития системы.
Подведем итог нашему анализу. Чтобы переход на режим совместимости 8.3.6 прошел успешно, придерживаемся следующего плана:
Таким образом, требование внедренцев обосновано необходимостью использования современных протоколов передачи данных, но выполнение этого требования требует от администратора 1С тщательной подготовки инфраструктуры и системы защиты.