![]() |
![]() |
![]() |
|
Функция, возвращающая булево. | ☑ | ||
---|---|---|---|---|
0
Барабашка серверная
07.04.08
✎
22:50
|
Описал функцию:
Функция Проверка() Перем Результат; Если Дата <> ДатаДок; // для примера Тогда Возврат Результат = Ложь; Иначе Возврат Результат = Истина; КонецЕсли; КонецФункции При вызове в соседней процедуре получаю ошибку "Преобразование значения к типу Булево не может быть выполнено". Вызываю функцию так: Если НЕ Проверка() Тогда
Какие-то простые грабли, но не могу понять какие. |
|||
1
zbv
07.04.08
✎
22:53
|
Для примера:
Функция Проверка() Возврат Дата = ДатаДок; КонецФункции |
|||
2
Барабашка серверная
07.04.08
✎
22:58
|
Ха! Заработало, когда я переправил "Если НЕ..." на
Если Проверка() = Ложь Тогда
Хм. (1) Ошибка не в самой функции, а в вызове. |
|||
3
zyto
07.04.08
✎
23:11
|
Эт чего за строчка такая страшная???
Возврат Результат = Ложь; Результат у тебя здесь = Неопределено Вот он пытается Булево (Истина/Ложь) совместить с этим неопределно, вот ошибку и выдаёт. Надо писать так: Функция Проверка() Если Дата <> ДатаДок Тогда Возврат Ложь; Иначе Возврат Истина; КонецЕсли; КонецФункции А потом уже... Если НЕ Проверка() Тогда |
|||
4
Jolly Roger
07.04.08
✎
23:13
|
Точно барабашка...
|
|||
5
TamerlanDE
07.04.08
✎
23:14
|
(2) Проанализируем твою функцию:
Переменная результат имеет значение Неопределено
";" - косяк, но это неважно
Сравнение типов Булево и Неопределено вернет Ложь, независимо от значения переменой типа Булево. Получается, функция будет все время возвращать Ложь. |
|||
6
TamerlanDE
07.04.08
✎
23:28
|
(4) Пускай барабашка, зато не дятел. )))
|
|||
7
Барабашка серверная
08.04.08
✎
00:01
|
(5) Я не понял, где сравнивается Неопределено и Булево?
|
|||
8
1Cко
08.04.08
✎
00:04
|
Вообщем так: (резюмирую)
Функция Проверка() Перем Результат; Если Дата <> ДатаДок // для примера Тогда Возврат Ложь; Иначе Возврат Истина; КонецЕсли; КонецФункции |
|||
9
Asmody
модератор
08.04.08
✎
00:05
|
(7) там, где ты не инициализируешь переменную
|
|||
10
zcxvb
08.04.08
✎
00:07
|
(7) Не сношай голову... :)
В (1), вариант намного более кошерный, в контексте 1С... Вернет тебе, единичку или нолик. Что и есть, чертово "булево". |
|||
11
Wladimir_spb
08.04.08
✎
00:09
|
(6) Только не надо торопиться с выводами)
(7) Какой тип у переменной Результат? (8) А теперь посмотри (1)... |
|||
12
Барабашка серверная
08.04.08
✎
00:22
|
Да не, я уже сделал. Заработало.
(10) Может и кошерный, но у меня там больше условий. Я дату вставил для примера, чтобы наглядней и короче было. (11) Тип у переменной Результат = Неопределено, я это знаю. Да эта переменная и не нужна совсем. Я сначала написал код как в (3), но т.к. не понял где ошибка, грешил на синтаксис функции, а проблема была не в этом. Проверил отладчиком и понял в чем дело. Вопрос возник исключительно в силу того, что это моя первая функция в 1С. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |