Преобразование значения к типу Булево не может быть выполнено #350846


#0 by Eka-dobrik
Помогите разобраться. Есть Фунция в модуле приложения, к которой обращаются отчеты при открытии ("Функция1"). Эта "Функция1" обращается к другой функции, все в том же модуле, которая содержит запрос ("Функция2"). По порядку: Функция1 при открытии какого-либо отчета проверяет (обращяясь при этом к Функции2), есть ли у данного пользователя права для открытия данного отчета (она работает), т.е. если доступа нет - отчет не открывается, и выдает сообщение. А Функция2 как раз таки в своем запросе проверяет из справочника Пользователей, может ли данный пользователь открывать данный отчет. Запрос работает, а в случае, если ЕстьДоступ (реквизит справочника Пользователей, тип булево) = истина, то, при открытии отчета он говорит, что "Преобразование значения к типу Булево не может быть выполнено", ссылаясь на строку     Возврат(Выборка.ЕстьДоступ); Таки я не могу понять, почему так оно происходит?
#1 by ТелепатБот
#2 by ЛНТ
почему в скобках?
#3 by Hitcher
Вероятнее всего в выборке значение NULL, которое невозможно првести к булево. В отладчик умеешь заглядывать?
#4 by Defender aka LINN
Скажи, тебе каое именно слово непонятно - "преобразование", "не может", "тип" или "Булево"?
#5 by vde69
скорее всего где-то имеешь значение "неопределено" или "null"
#6 by ЛНТ
,, а где здесь преобразование типов?
#7 by Defender aka LINN
Да будет тебе известно, преобразование случается не только принудительно. И вообще, ты про отладчик когда-нибудь слышал?
#8 by Eka-dobrik
Вот сам запрос, я все проверяла, только последняя строчка не работает Объясните тогда, пожалуйста, почему значение может быть "неопределено" или "null"?
#9 by Eka-dobrik
Defender aka LINN, слышала и видела :))
#10 by Eka-dobrik
Уточню еще, что ВидыОтчетовДляДоступа - это табличная часть справочника Пользователи, с реквизитом типа булево ЕстьДоступ. Главное, если его нет - все работает, как надо, а если он есть - не работает нифига...
#11 by ЛНТ
ну объясни мне, где в этой строчке Возврат(Выборка.ЕстьДоступ); непринудительное преобразование типов отладчик - да, слышал такое слово
#12 by ЛНТ
#13 by Eka-dobrik
ЛНТ, ну пусть слышала... подскажите пожалуйста, как "принудить" его преобразовать? ((
#14 by ЛНТ
хотя нет, бред
#15 by Eka-dobrik
да, ошибка таже...
#16 by ЛНТ
у LINNа спроси, он великий учитель(Мастер), всё тебе объяснит
#18 by Eka-dobrik
спасибо
#19 by ЛНТ
о великий учитель, на кого же ты нас бросил?
#20 by Eka-dobrik
ЛНТ, а давай с тобой все по порядочку? Есть процедура (во всех отчетах, сейчас рассмотрим акт сверки): она обращается к функции из модуля приложения: а эта обращается к следующей (которая и не работает), код выше... может ты мне поможешь?
#21 by ЛНТ
со мной не надо по порядочку мои уста немеют в присутствии великого учителя
#23 by Eka-dobrik
vde69, спасибо, но ошибка таже...
#24 by ЛНТ
ты определись точно на какой строке ошибка и текст ошибки полностью покажи
#25 by Eka-dobrik
{Отчет.АктСверки.Форма.Форма}: Преобразование значения к типу Булево не может быть выполнено Ошибку он мне показывает в строке с обращением к Функции глПередОткрытиемОтчета(прОбъект), а эта функция ссылается на Функцию ЕстьДоступПоВидуОтчета(ВидОтчета)
#26 by ЛНТ
твои функции не возвращают значения
#27 by Stepa86
вот в этой строчке надо выделить (глПередОткрытиемОтчета(ЭтотОбъект)) и нажать Shift + F9, и то что получиться показать нам
#28 by ЛНТ
#29 by Mitriy
глПередОткрытиемОтчета - это что такое? эта функция вааще есть?
#30 by ЛНТ
если лень читать топик, не лезь в разговор
#31 by Eka-dobrik
ЛНТ, спасибо! спасибо!! спасибо!!!
#32 by vde69
надо так:
#33 by Eka-dobrik
Все работает! Еще раз огромное спасибо!
#34 by hhhh
скорее всего она ругается на группы справочника "Пользователи". Они ведь тоже попадают в выборку. Попробуй в ГДЕ добавить
#36 by vde69
Учись правильному стилю програмирования: всегда делай возвраты в функции только через переменные, и всегда предусматиривй начальную инициализацию этой переменной, и не делый возврата значений в нутри кода
#37 by ЛНТ
бред
#38 by Gisborn
Не попал
#39 by HIDDEN MESSAGE
#40 by КонецЕсли
Цитата: .... :)
#41 by vde69
ты не глумись ))) я дело говорю... подумай что будет если в выборке не будет ни одной записи... и в моем случе не вызовет ошибки исполнения :)) конечно код выглядет коряво, и надо делать предворительную проверку ... но учитывая уровень САБЖ-а я дал просто рабочий код (я пытался ранее наставить на этот путь)
#42 by КонецЕсли
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 возврат НЕ (Выборка.Количество=0 или Не Выборка[0].ЕстьДоступ); :)))))))
#43 by vde69
сново могу ошибку подсказать: что будет если поле "ЕстьДоступ" совсем недавно добавлено в ТЧ справочника "Пользователи", то есть есть строки ТЧ в которых это поле не заполнено???? У тебя будет вот тут ошибка исполнения: Кроме того твоя конструкция "возврат НЕ (Выборка.Количество=0 или Не Выборка[0].ЕстьДоступ)" - тоже выглядит нелепо и не читаебильно...
#44 by КонецЕсли
по первой части: Если булевое поле совсем недавно добавлено, то оно инициализируется в "ложь" по умолчанию. по второй части: Это всего лишь антипод вашего лепого и читабельного: Если Результат = Истина Тогда Результат = Истина;   з.ы. не надо быть таким серьезным :)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С