Как исправить ошибки при смене режима совместимости в УТ 10.3?

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

Перевод старой конфигурации, такой как Управление торговлей 10.3, на современные режимы совместимости платформы 8.3 — задача нетривиальная. Она требует не просто изменения одного параметра в свойствах конфигурации, но и серьезного аудита программного кода и метаданных. При простом переключении режима совместимости разработчик неизбежно сталкивается с каскадом ошибок: от конфликтов имен картинок до полной неработоспособности интерфейса из-за блокировки модальных окон.

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

Разберем причину конфликта общих картинок

Первое, на что «ругается» конфигуратор при попытке обновить режим совместимости, — это Общие картинки. Проанализируем ситуацию: в новых версиях платформы 8.3 (начиная с 8.3.1) многие графические элементы стали системными. Если в вашей старой «древней» конфигурации есть картинки с именами Справка, Информация, Внимание, Предупреждение, Ошибка, Очистить или Поиск, возникнет конфликт имен.

Рассмотрим варианты решения этой проблемы:

  1. Простое удаление: Мы можем удалить эти картинки из дерева метаданных, так как они теперь «вшиты» в платформу. Однако будьте осторожны: если эти картинки жестко прописаны в свойствах кнопок на формах, ссылки могут «слететь», и формы потеряют свой привычный вид.
  2. Переименование: Это более безопасный путь. Мы можем добавить префикс ко всем конфликтующим картинкам, например, изменить Внимание на ит_Внимание.

После переименования нам потребуется выполнить глобальный поиск по конфигурации и заменить все ссылки на старые имена картинок новыми именами. Это гарантирует сохранение визуального интерфейса.

Проанализируем конфликты встроенных функций (Битовые операции)

Следующий этап — исправление ошибок компиляции программного кода. Выясним причину: начиная с версии 8.3.3, функции для работы с двоичными данными, такие как ПобитовоеИ, ПобитовоеИЛИ, ПобитовоеНе и другие, стали встроенными в язык платформы.

В УТ 10.3 (особенно в модулях, связанных с торговым оборудованием или защитой конфигурации) эти функции часто реализованы программно в общих модулях. При отключении режима совместимости возникает ошибка: «Процедура или функция с указанным именем уже определена». Нам необходимо найти эти реализации. Чаще всего они встречаются в модулях интеграции с драйверами ККТ или сканерами штрихкодов.

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


#Если Не (СистемноеПеречисление("ВерсияПлатформы") >= "8.3.3") Тогда
Функция ПобитовоеИ(Значение1, Значение2) Экспорт
    // Старая программная реализация для совместимости
    Возврат Значение1 & Значение2; 
КонецФункции
#КонецЕсли

Однако правильнее всего будет полностью закомментировать программные функции и использовать системные, так как они работают значительно быстрее на уровне ядра платформы.

Настроим режим использования модальности

Самая критическая проблема при полном снятии режима совместимости в УТ 10.3 — это использование модальных окон. Старая конфигурация буквально пронизана вызовами Вопрос(), Предупреждение() и ОткрытьФормуМодально().

Если мы установим режим совместимости «Не использовать», но оставим старый код, программа будет аварийно завершаться при каждом удобном случае. Рассмотрим, как это обойти без переписывания тысяч строк кода на асинхронные вызовы:

  1. Перейдем в свойства корневого объекта конфигурации.
  2. Найдем параметр Режим использования модальности.
  3. Установим значение Использовать.

Это позволит платформе 8.3 исполнять старый код, хотя и ограничит использование конфигурации в веб-клиенте. Аналогичную операцию необходимо проделать и для параметра Режим использования синхронных вызовов расширений платформы и внешних компонентов. Без этого перестанут работать многие обработки, взаимодействующие с файловой системой и внешними библиотеками (например, загрузка из Excel).

Особенности работы с торговым оборудованием и СУБД

При переходе на новые режимы важно помнить о безопасности. Платформа 8.3 более строго относится к подключению внешних компонент. Если после смены режима совместимости перестали подключаться драйверы, нам следует проверить настройки профилей безопасности или изменить код инициализации оборудования, чтобы он соответствовал требованиям безопасности новой платформы.

Также проанализируем ситуацию с базой данных. При смене режима совместимости (особенно на крупных базах) 1С инициирует масштабную реструктуризацию. Выясним, почему это опасно: в процессе могут пересчитываться итоги и меняться структура таблиц SQL. Перед выполнением этой операции обязательно:

Подведем итог последовательности действий

Для успешного перехода мы рекомендуем придерживаться следующего алгоритма:

  1. Поэтапный переход: Не пытайтесь сразу прыгнуть с версии 8.2.13 на «Без совместимости». Сначала попробуйте установить режим 8.3.3, затем 8.3.12, и только после этого двигайтесь дальше.
  2. Работа с метаданными: Переименуйте или удалите конфликтующие ОбщиеКартинки.
  3. Аудит кода: Найдите и удалите программные дубликаты функций битовых операций (используйте синтакс-помощник для проверки состава встроенных функций).
  4. Настройка свойств: Включите использование модальности и синхронных вызовов в свойствах конфигурации.
  5. Тестирование: Проведите полное тестирование критических бизнес-процессов: проведение документов, печать чеков, формирование отчетов и обмены данными (XDTO).

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

← На главную