Помогите! Ув. программисты. Есть обработка клиент банк 1С 7.7 с Приват24. Приват24 выгружает файл в dbf формате. Вот проблема с датой. В сткуктуре выгружаемого файла дата в Character. Не могу никак переобразовать ее в дату.
Перем ИмяФормы;
Перем ТипОперации;
Перем РСчет,МФО;
Перем Результат;
Перем Пар;
//****************************************************************
// Вспомагательная функция для нахождения пути и имени файла в строке
//******************************************************************************
Функция НайтиПоследнийСимвол(Стр,Символ)
Для Ном = 1 По СтрДлина(Стр) Цикл
Поз = СтрДлина(Стр)-Ном;
Зн = Сред(Стр,Поз,1);
Если Зн = Символ Тогда
Возврат Поз;
КонецЕсли;
КонецЦикла;
Возврат 0;
КонецФункции //НайтиПоследнийСимвол
//******************************************************************************
Процедура ПриОткрытии()
Пар = Форма.Параметр;
Если ПустоеЗначение(Пар) = 1 Тогда
Сообщить("Отчет вызывается только из ПП ""Обмен информацией между ПП ""1С:Предприятие 7.7"" и системами ""Клиент-Банк""");
СтатусВозврата(0);
Возврат;
КонецЕсли;
ИмяФормы = "ПриватБанк"; //Для сохранения значений
ТипОперации = Пар.Получить("ИмпортЭкспорт"); //Тип операции
Если ТипОперации = "ИМПОРТ" Тогда
РСчет = Пар.Получить("РСчет");
Иначе
РСчет = Пар.Получить("РСчет");
МФО = Пар.Получить("МФО");
КонецЕсли;
Путь = ВосстановитьЗначение(ИмяФормы + ТипОперации + "Клиент_Банк_Путь_к_Выписке");
спКодировка.ТекущаяСтрока(ВосстановитьЗначение(ИмяФормы + ТипОперации + "Клиент_Банк_Кодировка"));
Результат = 0;
Поз = НайтиПоследнийСимвол(Путь,"\");
Если Поз>0 Тогда
сКатал = Лев(Путь,Поз);
сФайл = Прав(Путь,СтрДлина(Путь) - Поз);
Иначе
сКатал = "";
сФайл = Путь;
КонецЕсли;
Форма.Заголовок(ИмяФормы+": настройки "+ НРег(ТипОперации) + "а",0);
КонецПроцедуры //ПриОткрытии
//******************************************************************************
Функция УстДоступность()
КонецФункции //УстДоступность
//****************************************************************
// Выбор файла при начале выбора значения элемента формы "Путь"
//******************************************************************************
Функция ВыбратьФайл()
Поз = НайтиПоследнийСимвол(Путь,"\");
Если Поз>0 Тогда
сКатал = Лев(Путь,Поз);
сФайл = Прав(Путь,СтрДлина(Путь) - Поз);
Иначе
сКатал = "";
сФайл = Путь;
КонецЕсли;
Если ТипОперации = "ИМПОРТ" Тогда
Если ФС.ВыбратьФайл(0,сФайл,сКатал,"Открыть файл для ""клиент - банка""","Все файлы (*.*)|*.*","",) = 0 Тогда
Возврат 0;
КонецЕсли;
Иначе
Если ФС.ВыбратьФайл(1,сФайл,сКатал,"Создать файл для ""клиент - банка""","Все файлы (*.*)|*.*","",) = 0 Тогда
Возврат 0;
КонецЕсли;
КонецЕсли;
Путь = сКатал + сФайл;
Возврат 1;
КонецФункции //ВыбратьФайл
//******************************************************************************
Функция Экспорт_Файла_ДБФ(Знач Параметр)
ФайлБД = СоздатьОбъект("XBase");
ИмяФайла = Путь;
Попытка
Если ФС.СуществуетФайл(Путь) = 1 Тогда
ФС.УдалитьФайл(Путь);
КонецЕсли;
Исключение
Сообщить("Невозможно перезаписать файл с предыдущей выгрузкой.","!!!");
Возврат 0;
КонецПопытки;
ФайлБД.ДобавитьПоле("TIP","C",4,);
ФайлБД.ДобавитьПоле("N_D","C",10,);
ФайлБД.ДобавитьПоле("DATE","C",8,0);
ФайлБД.ДобавитьПоле("SUMMA","N",17,2);
ФайлБД.ДобавитьПоле("COUNT_A","C",16,0);
ФайлБД.ДобавитьПоле("NAME_A","C",40,0);
ФайлБД.ДобавитьПоле("OKPO_A","C",10,0);
ФайлБД.ДобавитьПоле("MFO_A","N",9,0);
ФайлБД.ДобавитьПоле("BANK_A","C",45,0);
ФайлБД.ДобавитьПоле("COUNT_B","C",16,0);
ФайлБД.ДобавитьПоле("NAME_B","C",40,0);
ФайлБД.ДобавитьПоле("OKPO_B","C",10,0);
ФайлБД.ДобавитьПоле("MFO_B","N",9,0);
ФайлБД.ДобавитьПоле("BANK_B","C",45,0);
ФайлБД.ДобавитьПоле("N_P","C",160,0);
ФайлБД.ДобавитьПоле("PACKET","C",1,0);
Попытка
ФайлБД.СоздатьФайл(Путь);
Исключение
Предупреждение("Ошибка создания файла " + Путь);
Возврат 0;
КонецПопытки;
Если ФайлБД.Открыта() = 0 Тогда
Предупреждение("Ошибка открытия файла " + Путь);
Возврат 0;
КонецЕсли;
Для Ном = 1 По Параметр.РазмерСписка() Цикл
Сп = Параметр.ПолучитьЗначение(Ном);
Если ТипЗначенияСтр(Сп) <> "СписокЗначений" Тогда
Продолжить;
КонецЕсли;
ФайлБД.Добавить();
ФайлБД.TIP = "Crrp";
ФайлБД.COUNT_A = Сп.Получить("НашСчет");
ФайлБД.MFO_B = Сп.Получить("МФО");
ФайлБД.MFO_A = Сп.Получить("НашМФО");
ФайлБД.COUNT_B = Сп.Получить("Счет");
ФайлБД.OKPO_B = Сп.Получить("ОКПО");
ФайлБД.OKPO_A = Сп.Получить("НашОКПО");
ФайлБД.NAME_B = Сп.Получить("Контрагент");
ФайлБД.NAME_A = Сп.Получить("НашаФирма");
ФайлБД.SUMMA = Сп.Получить("Сумма");
ФайлБД.N_D = Сп.Получить("НомерПП");
ФайлБД.N_P = Сп.Получить("Содержание");
ФайлБД.DATE = Сп.Получить("ДатаПП");
ФайлБД.BANK_B = Сп.Получить("Банк");
ФайлБД.BANK_A = Сп.Получить("НашБанк");
Попытка
ФайлБД.Записать();
Сообщить("Добавлена запись №" + ФайлБД.НомерЗаписи());
Исключение
Предупреждение("Ошибка записи!");
Возврат 0;
КонецПопытки;
КонецЦикла;
ФайлБД.ЗакрытьФайл();
Возврат 1;
КонецФункции //Экспорт_Файла
//******************************************************************************
Функция Импорт_Файла_ДБФ(Параметр)
ФайлБД = СоздатьОбъект("XBase");
Попытка
ФайлБД.ОткрытьФайл(Путь,,0);
Исключение
Предупреждение("Ошибка отрытия файла " + Путь);
Возврат 0;
КонецПопытки;
Если ФайлБД.Открыта() = 0 Тогда
Предупреждение("Ошибка отрытия файла " + Путь);
Возврат 0;
КонецЕсли;
ФайлБД.КодоваяСтраница(спКодировка.ПолучитьЗначение(спКодировка.ТекущаяСтрока())
);
КвоПлатежей = 0;
ФайлБД.Последняя();
Пока (ФайлБД.вНачале() = 0) Цикл
//Если проведено не вчера - возврат
Состояние("Обраатывается строка №" + ФайлБД.НомерЗаписи());
Если (ФайлБД.DATE <> Параметр.Получить("ДатаДок")) Тогда
ФайлБД.Предыдущая();
Продолжить;
КонецЕсли;
Если (СокрЛП(Цел(ФайлБД.COUNT_A)) = Параметр.Получить("РСчет")) Тогда
Сп = СоздатьОбъект("СписокЗначений");
Сп.Установить("РСчет",СокрЛП(Цел(ФайлБД.COUNT_B)));
Сп.Установить("МФО",СокрЛП(Цел(ФайлБД.MFO_B)));
Сп.Установить("ОКПО",СокрЛП(Цел(ФайлБД.OKPO_B)));
Сп.Установить("Контрагент",СокрЛП(ФайлБД.NAME_B));
Сп.Установить("Банк",СокрЛП(ФайлБД.BANK_B));
Сп.Установить("Расход",ФайлБД.SUMMA);
Сп.Установить("Приход",0);
Сообщить("Платеж в " + СокрЛП(ФайлБД.NAME_B));
ИначеЕсли (СокрЛП(Цел(ФайлБД.COUNT_B)) = Параметр.Получить("РСчет")) Тогда
Сп = СоздатьОбъект("СписокЗначений");
Сп.Установить("РСчет",СокрЛП(Цел(ФайлБД.COUNT_A)));
Сп.Установить("МФО",СокрЛП(Цел(ФайлБД.MFO_A)));
Сп.Установить("ОКПО",СокрЛП(Цел(ФайлБД.OKPO_A)));
Сп.Установить("Контрагент",СокрЛП(ФайлБД.NAME_A));
Сп.Установить("Банк",СокрЛП(ФайлБД.BANK_A));
Сп.Установить("Приход",ФайлБД.SUMMA);
Сп.Установить("Расход",0);
Сообщить("Платеж от " + СокрЛП(ФайлБД.NAME_A));
Иначе
ФайлБД.Предыдущая();
Продолжить;
КонецЕсли;
КвоПлатежей = КвоПлатежей + 1;
Сп.Установить("Содержание",СтрЗаменить(ФайлБД.N_P ,РазделительСтрок," "));
Сп.Установить("НомерПП", ФайлБД.N_D);
Параметр.ДобавитьЗначение(Сп);
ФайлБД.Предыдущая();
КонецЦикла;
ФайлБД.ЗакрытьФайл();
Возврат 1;
КонецФункции //Импорт_Файла
//******************************************************************************
Процедура Выполнить()
СохранитьЗначение(ИмяФормы + ТипОперации + "Клиент_Банк_Путь_к_Выписке",Путь);
Если ТипОперации = "ИМПОРТ" Тогда
Рез = Импорт_Файла_ДБФ(Пар);
Иначе
Рез = Экспорт_Файла_ДБФ(Пар);
КонецЕсли;
Если Рез = 1 Тогда
Результат = 1;
СтрокаДействийФормы = "#Закрыть";
КонецЕсли;
КонецПроцедуры //Выполнить
//******************************************************************************
Процедура ПриЗакрытии()
Если Результат = 1 Тогда
Пар.Установить("Ок",1);// Все нормально
СохранитьЗначение(ИмяФормы + ТипОперации + "Клиент_Банк_Путь_к_Выписке",Путь);
СохранитьЗначение(ИмяФормы + ТипОперации + "Клиент_Банк_Кодировка", спКодировка.ТекущаяСтрока());
Иначе
Пар.Установить("Ок",0); // Что-то не получилось или нажата Отмена
КонецЕсли;
КонецПроцедуры //ПриЗаписи
// ======================================
Процедура ПриНачалеВыбораЗначения(Рекв,ФСО)
Если Рекв = "Путь" Тогда
ВыбратьФайл();
ФСО = 0;
КонецЕсли;
КонецПроцедуры
спКодировка.ДобавитьЗначение(1, "DOS");
спКодировка.ДобавитьЗначение(0, "WINDOWS");
Что и где надо изменить, не пойму.
т.е., если я меняю в dbf файле поле на DATE, и перебиваю вручную даты, сохраняю, тогда втягивает.