Добрый день уважаемые формучане.
Прошу помощи у гуру ...
Бухгалтерия предприятия, редакция 2.0 (2.0.64.14) проблема с клиентбанком загрузка txt от УРАЛСИБА
до этого загружали Россельхозбанк, Сбербанк никаких проблем не было
Сначала надо понять - что эту ошибку вызывает? Тем более, что с другим банком, как вы пишете, все нормально.
Для начала - открыть в конфигураторе процедуру импорта клиент-банка, поставить точку останова на чтении строки файла и проверять - что там считывается и в какой кодировке? А потом - что происходит с этой строкой вплоть до возникновения ошибки.
Сначала надо понять - что эту ошибку вызывает? Тем более, что с другим банком, как вы пишете, все нормально.
Для начала - открыть в конфигураторе процедуру импорта клиент-банка, поставить точку останова на чтении строки файла и проверять - что там считывается и в какой кодировке? А потом - что происходит с этой строкой вплоть до возникновения ошибки.
Добрый день, делал подобное в УПП, в выгрузке банка добавили новый параметр, а в программе нет обработки этих данных вот и ругается. Делал в коде при чтении параметров что если это Код= то игнорировать и идти дальше, или можно написать через попытку.
// Процедура читает заголовок файла обмена
//
Функция ПрочитатьФайл(Файл)
ФайлЗагр = Новый Файл(Файл);
Если НЕ ФайлЗагр.Существует() Тогда
Сообщить("Файла " + Файл + " не существует!", СтатусСообщения.Важное);
Возврат Неопределено;
КонецЕсли;
Если ФайлЗагр.ЭтоКаталог() Тогда
Сообщить("Указанный путь " + Файл + " является каталогом!", СтатусСообщения.Важное);
Возврат Неопределено;
КонецЕсли;
ПотокЧтения = Новый ТекстовыйДокумент();
Попытка
ПотокЧтения.Прочитать(Файл);
Исключение
Сообщить("Файл не прочитан.", СтатусСообщения.Внимание);
Возврат Неопределено;
КонецПопытки;
Если Кодировка = "DOS" Тогда
Кодир = КодировкаТекста.OEM;
Иначе
Кодир = КодировкаТекста.ANSI;
Конецесли;
//++
Если Прав(Файл, 13) = "statement.txt" Тогда
Кодир = КодировкаТекста.ANSI;
КонецЕсли;
//--
ПотокЧтения.Прочитать(Файл,Кодир);
Если ПотокЧтения.КоличествоСтрок()<1 Тогда
Сообщить("В файл нет данных!");
Возврат Неопределено;
КонецЕсли;
Если СокрЛП(ПотокЧтения.ПолучитьСтроку(1))<>"1CClientBankExchange" Тогда
Сообщить("Указанный файл не является файлом обмена или неверно указана кодировка!");
Возврат Неопределено;
КонецЕсли;
//Возврат ПотокЧтения.ПолучитьТекст();
//++
Если Прав(Файл, 13) = "statement.txt" Тогда
ТекстВыгрузки = СтрЗаменить(ПотокЧтения.ПолучитьТекст(), "КодНазПлатежа=", "");
Возврат ТекстВыгрузки;
Иначе
Возврат ПотокЧтения.ПолучитьТекст();
КонецЕсли;
//--
КонецФункции
Спасибо за лестную оценку моего предложения, но я правильно понял, что вы принудительно установили чтение файла под названием statement.txt в ANSI и проблема с кодировкой решилась?
Если да, то любопытно - как в исходном варианте задается переменная Кодировка? Разобраться с ней было бы более надежным вариантом, чем завязываться на имени файла.
А еще - удалили из прочитанного текста файла строки КодНазПлатежа?
.
Если СокрЛП(ПотокЧтения.ПолучитьСтроку(1))<>"1CClientBankExchange" Тогда
Сообщить("Указанный файл не является файлом обмена или неверно указана кодировка!");
Возврат Неопределено;
КонецЕсли;
Добавить аналогичное условие на 2-ю строку
ВерсияФормата=1.03
И в случае неравенства изменить кодировку и прочитать снова.
программа почему то определяла файл как
Кодир = КодировкаТекста.OEM;
Спасибо за лестную оценку моего предложения, но я правильно понял, что вы принудительно установили чтение файла под названием statement.txt в ANSI и проблема с кодировкой решилась?
- Да
Добавить аналогичное условие на 2-ю строку
ВерсияФормата=1.03
- спасибо но и так работает ... задача решена суббота можно идти пить ...