При обновлении технологической платформы 1С:Предприятие администраторы и разработчики часто сталкиваются с непредвиденным поведением системы. В данной статье мы подробно разберем ситуацию, когда после перехода на релиз платформы 8.3.25.1546 (или аналогичные версии ветки 8.3.25) в конфигурации "Зарплата и управление персоналом" перестают корректно работать внешние отчеты и консоль отчетов.
Симптомы проблемы могут различаться: у одних пользователей консоль запросов (ЗУП) выдает ошибку формата потока и аварийно завершает работу, у других — отчет формируется, но выдает абсолютно пустой результат, несмотря на наличие данных в системе. Интересной особенностью является то, что в тестовой базе (копии) отчеты могут работать корректно, а в рабочей (продуктивной) среде на SQL-сервере — нет. Давайте проанализируем причины этого поведения и пошагово разберем методы устранения неисправности.
Прежде чем приступать к "лечению", давайте убедимся, что мы имеем дело именно с последствиями обновления платформы (здесь может потребоваться отладка внешних обработок и отчетов). Обычно ситуация выглядит следующим образом:
Основная причина кроется в том, как новая версия платформы взаимодействует с временными файлами и кэшем, оставшимися от предыдущей версии. Платформа 8.3.25 имеет ряд архитектурных изменений в механизме работы с Системой Компоновки Данных (СКД) и временными таблицами, что вызывает конфликты при наличии устаревшего кэша.
Хотя проблема чаще всего кроется на стороне сервера, давайте начнем с самого простого действия, которое исключит влияние локальных данных пользователя. Иногда ошибка "зависает" в локальных файлах профиля.
Самый быстрый способ очистить клиентский кэш без удаления папок вручную — это пересоздание ссылки на базу в списке запуска 1С.
Если это не помогло, перейдем к более серьезным мерам, так как в большинстве случаев при переходе на 8.3.25 проблема находится на уровне сервера приложений.
Это ключевой этап. При обновлении платформы сервер 1С начинает использовать новые алгоритмы сериализации данных и построения планов запросов. Если в служебных папках сервера остались временные файлы от старой версии (например, 8.3.22 или 8.3.24), возникает конфликт версий скомпилированного кода конфигурации.
Давайте выполним полную очистку серверного кэша. Обратите внимание: эти действия требуют остановки службы сервера 1С, поэтому их необходимо выполнять в нерабочее время.
services.msc) или через командную строку.srvinfo. Путь к ней зависит от настроек установки, но по умолчанию он выглядит так:
C:\Program Files\1cv8\srvinfo\
Если вы меняли настройки при установке, путь может отличаться (например, на диске D: или E:).
srvinfo найдите подпапку reg_1541 (номер порта может отличаться, если у вас несколько кластеров).snccntx.... Это и есть сеансовые данные и кэш метаданных.Более точечный метод очистки кэша конкретной базы данных на сервере:
reg_1541).7b010362-d227-4424-9426-538676d1a03e). Каждая такая папка соответствует одной базе данных.Для платформы 8.3.25 критически важным стало состояние системной папки Temp пользователя, под которым работает служба сервера 1С. В этой версии замечена особенность: она оставляет "мусорные" файлы сессий, которые могут блокировать доступ к консоли отчетов.
Давайте проверим и почистим эти папки:
C:\Users\ИмяПользователяСлужбы\AppData\Local\Temp\
или
C:\Windows\Temp\
srvinfo. После обновления платформы права иногда "слетают", что приводит к невозможности записи временных результатов отчета на диск — отсюда и "пустой результат" в отчете.Иногда после обновления платформы нарушается регистрация COM-компоненты comcntr.dll, которая используется для внешних соединений и некоторых внутренних механизмов. Давайте восстановим её регистрацию.
Запустите командную строку от имени администратора и выполните команду (скорректируйте путь к вашей версии платформы):
regsvr32 "C:\Program Files\1cv8\8.3.25.1546\bin\comcntr.dll"
После выполнения всех вышеописанных действий (очистка кэша, очистка Temp, регистрация DLL) настоятельно рекомендуется выполнить полную физическую перезагрузку сервера (Reboot). Простого перезапуска службы может быть недостаточно, если "зависли" процессы в оперативной памяти или сессии на уровне SQL Server.
Если после выполнения всех действий проблема сохраняется, давайте рассмотрим более глубокие причины, связанные с базой данных и настройками конфигурации.
Для "скульных" баз (клиент-сервер) характерна проблема, когда SQL Server хранит старые планы запросов, которые неоптимальны или несовместимы с запросами, генерируемыми новой платформой 8.3.25. Особенно это касается работы с временными таблицами.
Рекомендуется выполнить очистку процедурного кэша на стороне SQL Server. Для этого выполните следующий SQL-запрос в Management Studio:
DBCC FREEPROCCACHE
Эта команда очистит кэш планов запросов, заставив SQL Server скомпилировать их заново при следующем обращении 1С.
В конфигураторе ЗУП проверьте "Режим совместимости". Если ваша конфигурация работает в режиме совместимости (например, с версией 8.3.21 или 8.3.24), а платформа обновлена до 8.3.25, могут возникать внутренние конфликты в механизме расширений и СКД. Если это допустимо для вашей версии ЗУП, рассмотрите возможность поднятия режима совместимости или убедитесь, что установлены все последние патчи для конфигурации, исправляющие работу на новой платформе.
Платформа 8.3.25 усилила контроль безопасности. Если консоль отчетов запускается как внешняя обработка, обратите внимание на флаг "Безопасный режим". В новой версии платформы безопасный режим может блокировать выполнение определенных операций (например, привилегированный режим или доступ к файловой системе), которые раньше разрешались неявно. Попробуйте открыть консоль отчетов через меню "Файл" — "Открыть" под пользователем с полными правами и убедитесь, что в коде открытия внешнего отчета не установлен принудительный безопасный режим.
Для восстановления работоспособности отчетов в ЗУП после обновления на 8.3.25 необходимо выполнить комплекс мер в следующем порядке:
srvinfo.Temp пользователя, под которым запущен сервер 1С.comcntr.dll.Выполнение этих шагов гарантированно устраняет конфликты метаданных между версиями платформы и возвращает работоспособность консоли отчетов.