Переход на версию Зарплата и управление персоналом 3.1.26 ставит перед техническими специалистами и администраторами непростую задачу: обязательное повышение версии технологической платформы до 8.3.22.1704 и выше. Ситуация осложняется тем, что многие серверные мощности все еще работают на устаревших операционных системах, а механизмы защиты платформы претерпели значительные изменения. В рамках данной статьи мы подробно разберем, как подготовиться к этому обновлению, какие существуют альтернативы и с какими техническими сложностями можно столкнуться.
Прежде чем приступать к обновлению платформы, проанализируем политику выпуска релизов 1С. На текущий момент компания поддерживает две параллельные ветки конфигурации ЗУП:
8.3.17.2760, что позволяет не обновлять «движок» системы до окончания срока поддержки ветки (обычно это конец квартала).8.3.22.Рассмотрим подробнее рекомендации вендора. Если ваша организация не готова к немедленному обновлению серверных ОС или замене ключей защиты, оптимальным решением будет остаться на ветке 3.1.23. Однако стоит помнить, что рано или поздно переход на 3.1.27 (следующая LTS-ветка) станет неизбежным, а она также потребует актуальную платформу.
Выясним причину, по которой 1С так настойчиво требует повышения версии платформы. Основной фактор — развитие Библиотеки стандартных подсистем (БСП). В версии ЗУП 3.1.26 используется обновленная БСП, программный код которой активно использует возможности платформы 8.3.22. К ним относятся:
Если попытаться запустить конфигурацию на старой платформе (например, 8.3.19), система может выдать критическую ошибку уже при инициализации общих модулей. Проанализируем пример кода, который может вызвать сбой при несоответствии версий:
// Пример вызова в БСП, который требует актуальный рантайм платформы
Попытка
Результат = КриптографияКлиент.НачатьПолучениеСертификата(Новое ОписаниеОповещения("Завершить", ЭтотОбъект));
Исключение
ЗаписьЖурналаРегистрации("Обновление", УровеньЖурналаРегистрации.Ошибка, , , "Версия платформы не поддерживает асинхронный вызов");
КонецПопытки;
Одной из самых обсуждаемых тем является изменение системы защиты в платформе 8.3.22. Начиная с ноября 2022 года, 1С внедрила более жесткие проверки легальности использования программного обеспечения. Это привело к тому, что многие пользователи столкнулись с сообщением «Вы стали жертвой подделки программного обеспечения».
Разберем, что именно произошло. В новых релизах платформы проверка ключей защиты происходит не только при запуске, но и в процессе работы через случайные интервалы времени. Если в системе присутствуют остатки старых эмуляторов или некорректно настроенные дампы ключей (даже при наличии физического USB-ключа), платформа блокирует работу. Для корректной работы на 8.3.22 необходимо:
v8usrv.dll, записи в реестре).8.3.22.1704, так как в ней исправлены ошибки «ложных срабатываний» защиты, наблюдавшиеся в более ранних сборках.Многие системные администраторы выражают обеспокоенность по поводу работы 8.3.22 на старых операционных системах. Хотя формально 1С старается поддерживать совместимость, на практике начиная с платформы 8.3.11 был изменен механизм распределения динамической памяти (рантайм). На Windows Server 2003 и Windows XP это приводит к чрезмерной загрузке процессора при операциях выделения памяти.
Проанализируем ситуацию: если ваш сервер работает на ОС старше Windows Server 2012 R2, обновление до платформы 8.3.22 может вызвать «затупливание» системы при выполнении тяжелых отчетов в ЗУП. В этом случае единственным выходом будет обновление серверной ОС или миграция на Linux.
При переходе на новые платформы часто всплывает вопрос производительности СУБД, особенно при работе с PostgreSQL. В обсуждениях часто упоминается проблема «среза последних» в виртуальных таблицах. Рассмотрим подробнее, как это связано с обновлением.
В старых реализациях запросов 1С при соединении с виртуальными таблицами на PostgreSQL оптимизатор СУБД часто строил неэффективный план запроса (Nested Loop), предполагая, что во временной таблице мало данных. Для решения этой проблемы рекомендуется переписывать запросы с использованием явных временных таблиц. Посмотрим на пример оптимизации запроса:
// Неэффективный запрос (может тормозить на Postgres)
ВЫБРАТЬ
Сотрудники.Ссылка,
ДанныеЗарплаты.Оклад
ИЗ
Справочник.Сотрудники КАК Сотрудники
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПлановыеНачисления.СрезПоследних(&ДатаКонца) КАК ДанныеЗарплаты
ПО Сотрудники.Ссылка = ДанныеЗарплаты.Сотрудник;
// Оптимизированный подход (рекомендуется для высоконагруженных систем)
ВЫБРАТЬ
Данные.Сотрудник,
Данные.Оклад
ПОМЕСТИТЬ ВТ_СрезЗарплаты
ИЗ
РегистрСведений.ПлановыеНачисления.СрезПоследних(&ДатаКонца) КАК Данные;
ВЫБРАТЬ
Сотрудники.Ссылка,
ВТ_СрезЗарплаты.Оклад
ИЗ
Справочник.Сотрудники КАК Сотрудники
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СрезЗарплаты КАК ВТ_СрезЗарплаты
ПО Сотрудники.Ссылка = ВТ_СрезЗарплаты.Сотрудник;
Платформа 8.3.22 содержит улучшения в трансляторе запросов, которые помогают PostgreSQL лучше справляться с подобными конструкциями «из коробки», что является дополнительным аргументом в пользу обновления.
Подводя итог, можно составить следующий алгоритм действий для перехода на ЗУП 3.1.26:
8.3.22.8.3.22.1923 и выше. Избегайте самых первых сборок (1704), так как в них было зафиксировано много ошибок в механизме фоновых заданий.Переход на ЗУП 3.1.26 — это не просто обновление программы, а комплексная технологическая задача. Правильный выбор между веткой 3.1.23 и 3.1.26 позволит вам сбалансировать между стабильностью системы и доступом к новым законодательным инструментам.