При работе с конфигурациями на базе Библиотеки стандартных подсистем (БСП), такими как 1С:Розница 2.2, Управление торговлей или Зарплата и кадры государственного учреждения, пользователи часто сталкиваются с критической ошибкой при попытке открыть карточку пользователя или создать нового. Текст ошибки гласит: «Преобразование значения типа Булево не может быть выполнено». Ситуация осложняется тем, что это происходит часто после выполнения регламентных операций, например, после свертки информационной базы.
В данной статье мы подробно разберем, почему возникает эта проблема, проанализируем программный код и рассмотрим пошаговые инструкции по ее устранению.
Для начала проанализируем стек вызовов, который обычно сопровождает эту ошибку. Как правило, корень проблемы кроется в общем модуле УправлениеСвойствами. Рассмотрим типичный фрагмент стека:
{ОбщийМодуль.УправлениеСвойствами.Модуль(1830)}: Если Не ИспользуютсяСвойства Тогда
{ОбщийМодуль.УправлениеСвойствами.Модуль(54)}: Если Не ИспользуютсяСвойства(Форма, ДополнительныеПараметры) Тогда
{Справочник.Пользователи.Форма.ФормаЭлемента.Форма(165)}: МодульУправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
Проанализируем ситуацию: программа пытается выполнить логическую операцию Если Не ИспользуютсяСвойства Тогда. В нормальном состоянии переменная ИспользуютсяСвойства должна содержать значение Булево (Истина или Ложь). Однако, если функция возвращает Неопределено или NULL, система 1С:Предприятие не может выполнить инверсию (оператор Не) и выбрасывает исключение.
Чаще всего это происходит из-за того, что в базе данных после свертки или некорректного обновления повреждены кешированные значения функциональных опций или очищены служебные константы, отвечающие за использование дополнительных реквизитов и сведений.
Самый простой и зачастую эффективный метод — заставить систему программно перезаписать значения констант и параметров сеанса. Разберем, как это сделать без написания кода:
Зачем мы это делаем? При изменении этого флага в типовых конфигурациях срабатывает обработчик события, который обновляет параметры работы программы и записывает актуальные значения в константы. Это часто «оживляет» логику модуля УправлениеСвойствами.
Если первый способ не помог, вероятно, проблема глубже — в нарушении связи между справочником Пользователи и его свойствами в системном справочнике Идентификаторы объектов метаданных. Выясним причину: после свертки идентификаторы могли задублироваться или потерять связь с реальными таблицами БД.
Для решения нам понадобится запустить программное обновление служебных данных. Рассмотрим пример кода, который можно выполнить через внешнюю обработку или консоль кода:
// Обновляем данные справочника идентификаторов метаданных
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника();
// Принудительно обновляем параметры работы программы в кэше
СтандартныеПодсистемыСервер.УстановитьПараметрыРаботыПрограммы();
Сообщить("Обновление служебных данных завершено успешно.");
После выполнения этого кода рекомендуется полностью перезапустить сеанс пользователя (выйти из программы и зайти снова), чтобы очистить клиентский кеш.
В некоторых случаях (особенно в конфигурации «Розница») ошибка может быть связана с тем, что система не может определить права текущего пользователя на работу с дополнительными свойствами. Рассмотрим подробнее, как это проверить:
Как отмечают участники форумов, иногда «битая» ссылка в настройках прав приводит к тому, что функция ИспользуютсяСвойства возвращает пустое значение вместо логического ответа.
Проанализируем ситуацию, когда данные застревают в служебных регистрах. Существует регистр сведений ПараметрыРаботыПрограмм. В нем БСП хранит кешированные настройки различных подсистем, включая подсистему управления свойствами.
Разберем порядок действий для очистки:
ПараметрыРаботыПрограмм.УправлениеСвойствами.Чтобы избежать подобных проблем в будущем, при выполнении свертки в 1С:Розница 2.2 или других конфигурациях, придерживайтесь следующих правил:
Тестирование и исправление (Конфигуратор -> Администрирование). Обязательно выбирайте пункты «Проверка логической целостности» и «Реиндексация таблиц».%AppData%\1C\1Cv8.Пользователи, Номенклатура, Контрагенты). Если формы не открываются — сразу приступайте к пересчету функциональных опций, как описано в Способе 1.Используя приведенные выше методы, вы сможете оперативно устранить ошибку преобразования типа Булево и восстановить работоспособность справочника пользователей.