Как записать логическое значение в dbf файл #535661


#0 by Ясный перец
Создаю средствами 1С dbf-файл. Одно из полей имеет логический тип. Не могу понять, как правильно присвоить логическое значение (.T. или .F.) полю dbf-файла. Помогите советом, плиз. Срочно нужно.
#1 by DGorgoN
#2 by Ясный перец
Спасибо, это понятно. В языке 1С 77 разве есть значения булева типа? По-моему нет. Уточню: в структуру базы добавляю поле ДБФМн.ДобавитьПоле("Ext","L",,); Хочу присвоить значение True, например. Как это написать? ДБФМн.Ext = ????
#3 by G-Re
Logical не поддерживается XBase. Записывай или 1 - 0 или -1 - 0 или еще как-нибудь в стандартные типы (Число, символ) данных.
#4 by miki
>>В языке 1С 77 разве есть значения булева типа? Вы заблуждаетесь, либо путаете с memo/blob
#5 by Ясный перец
Срочно нужно (я уже поиски и ЖКК мусолю параллельно - нет ответа) :(
#6 by aka AMIGO
ну, разве что 1 и 0 для обозначения состояния флажка - элемента диалога - остальное рукотворное.. Например, в одной из прог (самопальных, если чо..) есть перечисление "Булево" и два значения - Да и Нет можно модифицировать, если хочется, и применять, если понадобится. конфа - давнииишняя, изначально была "Торговля", так и осталась.. в других 7-рочных не встречал. достаточно функций ВЯ.. ЗЫ, всё ИМХО!
#7 by Ясный перец
Да, 1С не поддерживает создание полей memo. Но не о них речь. И даже не о том заблуждаюсь я или нет. Просто подскажите как записать: (здесь ДБФМн - объект xBase)
#8 by Ясный перец
Спасибо. Про Перечисление Булево тоже наслышан (и даже щупал), но это немного не та тема.
#9 by G-Re
Да так и написать, например Если Нечто Тогда ДБФМн.Ext = 1; Или Да как хочешь.
#10 by Ясный перец
Спасибо. Сейчас попробую...
#11 by Ясный перец
Спасибо всем поучаствовавшим. И особенно G-Re. Ваш совет помог. Извините меня за тупость - это временно :)
#12 by G-Re
Это не тупость, это просто временное помутнение разума. Тупости даже в  вопросах не наблюдалось. Успехов!
#13 by miki
Ты же, надеюсь, 0/1 в Logical записал? Или ты про совет из ?
#14 by Ясный перец
Дабы не оставлять вас в сомнениях поясню: воспользовался советом из
#15 by Torquader
Вообще-то, со стороны 1С значение Logical, которое в ADO есть True в 1С будет -1, а False - будет 0.
#16 by VasilyKushnir
После ветку смело можно было закрывать. True = истина True = 1 False = 0 (или все что угодно, кроме 1)
#17 by Torquader
На самом деле "умная" ADO, например, считает, что FALSE=0, а всё, что не ноль - это TRUE!
#18 by VasilyKushnir
Можно и так, только надо по диагонали хотя бы АДО просмотреть :-)))
#19 by miki
False - _только_ 0. Всё остальное - True.
#20 by Cthulhu
: ну зависит от.. в общем случае -1 - всегда true.
#21 by Torquader
В общем случае, всё зависит от реализации, но обычно, если используется логическое поле, то выполняется сравнение (не 0), то есть 0 всегда будет False. Что касается -1, то если используется арифметическое дополнение, то при преобразовании бита в байт (признак знака обычно включён), мы получаем -1 (то есть все установленные единицы). Что касается самого DBF-файла, то там логический тип мало чем отличается от типа CHAR, то есть за исключением проверки на два возможных значения. Не удивлюсь, что символ получается как "FT"[LogicalValue&1] то есть наиболее быстрая операция.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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