8.х Выгрузка данных в клиент-банк

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем soleg78, 7 окт 2010.

  1. TopicStarter Overlay
    soleg78
    Offline

    soleg78

    Регистрация:
    2 сен 2010
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    делаю импорт ПлатежноеПоручениеИсходящее
    Банк ОТП

    Файл должен состоять из строк разделенных <CR><LF>.
    Каждая строка должна соответствовать одному платежному документу и иметь структуру

    Позиция Содержание поля
    1-10 Номер документа
    11-20 Дата в формате ‘dd/mm/yyyy’
    21-34 Счёт клиента А
    35-48 Счёт клиента Б
    49-86 Клиент А
    87-124 Клиент Б
    125-138 ОКПО А
    139-152 ОКПО Б
    153-161 МФО А
    162-170 МФО Б
    171-208 Банк А
    209-246 Банк Б
    247-268 Сумма (number(19,2) delimiter ‘.’ or ‘,’ )
    269-428 Детали платежа
    429-453 Город банка А
    454-478 Город банка Б
    ==================================
    пишу сл. код:

    Код:
    
    // здесь делаю выборку данных
    
    ДЛ = Новый Массив (20); 
    ДЛ[1]=9;
    ДЛ[2]=9;
    ДЛ[3]=34-21;
    ДЛ[4]=48-35;
    ДЛ[5]=86-49;
    ДЛ[6]=124-87;
    ДЛ[7]=138-125;
    ДЛ[8]=152-139;
    ДЛ[9]=161-153;
    ДЛ[10]=170-162;
    ДЛ[11]=208-171;
    ДЛ[12]=246-209;
    ДЛ[13]=268-247;
    ДЛ[14]=428-269;
    ДЛ[15]=453-429;
    ДЛ[16]=478-454;
    
    ТХ = Новый Массив (20); 
    ТХ[1]=Лев(Строка(О.НомерПоручения),10);
    ТХ[2]=Строка(формат(О.ДатаВыписки,"ДФ=dd/MM/yyyy"));
    ТХ[3]=Строка(О.СчетОрганизации.НомерСчета);
    ТХ[4]=Строка(О.СчетКонтрагента.НомерСчета);
    ТХ[5]=Лев(Строка(О.Организация),38);
    ТХ[6]=Лев(Строка(О.Контрагент),38);
    ТХ[7]=Строка(Окпо);
    ТХ[8]=Строка(О.Контрагент.КодПоЕДРПОУ);
    ТХ[9]=Строка(МФО1);
    ТХ[10]=Строка(МФО2);
    ТХ[11]=Лев(Строка(О.СчетОрганизации.Банк.Наименование),38);
    ТХ[12]=Лев(Строка(О.СчетКонтрагента.Банк.Наименование),38);
    ТХ[13]=Строка(Формат(О.СуммаДокумента,"ЧЦ=19; ЧДЦ=2; ЧРД=."));
    ТХ[14]=Лев(Строка(СтрЗаменить(О.НазначениеПлатежа,Символы.ПС,"")),160);
    ТХ[15]="";
    ТХ[16]="";
    
    Для Т = 1 по 16 Цикл
    ФормаСтроки(Текс, ТХ[Т], ДЛ[Т])// Это функция
    //вот такая
    //Функция ФормаСтроки(Текс, ТХ, ДЛ)
    //	Текс = Текс + Тх;
    //	Для Д = 0 по ДЛ-СтрДлина(ТХ) Цикл
    //		Текс = Текс + Символ(32);
    //	КонецЦикла
    //КонецФункции
    
    КонецЦикла;
    Текс=Текс + Символы.ВК;
    
    
    Текст.ДобавитьСтроку(Текс);
    Текст.Записать("c:\imp.txt", КодировкаТекста.ANSI); 
    
    
    
    
    Получается файл, типа такой структуры как надо, НО! В КЛИЕНТ БАНК НЕ ЗАЛАЗИТ!!!???
    Пишет что то типа ...ОШИБКА ПРИ КЛЮЧЕВАНИИ СЧЕТА И МФО

    Есть там и Импорт данных в формате DBF, делаю DBF нужной структуры, - тоже не залазит.


    Может это надо в клиент-банк покопатся?
    кто что по этому поводу думает?.........SOS! Вторая неделя пошла! :angry:
  2. TopicStarter Overlay
    soleg78
    Offline

    soleg78

    Регистрация:
    2 сен 2010
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    помогли, надо так Символ(13)+Символ(10) а не Символы.ВК,

    тока теперь другая проблема, - КОДИРОВКА!
    перепробывал всё!,
    Текст.Записать("c:\imp_1.txt", КодировкаТекста.ANSI);
    Текст.Записать("c:\imp_2.txt", КодировкаТекста.OEM);
    Текст.Записать("c:\imp_3.txt", КодировкаТекста.UTF16);
    Текст.Записать("c:\imp_4.txt", КодировкаТекста.UTF8);
    Текст.Записать("c:\imp_5.txt", КодировкаТекста.Системная);
    везде иероглифы
    как ещё можно перекодировать?
  3. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Больше никаких кодировок текста платформа не поддерживает. Если вам нужно нечто совсем нестандартное, то ищите(или пишите самостоятельно) внешний конвертер и конвертируйте им в нужную кодировку.

    Но скорее всего Вы что-то делаете неправильно, т.к. обычно данного набора хватает на все случаи жизни.
  4. djek1988
    Offline

    djek1988

    Регистрация:
    6 ноя 2010
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    попробуй что-нибудь типа такого

    Код:
    Если Кодировка = "DOS" Тогда
    ПотокВыгрузки.Записать(ФайлВыгрузки,КодировкаТекста.OEM);
    Иначе
    ПотокВыгрузки.Записать(ФайлВыгрузки,КодировкаТекста.ANSI);
    КонецЕсли;
    
    
    где

    Код:
    ПотокВыгрузки = Новый ТекстовыйДокумент();
    

Поделиться этой страницей