Почему не работает консоль отчетов или выдается пустой результат в ЗУП после обновления платформы на 8.3.25?

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

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

Симптомы проблемы могут различаться: у одних пользователей консоль запросов (ЗУП) выдает ошибку формата потока и аварийно завершает работу, у других — отчет формируется, но выдает абсолютно пустой результат, несмотря на наличие данных в системе. Интересной особенностью является то, что в тестовой базе (копии) отчеты могут работать корректно, а в рабочей (продуктивной) среде на SQL-сервере — нет. Давайте проанализируем причины этого поведения и пошагово разберем методы устранения неисправности.

Диагностика проблемы

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

  1. Вы обновили платформу сервера 1С и клиентских рабочих мест до версии 8.3.25.x.
  2. База данных работает в клиент-серверном варианте (SQL).
  3. При попытке открыть внешний отчет или запустить запрос в консоли отчетов, система либо не отображает данные (пустой результат), либо выдает ошибку.
  4. Стандартные отчеты конфигурации могут продолжать работать нормально, или сбои носят выборочный характер.

Основная причина кроется в том, как новая версия платформы взаимодействует с временными файлами и кэшем, оставшимися от предыдущей версии. Платформа 8.3.25 имеет ряд архитектурных изменений в механизме работы с Системой Компоновки Данных (СКД) и временными таблицами, что вызывает конфликты при наличии устаревшего кэша.

Этап 1: Очистка клиентского кэша

Хотя проблема чаще всего кроется на стороне сервера, давайте начнем с самого простого действия, которое исключит влияние локальных данных пользователя. Иногда ошибка "зависает" в локальных файлах профиля.

Самый быстрый способ очистить клиентский кэш без удаления папок вручную — это пересоздание ссылки на базу в списке запуска 1С.

  1. Закройте 1С:Предприятие.
  2. В окне запуска выделите проблемную базу.
  3. Удалите её из списка (сама база данных при этом не удалится, удаляется только ярлык).
  4. Добавьте базу снова, указав тот же путь к серверу или файлу.

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

Этап 2: Очистка кэша сервера 1С (Основное решение)

Это ключевой этап. При обновлении платформы сервер 1С начинает использовать новые алгоритмы сериализации данных и построения планов запросов. Если в служебных папках сервера остались временные файлы от старой версии (например, 8.3.22 или 8.3.24), возникает конфликт версий скомпилированного кода конфигурации.

Давайте выполним полную очистку серверного кэша. Обратите внимание: эти действия требуют остановки службы сервера 1С, поэтому их необходимо выполнять в нерабочее время.

  1. Остановите службу Агента сервера 1С:Предприятие. Это можно сделать через консоль "Службы" (services.msc) или через командную строку.
  2. Найдите каталог, где сервер 1С хранит свои временные данные. Обычно это папка srvinfo. Путь к ней зависит от настроек установки, но по умолчанию он выглядит так: C:\Program Files\1cv8\srvinfo\ Если вы меняли настройки при установке, путь может отличаться (например, на диске D: или E:).
  3. Внутри папки srvinfo найдите подпапку reg_1541 (номер порта может отличаться, если у вас несколько кластеров).
  4. В этой папке найдите каталоги с длинными идентификаторами (UUID), например snccntx.... Это и есть сеансовые данные и кэш метаданных.
  5. Внимание! Не удаляйте файлы списка баз и настройки кластера. Нам нужно очистить именно временные данные. Самый безопасный и радикальный метод, который рекомендуют опытные администраторы — удалить все временные файлы пользователя, под которым запускается служба сервера 1С (USR1CV8).

Более точечный метод очистки кэша конкретной базы данных на сервере:

  1. Зайдите в каталог кластера (обычно reg_1541).
  2. Найдите папки с именами-гуидами (вида 7b010362-d227-4424-9426-538676d1a03e). Каждая такая папка соответствует одной базе данных.
  3. Внутри этих папок содержатся кэшированные данные конфигурации. Удаление этих папок приведет к тому, что при следующем запуске сервер заново "соберет" кэш из базы данных SQL.

Этап 3: Работа с временными файлами Windows и правами доступа

Для платформы 8.3.25 критически важным стало состояние системной папки Temp пользователя, под которым работает служба сервера 1С. В этой версии замечена особенность: она оставляет "мусорные" файлы сессий, которые могут блокировать доступ к консоли отчетов.

Давайте проверим и почистим эти папки:

  1. Определите пользователя, от имени которого запущена служба "Агент сервера 1С:Предприятие".
  2. Зайдите в системную папку временных файлов этого пользователя. Обычно это: C:\Users\ИмяПользователяСлужбы\AppData\Local\Temp\ или C:\Windows\Temp\
  3. Удалите всё содержимое этой папки (при остановленной службе 1С).
  4. Убедитесь, что у пользователя службы есть полные права на эту папку, а также на каталог srvinfo. После обновления платформы права иногда "слетают", что приводит к невозможности записи временных результатов отчета на диск — отсюда и "пустой результат" в отчете.

Этап 4: Регистрация компонент и перезагрузка

Иногда после обновления платформы нарушается регистрация COM-компоненты comcntr.dll, которая используется для внешних соединений и некоторых внутренних механизмов. Давайте восстановим её регистрацию.

Запустите командную строку от имени администратора и выполните команду (скорректируйте путь к вашей версии платформы):

regsvr32 "C:\Program Files\1cv8\8.3.25.1546\bin\comcntr.dll"

После выполнения всех вышеописанных действий (очистка кэша, очистка Temp, регистрация DLL) настоятельно рекомендуется выполнить полную физическую перезагрузку сервера (Reboot). Простого перезапуска службы может быть недостаточно, если "зависли" процессы в оперативной памяти или сессии на уровне SQL Server.

Дополнительные факторы: SQL Server и режим совместимости

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

Очистка процедурного кэша SQL

Для "скульных" баз (клиент-сервер) характерна проблема, когда 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 необходимо выполнить комплекс мер в следующем порядке:

  1. Удалить и добавить базу в список запуска у клиента (для очистки локального кэша).
  2. Остановить службу сервера 1С.
  3. Очистить серверный кэш в папке srvinfo.
  4. Очистить папку Temp пользователя, под которым запущен сервер 1С.
  5. Выполнить перерегистрацию comcntr.dll.
  6. Выполнить полную перезагрузку сервера Windows.

Выполнение этих шагов гарантированно устраняет конфликты метаданных между версиями платформы и возвращает работоспособность консоли отчетов.

← На главную