Как исправить ошибку "Значение не представляет агрегатный объект (Выбран)" при открытии общего журнала в 1С 7.7?

Программист 1С v7.7
← На главную

При запуске общего журнала в платформе 1С 7.7 пользователи иногда сталкиваются с критической ошибкой: "Значение не представляет агрегатный объект (Выбран)". Из-за этого журнал документов перестает открываться, блокируя привычную работу в программе.

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

Причины возникновения ошибки

Выясним причину сбоя. Ошибка обычно указывает на то, что программа пытается вызвать метод Выбран() или обратиться к свойству Выбран у переменной или элемента формы (например, КонтрагентДляОтбора), который в данный момент имеет примитивный тип данных (число 0, пустую строку "" или неинициализированное значение).

Это может произойти в следующих случаях:

  1. Сбой сохраненного отбора пользователя: В настройках формы общего журнала был сохранен отбор по контрагенту, который впоследствии был помечен на удаление или удален из базы. При открытии журнала платформа считывает поврежденное значение отбора.
  2. Отсутствие скобок при вызове метода: В коде 1С 7.7 вызов метода проверки выбора справочника требует скобок: Выбран() = 1. Если в коде написано КонтрагентДляОтбора.Выбран > 0, платформа ищет реквизит с таким именем, а не вызывает метод.
  3. Потеря типа переменной: Реквизит КонтрагентДляОтбора потерял связь со справочником и стал обычным числом или строкой.

Способ 1. Безопасное выполнение кода отбора (Попытка ... Исключение)

Самым надежным способом устранения сбоя является редактирование модуля формы списка общего журнала в режимах Конфигуратор.

Разберем по шагам процесс внесения изменений:

  1. Запустите программу 1С в режиме Конфигуратор.
  2. В главном меню выберите Конфигурация — Открыть конфигурацию.
  3. Перейдите в ветку Журналы — ЖурналОбщий (или соответствующий общий журнал вашей базы) и откройте ФормаСписка.
  4. Откройте модуль формы журнала и найдите процедуру ПриВыбореКонтрагента.
  5. Оберните код проверки в конструкцию Попытка ... Исключение, чтобы при возникновении сбоя программа автоматически сбрасывала отбор и не блокировала работу журнала.

Посмотрим на пример исходного кода с ошибкой:


Процедура ПриВыбореКонтрагента()
    Если КонтрагентДляОтбора.Выбран>0 Тогда
        УстановитьОтбор("Контрагент", КонтрагентДляОтбора);
        КонтрагентДляОтбора = КонтрагентДляОтбора.ТекущийЭлемент;
    Иначе
        УстановитьОтбор("");
    КонецЕсли;
КонецПроцедуры

Изменим данный фрагмент, добавив безопасный обработчик исключений:


Процедура ПриВыбореКонтрагента()
    Попытка
        Если КонтрагентДляОтбора.Выбран() = 1 Тогда
            УстановитьОтбор("Контрагент", КонтрагентДляОтбора);
            КонтрагентДляОтбора = КонтрагентДляОтбора.ТекущийЭлемент;
        Иначе
            УстановитьОтбор("");
        КонецЕсли;
    Исключение
        УстановитьОтбор("");
    КонецПопытки;
КонецПроцедуры

Также можно выводить сообщение в журнал для отладки с помощью функции ОписаниеОшибки():


Процедура ПриВыбореКонтрагента()
    Попытка
        Если КонтрагентДляОтбора.Выбран() = 1 Тогда
            УстановитьОтбор("Контрагент", КонтрагентДляОтбора);
            КонтрагентДляОтбора = КонтрагентДляОтбора.ТекущийЭлемент;
        Иначе
            УстановитьОтбор("");
        КонецЕсли;
    Исключение
        Сообщить("Ошибка отбора по контрагенту: " + ОписаниеОшибки());
        УстановитьОтбор("");
    КонецПопытки;
КонецПроцедуры

Сохраните изменения в Конфигураторе и перезапустите программу в обычном режиме. Журнал успешно откроется.

Способ 2. Очистка пользовательских настроек и временных файлов

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

  1. Завершите работу 1С 7.7.
  2. Перейдите в каталог базы данных 1С.
  3. Найдите папку конкретного пользователя (или папку usrdef) внутри каталога базы.
  4. Удалите файлы с расширениями .flk, .spl, .lst (например, 1Cv7.flk, 1Cv7.lst). В этих файлах сохраняются текущие позиционирования, фильтры и отборы форм.
  5. Попробуйте удалить служебный файл 1Cv7.cfg в каталоге базы (предварительно сделав его резервную копию).

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

← На главную