Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 15:30

Импорт данных в клиент банк

Автор soleg78, 07 окт 2010, 11:45

0 Пользователей и 1 гость просматривают эту тему.

soleg78

делаю импорт ПлатежноеПоручениеИсходящее
Банк ОТП

Файл должен состоять из строк разделенных <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! Вторая неделя пошла! :dfbsdfbsdf:

trofa7

попробуй вигрузити з клиент банка файл (бажано в dbf), і подивись розмір колонок і звір дані МФО і номер рахунка

soleg78

Да смотрел, "не то пальто"

mohock


Ты пишешь, что строка разделена с одной стороны <CR><CF>, т.е. Ctrl+левая стрелка,
а с другой Символ(32), т.е. пробел. Так что-же на самом деле надо в разделителе?
Если перенос в начало предыдущего слова, то это весьма необычный способ заполнения задом наперед.  :D
Похоже все-таки пробел.
А раз так, то вероятнее всего (если все остальное правильно) у тебя лишние пробелы.
Попробуй для МФО и Счета вместо Строка() - СокрЛП().

soleg78


1346252   06/10/2010777777777777788888888888888Наша организация                      Получатель2                           11111111      22222222      300528   300528   ОТП                                   ОТП                                   56387                 Зг?дно договору Сума 563,87 грнПДВ (20%) 93,98 грн                                                                                                                                                               


Получается так.
Без лишних пробелов
а "Файл должен состоять из строк разделенных <CR><LF>." разделяю "Текс=Текс + Символы.ВК;"

soleg78

а как правильно поставить <CR><CF>???, может здесь собака зарыта?

mohock

Цитата: soleg78 от 07 окт 2010, 14:49
а как правильно поставить <CR><CF>???, может здесь собака зарыта?

Перевод строки    -   LF=10;   
Возврат каретки -   CR=13;

Наверное так: Символ(13)+Символ(10)

soleg78

Символ(13)+Символ(10) - получаются строки разделенные пустой строкой

soleg78

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

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск