Closed Toveal closed 10 months ago
ТипЗнч(ПростоПустаяСтрока)
? И если там строка, то какая?Посмотрю попожже, спасибо за репорт
Значение:
Заметил одну особенность. Если значение переменной "ПростоПустаяСтрока" поместить в ТекстовыйДокумент (УстановитьТекст) и получить обратно (ПолучитьТекст) то проверка на пустую строку работает
УстановитьВнешнююКомпоненту("ОбщийМакет.FBReader");
ВК = ПодключитьВнешнююКомпоненту("ОбщийМакет.FBReader", "FBReader", ТипВнешнейКомпоненты.Native);
ВК = Новый("AddIn.FBReader.TestStr");
ПростоПустаяСтрока = ВК.ПолучитьПустуюСтроку();
Если ПростоПустаяСтрока = "" Тогда
Сообщить("Пустая строка реально пустая!");
Иначе
Сообщить("Пустая строка не пустая? Хмм");
КонецЕсли;
ТекстФайл = Новый ТекстовыйДокумент;
ТекстФайл.УстановитьТекст(ПростоПустаяСтрока);
НоваяПустаяСтрока = Текстфайл.ПолучитьТекст();
Если НоваяПустаяСтрока = "" Тогда
Сообщить("После текстового документа работает");
Иначе
Сообщить("После текстового документа не работает");
КонецЕсли;
Выяснил что это пустой символ (код 0 в Unicode) И вот такой код отработает
УстановитьВнешнююКомпоненту("ОбщийМакет.FBReader");
ВК = ПодключитьВнешнююКомпоненту("ОбщийМакет.FBReader", "FBReader", ТипВнешнейКомпоненты.Native);
ВК = Новый("AddIn.FBReader.TestStr");
ПростоПустаяСтрока = ВК.ПолучитьПустуюСтроку();
Если ПростоПустаяСтрока = Символ(0) Тогда
Сообщить("Пустая строка реально пустая!");
Иначе
Сообщить("Пустая строка не пустая? Хмм");
КонецЕсли;
Попробовал под Linux, ВК.ПолучитьПустуюСтроку() = ""
и СтрДлина(ВК.ПолучитьПустуюСтроку()) = СтрДлина("")
, странно. Я еще гляну на винде на днях. Пока можете еще дать инфы? Что выплюнет СтрДлина(ВК.ПолучитьПустуюСтроку())
?
Не могу код с линукса нормально скопипастить, к сожалению, т.к. у меня обучающая лицензия.
Попробовал под Linux,
ВК.ПолучитьПустуюСтроку() = ""
иСтрДлина(ВК.ПолучитьПустуюСтроку()) = СтрДлина("")
, странно. Я еще гляну на винде на днях. Пока можете еще дать инфы? Что выплюнетСтрДлина(ВК.ПолучитьПустуюСтроку())
?Не могу код с линукса нормально скопипастить, к сожалению, т.к. у меня обучающая лицензия.
Выдает 1
Кажется проблема в функции native_api_1c_core::ffi::string_utils::os_string_nil (ветка windows)
А именно в chain(Some(0).into_iter())
Из-за этого мы получаем вместо пустой строки символ 0 и если написать строку в 1С (например "Привет") то "Привет" из компоненты не будет равен тому что написано в 1С
Почти наверняка, что так. Если у вас есть возможность потестить, было бы здорово - я до конца недели не смогу уделить время.
Попробовал, просто удалить чеин нуля не получится.
Нужно ноль чейнить, когда мы передаем в 1С имена функций и параметров, иначе не взлетает. Но ноль не нужно чейнить, когда мы передаем в 1С результаты функций. Надо сделать 2 метода, для уних систем он будет дублироваться.
Здравствуйте. Написал простую компоненту в качестве примера. Получаю пустую строку, проверяю в 1С на пустую строку, но она не является пустой строкой
Код Rust:
Код 1С:
Используется библиотека с GitHub. Версия 0.10.5