Имя: Пароль:
1C
1С v8
Кодировка DBF
0 artem_biz
 
18.06.13
16:49
Процедура ВыгрузитьДБФ(ДокументыНаЭкспорт) Экспорт
       xB = Новый xBase();
       
       xB.Кодировка = КодировкаXBase.ANSI; //windows
       
       xB.Поля.Добавить("A","S",80,0); // Клиент А
       xB.Поля.Добавить("B","S",80,0); //Клиент Б
       xB.Поля.Добавить("ACCOUNT_A","N",14,0); //Счёт клиента А
       xB.Поля.Добавить("ACCOUNT_B","N",14,0); //Счёт клиента Б
       xB.Поля.Добавить("MFO_A","N",9,0);
       xB.Поля.Добавить("MFO_B","N",9,0);
       xB.Поля.Добавить("OKPO_A","N",14,0); //ЕГРПОУ А
       xB.Поля.Добавить("OKPO_B","N",14,0); //ЕГРПОУ Б
       xB.Поля.Добавить("BANK_A","S",38,0); //Банк А
       xB.Поля.Добавить("BANK_B","S",38,0); //Банк Б
       xB.Поля.Добавить("CITY_A","S",25,0); //Город банка А
       xB.Поля.Добавить("CITY_B","S",25,0); //Город банка Б
       xB.Поля.Добавить("AMOUNT","S",18,0); //Сумма
       xB.Поля.Добавить("NUMBER","S",10,0); //Номер документа
       xB.Поля.Добавить("DETAILS","S",160,0); //Детали платежа
       
   
       xB.СоздатьФайл(ФайлВыгрузки);
       
       Если Не xB.Открыта() Тогда  
           Предупреждение(НСтр("ru='Не удалось создать и открыть указанный файл!';uk='Не вдалося створити й відкрити зазначений файл!'"));  
       КонецЕсли;  
       
       
       Для каждого стр из ДокументыНаЭкспорт.Значение Цикл
           
           xB.Добавить();
                   
           xB.УстановитьЗначениеПоля("A",СокрЛП(стр.Документ.Организация)); // Клиент А
           
           Если стр.Документ.ВидОперации=Перечисления.ВидыОперацийППИсходящее.ПереводНаДругойСчет Тогда
               xB.УстановитьЗначениеПоля("B",СокрЛП(стр.Документ.Организация)); //Клиент Б
           Иначе
               xB.УстановитьЗначениеПоля("B",СокрЛП(стр.Документ.Контрагент)); //Клиент Б
           КонецЕсли;
           
           xB.УстановитьЗначениеПоля("ACCOUNT_A",стр.Документ.СчетОрганизации.НомерСчета); //Счёт клиента А
           xB.УстановитьЗначениеПоля("ACCOUNT_B",стр.Документ.СчетКонтрагента.НомерСчета); //Счёт клиента Б
           xB.УстановитьЗначениеПоля("MFO_A",стр.Документ.СчетОрганизации.Банк.Код);
           xB.УстановитьЗначениеПоля("MFO_B",стр.Документ.СчетКонтрагента.Банк.Код);
           
           Данные = Новый Структура("Организация",стр.Документ.Организация);
           КодыОрганизации = РегистрыСведений.КодыОрганизации.СрезПоследних(стр.Документ.Дата, Данные);
           Если КодыОрганизации.Количество()> 0 Тогда
               Результат = КодыОрганизации[0].КодПоЕДРПОУ;
           КонецЕсли;    
           
           xB.УстановитьЗначениеПоля("OKPO_A",Результат); //ЕГРПОУ А
           
           Если стр.Документ.ВидОперации=Перечисления.ВидыОперацийППИсходящее.ПереводНаДругойСчет Тогда
               xB.УстановитьЗначениеПоля("OKPO_B",Результат); //ЕГРПОУ Б
           Иначе
               xB.УстановитьЗначениеПоля("OKPO_B",стр.Документ.Контрагент.КодПоЕДРПОУ); //ЕГРПОУ Б
           КонецЕсли;
           
           xB.УстановитьЗначениеПоля("BANK_A",стр.Документ.СчетОрганизации.Банк); //Банк А
           xB.УстановитьЗначениеПоля("BANK_B",стр.Документ.СчетКонтрагента.Банк); //Банк Б
           xB.УстановитьЗначениеПоля("CITY_A","Киев"); //Город банка А
           xB.УстановитьЗначениеПоля("CITY_B","Киев"); //Город банка Б
           xB.УстановитьЗначениеПоля("AMOUNT",Формат(стр.СуммаДокумента,"ЧРД=.")); //Сумма
           xB.УстановитьЗначениеПоля("NUMBER",стр.НомерПоручения); //Номер документа
           xB.УстановитьЗначениеПоля("DETAILS",стр.НазначениеПлатежа); //Детали платежа
           
           

           xB.Записать();
       КонецЦикла;              

       xB.ЗакрытьФайл();
       
   КонецПроцедуры


При КодировкаXBase.ANSI текстовые поля - иероглифы при КодировкаXBase.OEM Украинске і заменяет на ?. Как победить ?
1 Серго62
 
18.06.13
16:54
(0) Чем смотрите сформированный DBF?
2 artem_biz
 
18.06.13
16:56
Excel 2010 но подтягиваю в клиент банк "банка" там тоже иероглефы
3 ukolabrother
 
18.06.13
17:02
делал для унф ОщадБанк, на форме настройка win|dos переключение, пользователь сам решает как грузить, никогда не сталкивался с такой проблемой (і заменяет на ?).
4 YF
 
18.06.13
17:07
(0) Эксел так видит ДБФ сформированные 1С 8, 1С 7.7 формировалад оки по другому и Эксель видел их нормально.

В чем баг в 1С или в Эксель не знаю ...

Смотри каким нибудь ДБФ навигатором
5 artem_biz
 
18.06.13
17:09
дело в том что в клиент банк (банковскую прогу) подтягивает как "?". Может кодировка винды у меня 7-ка ?
6 HeroShima
 
18.06.13
17:14
(5) локаль украинская?
7 artem_biz
 
18.06.13
17:16
была рус. поставил укр. перегрузился !!! все тоже
8 Grobik
 
18.06.13
17:16
какой банк? kb_v1.3.4?
9 Grobik
 
18.06.13
17:19
ФайлDBF = Новый XBase;
ФайлDBF.Кодировка = КодировкаXBase[Параметры.КодировкаФайла];

варианты: "OEM" и "ANSI"
10 Grobik
 
18.06.13
17:24
11 HeroShima
 
18.06.13
17:25
(7) всё то же только при просмотре, или весь цикл перегенерации сделан?
12 artem_biz
 
18.06.13
17:39
все понял проблему !!! Открывал файл перед тем как загрузить в клиент банк в excel и он походу менял текст под свою кодировку и сохранял !!! Выгрузил из 1с загрузил в КБ и все ок !!!
13 artem_biz
 
18.06.13
17:41
всем спасибо !!!
14 Grobik
 
18.06.13
17:46
excel и DBF не совместимы
http://xbaseview.com/support/su/