Как обновить УТ 10.3 до релизов, требующих платформу 8.3, если мешает защита сторонних модулей?

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

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

Причины принудительного перехода на 8.3

Прежде всего, проанализируем ситуацию: почему разработчики 1С пошли на такой шаг для старой доброй УТ 10.3? Основная причина кроется в законодательных изменениях. Введение онлайн-касс (ФФД 1.05, 1.1, 1.2), интеграция с ЕГАИС 3.0 и системами маркировки «Честный ЗНАК» потребовали использования механизмов, которые полноценно работают только в 8.3. Речь идет об асинхронных вызовах в «Библиотеке подключаемого оборудования» (БПО), новых объектах метаданных и изменении механизмов работы с криптографией.

Рассмотрим основные технические преграды, с которыми сталкиваются программисты при попытке запустить старую «допиленную» УТ 10.3 на платформе 8.3.

Конфликт имен функций: Глобальный контекст против защиты БИТ

Одной из самых коварных проблем является конфликт имен встроенных функций. Проанализируем техническую деталь: в платформе 8.3 появились новые функции для работы с битовыми операциями, такие как ПроверитьБит() (CheckBit) и УстановитьБит() (SetBit). Проблема в том, что многие системы защиты (в частности, от компании БИТ) использовали функции с точно такими же именами в своих закрытых модулях для проверки ключей лицензирования.

Поскольку эти функции теперь зарезервированы в глобальном контексте платформы, попытка системы вызвать пользовательскую функцию ПроверитьБит() приводит к критическому сбою. Платформа просто не позволяет переопределить системную функцию. Если этот код находится в закрытом модуле, обычными средствами его не поправить. В этом случае рассмотрим два пути:

  1. Обновление компонент защиты: Обратитесь к вендору (БИТ). Для большинства продуктов, даже снятых с поддержки, были выпущены обновленные .dll и серверы лицензирования, где эти конфликты устранены.
  2. Адаптация вызовов: Если у вас есть доступ к исходному коду, необходимо переименовать функции защиты во всей конфигурации.

Ошибка сериализации при использовании временного хранилища

Второй критический момент — изменение поведения метода ПоместитьВоВременноеХранилище. В режиме работы 8.3 платформа стала значительно строже относиться к типам данных, которые помещаются в хранилище. Рассмотрим пример кода, который часто вызывает ошибку в старых модулях:


// Ошибка в 8.3: Переданное значение не может быть помещено во временное хранилище
Ссылка = ПоместитьВоВременноеХранилище(Обработки.МояОбработка.Создать(), Новый УникальныйИдентификатор);

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

Для решения этой проблемы пересмотрим проектное решение: вместо передачи всего объекта обработки, следует передавать структуру с данными, необходимыми для её инициализации на сервере, или использовать экспортные методы модуля менеджера.

Режим совместимости и работа в Windows 10

Если ваша конфигурация сильно кастомизирована и переход на 8.3 вызывает «рассыпание» интерфейса или логики, важно правильно настроить режим совместимости. Для УТ 10.3 оптимальным является использование платформы 8.3 (не ниже 8.3.12) с установленным режимом совместимости «Версия 8.2.16».

Посмотрим на важный нюанс, связанный с операционной системой. Использование «чистой» платформы 8.2 на современных сборках Windows 10 и Windows 11 часто приводит к аварийному завершению работы 1С из-за проблем с библиотекой gdiplus.dll. Таким образом, переход на 8.3 — это не только прихоть разработчиков конфигурации, но и необходимость для стабильной работы интерфейса на новых ОС.

Практические советы по обновлению

Разберем по шагам, как действовать, если вы решили тянуть обновления УТ 10.3 вручную, оставаясь на платформе 8.2 (хотя это и не рекомендуется):

  1. Анализ изменений: При сравнении и объединении конфигураций обращайте внимание на новые объекты, связанные с ЕГАИС и ККТ. Если этот функционал вам действительно не нужен, его можно не переносить. Однако помните, что изменения в общих модулях, отвечающих за печать чеков и расчет налогов (НДС), часто переплетены с этим функционалом.
  2. Обход проверки платформы в манифесте: При установке шаблона обновления 1С проверяет версию платформы через файл 1cv8.mft. Технически можно заменить строку AppVersion=8.3 на AppVersion=8.2, чтобы конфигуратор позволил запустить процесс обновления под старой платформой. Внимание: это «костыль», который позволит объединить код, но не гарантирует его работоспособность при запуске.
  3. Вычленение несовместимого кода: Если после обновления база не открывается под 8.2, проанализируйте журнал регистрации и модули ПриНачалеРаботыСистемы. Часто достаточно закомментировать вызовы новых процедур БПО, которые требуют методов 8.3.

Итоги

Ситуация с УТ 10.3 и платформой 8.3 — это классический пример «технологического долга». Рано или поздно объекты глобального контекста и новые требования к безопасности делают невозможной работу на устаревшем движке. Мы рекомендуем не бороться с платформой 8.3, а направить усилия на декомпиляцию или замену устаревших защитных модулей сторонних вендоров. Это обеспечит стабильную работу системы в будущем и позволит безболезненно внедрять актуальные требования законодательства.

← На главную