Почему не открывается элемент справочника Пользователи и возникает ошибка преобразования к типу Булево?

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

При работе с конфигурациями на базе Библиотеки стандартных подсистем (БСП), такими как 1С:Розница 2.2, Управление торговлей или Зарплата и кадры государственного учреждения, пользователи часто сталкиваются с критической ошибкой при попытке открыть карточку пользователя или создать нового. Текст ошибки гласит: «Преобразование значения типа Булево не может быть выполнено». Ситуация осложняется тем, что это происходит часто после выполнения регламентных операций, например, после свертки информационной базы.

В данной статье мы подробно разберем, почему возникает эта проблема, проанализируем программный код и рассмотрим пошаговые инструкции по ее устранению.

Анализ технической причины ошибки

Для начала проанализируем стек вызовов, который обычно сопровождает эту ошибку. Как правило, корень проблемы кроется в общем модуле УправлениеСвойствами. Рассмотрим типичный фрагмент стека:


{ОбщийМодуль.УправлениеСвойствами.Модуль(1830)}: Если Не ИспользуютсяСвойства Тогда
{ОбщийМодуль.УправлениеСвойствами.Модуль(54)}: Если Не ИспользуютсяСвойства(Форма, ДополнительныеПараметры) Тогда
{Справочник.Пользователи.Форма.ФормаЭлемента.Форма(165)}: МодульУправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);

Проанализируем ситуацию: программа пытается выполнить логическую операцию Если Не ИспользуютсяСвойства Тогда. В нормальном состоянии переменная ИспользуютсяСвойства должна содержать значение Булево (Истина или Ложь). Однако, если функция возвращает Неопределено или NULL, система 1С:Предприятие не может выполнить инверсию (оператор Не) и выбрасывает исключение.

Чаще всего это происходит из-за того, что в базе данных после свертки или некорректного обновления повреждены кешированные значения функциональных опций или очищены служебные константы, отвечающие за использование дополнительных реквизитов и сведений.

Способ 1: Перезапись функциональных опций через интерфейс

Самый простой и зачастую эффективный метод — заставить систему программно перезаписать значения констант и параметров сеанса. Разберем, как это сделать без написания кода:

  1. Перейдем в раздел Администрирование, далее выберем пункт Общие настройки.
  2. Найдем группу настроек Дополнительные реквизиты и сведения.
  3. Посмотрим на флаг Дополнительные реквизиты и сведения. Если он выключен — включим его. Если он уже включен — снимем флаг, нажмем «Записать», а затем снова установим его и снова нажмем «Записать».

Зачем мы это делаем? При изменении этого флага в типовых конфигурациях срабатывает обработчик события, который обновляет параметры работы программы и записывает актуальные значения в константы. Это часто «оживляет» логику модуля УправлениеСвойствами.

Способ 2: Обновление идентификаторов объектов метаданных

Если первый способ не помог, вероятно, проблема глубже — в нарушении связи между справочником Пользователи и его свойствами в системном справочнике Идентификаторы объектов метаданных. Выясним причину: после свертки идентификаторы могли задублироваться или потерять связь с реальными таблицами БД.

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


// Обновляем данные справочника идентификаторов метаданных
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника();

// Принудительно обновляем параметры работы программы в кэше
СтандартныеПодсистемыСервер.УстановитьПараметрыРаботыПрограммы();

Сообщить("Обновление служебных данных завершено успешно.");

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

Способ 3: Настройка дополнительных прав пользователя

В некоторых случаях (особенно в конфигурации «Розница») ошибка может быть связана с тем, что система не может определить права текущего пользователя на работу с дополнительными свойствами. Рассмотрим подробнее, как это проверить:

  1. Зайдем в раздел Администрирование — Настройки пользователей и прав.
  2. Найдем пункт Дополнительные права пользователей.
  3. Проверим, назначены ли права для текущего пользователя или группы пользователей. Попробуем перевыбрать профиль групп доступа.

Как отмечают участники форумов, иногда «битая» ссылка в настройках прав приводит к тому, что функция ИспользуютсяСвойства возвращает пустое значение вместо логического ответа.

Способ 4: Очистка регистра «Параметры работы программ»

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

Разберем порядок действий для очистки:

  1. Откроем Все функции (или «Функции для технического специалиста»).
  2. Найдем регистр сведений ПараметрыРаботыПрограмм.
  3. Найдем записи, в ключе которых фигурирует УправлениеСвойствами.
  4. Удалим эти записи. Не стоит бояться: система автоматически создаст их при следующем обращении к подсистеме, но уже с актуальными и корректными данными.

Рекомендации по выполнению свертки базы

Чтобы избежать подобных проблем в будущем, при выполнении свертки в 1С:Розница 2.2 или других конфигурациях, придерживайтесь следующих правил:

Используя приведенные выше методы, вы сможете оперативно устранить ошибку преобразования типа Булево и восстановить работоспособность справочника пользователей.

← На главную