В процессе эксплуатации систем на базе 1С:Предприятие 8.3, таких как «Бухгалтерия предприятия 3.0» или «Управление торговлей 11», пользователи и администраторы иногда сталкиваются с досадной ошибкой при попытке сформировать стандартные отчеты (например, Анализ счета, Оборотно-сальдовая ведомость или Ведомость по товарам на складах). Ошибка выглядит следующим образом: Значение не является значением объектного типа (Результат).
Характерной особенностью этой проблемы является ее «избирательность»: отчет может не строиться только по конкретному счету (например, 41.01) или складу, в то время как другие настройки работают корректно. Более того, при выгрузке этой же базы в файловый вариант ошибка часто исчезает. В данной статье мы подробно разберем, почему возникает этот сбой и как его устранить, основываясь на практическом опыте решения подобных инцидентов.
Чтобы понять, почему система выдает такое сообщение, нам необходимо заглянуть во внутреннюю кухню работы современных конфигураций на базе БСП (Библиотеки стандартных подсистем). Рассмотрим основные этапы формирования отчета:
rphost) выполняет запрос к базе данных и компонует результат.РезультатВыполнения.Ошибка Значение не является значением объектного типа (Результат) возникает в тот момент, когда программный код формы отчета пытается обратиться к свойству РезультатВыполнения.Результат, но переменная РезультатВыполнения по какой-то причине имеет значение Неопределено. Проанализируем типичный фрагмент кода, где это происходит:
// Фрагмент из формы отчета
РезультатВыполнения = ДлительныеОперации.ОжидатьЗавершения(ИдентификаторЗадания, ПараметрыОжидания);
// Если фоновое задание аварийно завершилось или связь с ним потеряна:
Результат = РезультатВыполнения.Результат; // Здесь возникает ошибка!
Если сервер 1С теряет связь с фоновым заданием или данные о сеансе оказываются повреждены, объект РезультатВыполнения не инициализируется должным образом, что и приводит к краху системы.
Как показывает практика, в файловых версиях механизм взаимодействия между основным и фоновым потоком упрощен. В клиент-серверном варианте (SQL) за координацию процессов отвечает Менеджер кластера. Он хранит промежуточные данные сеансов в специальных временных файлах на диске сервера.
Проанализируем ситуацию: если настройки СУБД (индексы, статистики) в порядке, а чистка обычного пользовательского кэша (папки в %AppData%) не помогает, значит проблема кроется глубже — в серверном кэше сеансовых данных.
Это наиболее эффективный метод решения данной проблемы. В каталоге службы сервера 1С существует папка snccntx (Session Context), где хранятся состояния активных сессий и данные обмена фоновых заданий. Если файлы в этой папке повреждаются (например, из-за внезапного отключения питания, сбоя службы rphost или блокировки антивирусом), сервер начинает выдавать пустые результаты для длительных операций.
Рассмотрим пошагово процедуру очистки:
services.msc.C:\Program Files\1cv8\srvinfo\reg_1541\ (номер порта 1541 может отличаться, если у вас создано несколько кластеров).snccntx* внутри reg_1541 — это не удалит данные базы, а лишь сбросит сеансовые данные.После этой процедуры сервер заново инициализирует структуру сеансовых данных, и ошибка РезультатВыполнения.Результат, как правило, исчезает.
Проанализируем ситуацию с версиями программного обеспечения. Часто подобные ошибки наблюдаются на специфических релизах платформы, таких как 8.3.22.1704. В этой линейке были зафиксированы ошибки, связанные с утечками памяти в менеджере кластера и некорректной обработкой временных файлов.
Если очистка кэша помогает лишь на время, рассмотрим следующие действия:
USR1CV8. Убедитесь, что у него есть полные права (Full Control) на папку srvinfo и все вложенные объекты.srvinfo в исключения антивируса. Антивирусное сканирование файлов в момент записи сеансовых данных — одна из главных причин повреждения кэша snccntx.Иногда ошибка привязана к конкретному счету (например, 41.01) из-за того, что в базе данных сохранились некорректные настройки компоновки именно для этого варианта отчета. Даже если вы чистите кэш на компьютере, эти настройки подгружаются из таблицы SystemSettings базы данных.
Чтобы исключить этот фактор, выполним следующие шаги:
Это сбросит все фильтры и группировки к заводским установкам, что может помочь, если проблема была вызвана конфликтом настроек СКД.
Если проблема сохраняется, проанализируем состояние фоновых заданий. Воспользуйтесь стандартной обработкой «Консоль регламентных заданий» или посмотрите в «Журнал регистрации»:
Значение не является значением объектного типа.Ошибка Значение не является значением объектного типа (Результат) — это симптом того, что фоновый процесс формирования отчета «отвалился» от основного сеанса. В большинстве случаев это лечится очисткой серверного каталога snccntx при остановленной службе 1С. Однако для предотвращения рецидивов обязательно настройте исключения антивируса и следите за актуальностью версии платформы, так как стабильность механизмов длительных операций напрямую зависит от качества сборки 1С:Предприятия.