Переход типовой конфигурации «Управление торговлей», редакция 10.3 на обязательное использование платформы 1С:Предприятие 8.3 (начиная с релиза 10.3.54.1) стал серьезным вызовом для многих компаний. Ситуация осложняется, когда в систему интегрированы сторонние продукты (например, от «Первого Бита» или «Раруса»), имеющие собственные системы лицензирования и закрытые модули, которые изначально не проектировались под работу на платформе 8.3. В этой статье мы подробно разберем, почему это происходит и как адаптировать систему к новым реалиям.
Прежде всего, проанализируем ситуацию: почему разработчики 1С пошли на такой шаг для старой доброй УТ 10.3? Основная причина кроется в законодательных изменениях. Введение онлайн-касс (ФФД 1.05, 1.1, 1.2), интеграция с ЕГАИС 3.0 и системами маркировки «Честный ЗНАК» потребовали использования механизмов, которые полноценно работают только в 8.3. Речь идет об асинхронных вызовах в «Библиотеке подключаемого оборудования» (БПО), новых объектах метаданных и изменении механизмов работы с криптографией.
Рассмотрим основные технические преграды, с которыми сталкиваются программисты при попытке запустить старую «допиленную» УТ 10.3 на платформе 8.3.
Одной из самых коварных проблем является конфликт имен встроенных функций. Проанализируем техническую деталь: в платформе 8.3 появились новые функции для работы с битовыми операциями, такие как ПроверитьБит() (CheckBit) и УстановитьБит() (SetBit). Проблема в том, что многие системы защиты (в частности, от компании БИТ) использовали функции с точно такими же именами в своих закрытых модулях для проверки ключей лицензирования.
Поскольку эти функции теперь зарезервированы в глобальном контексте платформы, попытка системы вызвать пользовательскую функцию ПроверитьБит() приводит к критическому сбою. Платформа просто не позволяет переопределить системную функцию. Если этот код находится в закрытом модуле, обычными средствами его не поправить. В этом случае рассмотрим два пути:
.dll и серверы лицензирования, где эти конфликты устранены.Второй критический момент — изменение поведения метода ПоместитьВоВременноеХранилище. В режиме работы 8.3 платформа стала значительно строже относиться к типам данных, которые помещаются в хранилище. Рассмотрим пример кода, который часто вызывает ошибку в старых модулях:
// Ошибка в 8.3: Переданное значение не может быть помещено во временное хранилище
Ссылка = ПоместитьВоВременноеХранилище(Обработки.МояОбработка.Создать(), Новый УникальныйИдентификатор);
Выясним причину: в 8.3 объекты типа ОбработкаОбъект, СправочникОбъект или ДокументОбъект не поддерживают сериализацию в том виде, который требуется для временного хранилища. Если раньше платформа «прощала» такие вызовы, то теперь необходимо передавать только сериализуемые типы (структуры, массивы, ссылки).
Для решения этой проблемы пересмотрим проектное решение: вместо передачи всего объекта обработки, следует передавать структуру с данными, необходимыми для её инициализации на сервере, или использовать экспортные методы модуля менеджера.
Если ваша конфигурация сильно кастомизирована и переход на 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 (хотя это и не рекомендуется):
1cv8.mft. Технически можно заменить строку AppVersion=8.3 на AppVersion=8.2, чтобы конфигуратор позволил запустить процесс обновления под старой платформой. Внимание: это «костыль», который позволит объединить код, но не гарантирует его работоспособность при запуске.ПриНачалеРаботыСистемы. Часто достаточно закомментировать вызовы новых процедур БПО, которые требуют методов 8.3.Ситуация с УТ 10.3 и платформой 8.3 — это классический пример «технологического долга». Рано или поздно объекты глобального контекста и новые требования к безопасности делают невозможной работу на устаревшем движке. Мы рекомендуем не бороться с платформой 8.3, а направить усилия на декомпиляцию или замену устаревших защитных модулей сторонних вендоров. Это обеспечит стабильную работу системы в будущем и позволит безболезненно внедрять актуальные требования законодательства.