Имя: Пароль:
1C
1С v8
Запись булевой переменной в Excel файл
,
0 romign1
 
31.01.12
17:48
Добрый день. Возникла такая проблема: надо в экселевский файл в ячейку записывать булевую переменную, но не в формате "ИСТИНА", "ЛОЖЬ", а в виде "true", "false". В общем, этого и не получается :(
Если пытаться записать такими способами:
Лист.Range("A1").Value = Формат(Истина, "БЛ=false; БИ=true");
// или
Лист.Range("A1").Value = "true";

Всё равно в файл пишется "ИСТИНА" :( приходится потом заменой в самом экселе менять, что как-то совсем не интересно.
Прошу помощи, не знаю как еще по-другому записать.
1 Rie
 
31.01.12
17:50
(0) Так тебе строку "true" туда записать надо? Или булево значение?
2 mozzga
 
31.01.12
17:50
установите английский ёксел, или пишите как строку а не булево, и вроде есть настройка что показывать если 1 или 0
3 manyak
 
31.01.12
17:50
пиши тупо текст true  и соотв. текст фыормат ячейке выставляй
4 romign1
 
31.01.12
17:57
(1) Булевую переменную записать в текстовом формате вида "true"/"false"
(2)(3) я же привел пример, что при попытке записать строку - срабатывает преобразователь типов и записывается "ИСТИНА". Не думаю, что от экселя будет зависеть записываемое значение, поскольку экселю из 1С передается уже преобразованная строка.
5 Rie
 
31.01.12
17:58
(4) Лист.Range("A1").Text = ...
6 romign1
 
31.01.12
18:01
(5) уже пробовал.
1. Это не перезаписываемое свойство
2. Даже если бы можно было записать — 1С всё равно преобразует строку "true" к значению ИСТИНА, до попытки записать
7 shuhard
 
31.01.12
18:03
(6) буди мужиком, пищи через ADODB
8 Rie
 
31.01.12
18:03
(6) 1С ничего не преобразует. Преобразование идёт уже в Excel.
А что скажет
Лист.Range("A1").Formula = "'true";
9 romign1
 
31.01.12
18:18
(8) С формулой тоже пробовал, та же фигня. Я тоже думал, что эксель виноват, но всё таки это кажется 1С.

Лист.Range("A1").Value = "true"; // Знач: "ИСТИНА" Тип: строка
Лист.Range("A2").Value = "trruue"; // Знач: "trruue" Тип: строка
Бул = "true"; // Знач: "true" Тип: строка
Лист.Range("A3").Value = Бул; // Знач: "ИСТИНА" Тип: строка


(7) пожалуй, не буду :)
10 Rie
 
31.01.12
18:22
(9) 1С тут ни при чём. С какого бодуна ей преобразовывать строку во что-то? Она просто передаёт VARIANT, указывая тип и значение. А дальше пусть приемник (то бишь, в данном случае - Excel) разбирается, как его интерпретировать.
11 shuhard
 
31.01.12
18:34
(9) а зря
12 romign1
 
31.01.12
18:48
(10) И как тогда сказать экселю, чтобы он писал в текстовом формате, а не преобразовывал в булево?
Получилось вывести правильное значение, если вычислять формулой:
Лист.Range("A1").Formula = "=""true""";
Но тут не понятно как поведет себя эта формула, когда этот файл будут дальше обрабатывать :( Хотелось бы простое текстовое значение.

(11) а я просто не в курсе что это и как с 1С связано :/
13 FN
 
31.01.12
18:50
Лист.Range("A1").NumberFormat = "@";
Лист.Range("A1").Value = "true";
14 romign1
 
31.01.12
18:55
(13) Ууу!! Работает!! Спасибо огромное :)