Версия для печати темы (https://pro1c.org.ua/index.php?s=8f3941276622306ab8860bf8a5d36cdb&showtopic=5140)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Как настроить кодировку чтения DBF?

Автор: grail 21.10.11, 20:32

1С:Підприємство 8.2 (8.2.13.219)
"Бухгалтерія для України", редакція 1.2.
Розробка конфігурації: "ABBYY Ukraine", 2005-2011 (1.2.3.5)

Читаем DBF и записываем в текстовый файл.
Не получается настроить корректную кодировку текстовых полей в TXT файле, которые импортируются из DBF.
Как настроить кодировку чтения DBF?

Вот в каком виде выводится информация в TXTфайл:
**********************
ПлательщикСчет=20681097000659
Плательщик=‚I‹…Љ‘,’‡Ћ‚
ПлательщикБанк=I-”ђ.”.ЏЂ’ ЉЃ"Џђ?‚Ђ’ЃЂЌЉ",Њ.I-”ђЂЌЉI‚.
**********************

ПутьDBF = "C:\jbkl_rec.dbf"; 
ПутьTXT = "C:\CB_to_1C.txt";

Текст = Новый ТекстовыйДокумент;
БД = Новый XBase;
//БД.Кодировка="ANSI";
БД.ОткрытьФайл(ПутьDBF,,);

Текст.ДобавитьСтроку("_1CClientBankExchange");
Текст.ДобавитьСтроку("ВерсияФормата=1.00");
Текст.ДобавитьСтроку("Кодировка=Windows");
Текст.ДобавитьСтроку("Отправитель=Система 'Клієнт-Банк'");
Текст.ДобавитьСтроку("Получатель=Бухгалтерия для Украины (базова), редакция 1.2");
//Текст.ДобавитьСтроку("СекцияРасчСчет");
Текст.ДобавитьСтроку("ДатаНачала=2011-10-01");
Текст.ДобавитьСтроку("ДатаКонца=2011-10-20");
Текст.ДобавитьСтроку("РасчСчет=26001356326024");
Текст.ДобавитьСтроку("КодВалюты=980");
Текст.ДобавитьСтроку("НачальныйОстаток=0");

Пока БД.Следующая() Цикл
    Текст.ДобавитьСтроку("СекцияДокумент=Платежное поручение");
    Текст.ДобавитьСтроку("ВидДокумента=Платежное поручение");
    Текст.ДобавитьСтроку("Номер="+БД.N_D);
    Текст.ДобавитьСтроку("Дата="+БД.DATE);
//     Текст.ДобавитьСтроку("ДокументИД="+БД.REF);
    Текст.ДобавитьСтроку("Сумма="+БД.SUMMA);
    Текст.ДобавитьСтроку("КодВалюты=980");

    Текст.ДобавитьСтроку("ПлательщикСчет="+БД.COUNT_A);
    Текст.ДобавитьСтроку("Плательщик="+БД.NAME_A);    
    Текст.ДобавитьСтроку("ПлательщикБанк="+БД.BANK_A);        
    Текст.ДобавитьСтроку("ПлательщикМФО="+БД.MFO_A);
    Текст.ДобавитьСтроку("ПлательщикОКПО="+БД.OKPO_A);    

    Текст.ДобавитьСтроку("ПолучательСчет="+БД.COUNT_B);
    Текст.ДобавитьСтроку("Получатель="+БД.NAME_B);    
    Текст.ДобавитьСтроку("ПолучательБанк="+БД.BANK_B);        
    Текст.ДобавитьСтроку("ПолучательМФО="+БД.MFO_B);
    Текст.ДобавитьСтроку("ПолучательОКПО="+БД.OKPO_B);    

    Текст.ДобавитьСтроку("НазначениеПлатежа="+БД.N_P);
    Текст.ДобавитьСтроку("КонецДокумента");
    
КонецЦикла;
Текст.ДобавитьСтроку("КонецФайла");
Текст.Записать(ПутьTXT);
БД.ЗакрытьФайл();

Автор: Vond 21.10.11, 21:49

КодировкаXBase (XBaseEncoding)
Значения
ANSI (ANSI)
OEM (OEM)

Описание:
Содержит варианты кодировок XBase.

Доступность:
Сервер, толстый клиент, внешнее соединение. Возможен обмен с сервером.

См. также:
XBase, свойство Кодировка

Пример:

    B = Новый XBase;
    B.Поля.Добавить("CODE","S",11);
    B.Поля.Добавить("NAME","S",100);
    B.Поля.Добавить("ED","S",100);
    B.Кодировка = КодировкаXBase.OEM;

Автор: grail 21.10.11, 21:56

Цитата(Vond @ 21.10.11, 22:49) *
КодировкаXBase (XBaseEncoding)
Значения
ANSI (ANSI)
OEM (OEM)

Описание:
Содержит варианты кодировок XBase.

Доступность:
Сервер, толстый клиент, внешнее соединение. Возможен обмен с сервером.

См. также:
XBase, свойство Кодировка

Пример:
    B = Новый XBase;
    B.Поля.Добавить("CODE","S",11);
    B.Поля.Добавить("NAME","S",100);
    B.Поля.Добавить("ED","S",100);
    B.Кодировка = КодировкаXBase.OEM;


Точно!
Получилось!
Спасибо.

И еще пожалуйста!:

Как преобразовать число 165000.00 в стороку "165000.00", а то у меня выдаёт "165 000"!
и
Как преобразовать дату 2011.10.04 в стороку "2011-10-04", а то у меня выдаёт "20111004"!
Понимаю что не в тему ветки, но очень нужно!

Автор: Vond 21.10.11, 22:14

чето не понятно, а что такое в конфигураторе комбинация клавиш Ctrl+F1 знаем?

Самостоятельно курим тему:
Встроенные функции языка (Script functions)

Строка (String)
Синтаксис:
Строка(<Значение>)

Параметры:
<Значение> (обязательный)

Тип: Произвольный.
Исходное значение.
Возвращаемое значение:

Тип: Строка.
Полученное значение.

Описание:
Преобразует полученный параметр в значение типа Строка.
При преобразовании к строке числа формируется его полное представление в стандартном виде, соответствующем национальным установкам.
Преобразование значений типа Булево зависит от национальных установок и содержит строковое представление этих значений.
При преобразовании к строке даты формируется ее полное представление в стандартном читабельном виде, соответствующем национальным установкам.
Преобразование к строке значений остальных типов производится по мере возможности и обычно содержит читабельное представление значения.

Пример:
Строка(Формат(текущаядата(),"ДФ=dd-MM-yyyy"))

Автор: logist 21.10.11, 22:20

Цитата(grail @ 21.10.11, 22:56) *
Понимаю что не в тему ветки, но очень нужно!

Раз понимаете, то зачем пишите. Правила для всех одинаковы. "Очень нужно" после детского сада уже не катит.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua