Консультант по 1С в Крыму. +7(978)857-2035

Помогу с 1С!

программист 1С Симферополь

Позвоните:
+7(978)857-2035

Импорт банковской выписки в 1С из системы Банк-Клиент

/ Просмотров: 19897

//импорт данных выписки из текстового файла программы "Банк-Клиент"Процедура ИмпортироватьВыписку()

     //настройка     Н=СоздатьОбъект("Справочник.НастройкиИмпортаВыписки");

     Если РСчет.НастройкаИмпортаВыписки.Выбран()=1 Тогда

          Н.НайтиЭлемент(РСчет.НастройкаИмпортаВыписки);

     ИначеЕсли Н.Выбрать("Выбор настройки импорта","ДляВыбора")=0 Тогда

          Возврат;

     КонецЕсли;

     //очистка строк     Если КоличествоСтрок()>0 Тогда

          Если Вопрос("Удалить строки?","ОК+Отмена")="Отмена" Тогда

               Возврат;

          КонецЕсли;

          УдалитьСтроки();

     КонецЕсли;

     //файл     Файл=Формат(ДатаДок,"Д ДДММГГ");

     Файл=СтрЗаменить(Файл,".","");

     Файл=СокрЛП(Н.Каталог)+"\"+Файл+".txt");

     Если ФС.СуществуетФайл(Файл)=0 Тогда

          Сообщить("Файл не найден: "+Файл,"!");

          Предупреждение("Файл электронной выписки за "+ДатаДок+" не найден!");

          Возврат;

     КонецЕсли;

     //источник     Т=СоздатьОбъект("Текст");

     Т.Открыть(Файл);

     Если Т.КоличествоСтрок()=0 Тогда

          Сообщить("Файл пустой: "+Файл, "!");

          Предупреждение("Файл электронной выписки за "+ДатаДок+" пустой!");

          Возврат;

     КонецЕсли;

     //установки     ОснСчет=СокрЛП(РСчет.НомерСчета);

     ОснМфо=Формат(РСчет.Банк.Код,"Ч(0)9");

     ОснВалюта=СокрЛП(РСчет.Валюта.Код);

     СтавкаНдс=Константа.БазНдс.Ставка.Получить(ДатаДок);

     К=СоздатьОбъект("Справочник.Контрагенты");

     //выбор     Для й=1 По Т.КоличествоСтрок() Цикл

          Стр=Т.ПолучитьСтроку(й);

          Если ПустаяСтрока(Стр)=1 Тогда

               Прервать;

          КонецЕсли;

          //перекодировка          Если Н.ФлагДос=1 Тогда

               Стр=OemToAnsi(Стр);

               Стр=СтрЗаменить(Стр,"\"+Симв(34),Симв(34));

          КонецЕсли;

          //деление          Стр=СтрЗаменить(Стр,Симв(34)+" "+Симв(34),РазделительСтрок);

          //данные          Имя1=СтрПолучитьСтроку(Стр,3);

          Окпо1=СтрПолучитьСтроку(Стр,4);

          Банк1=СтрПолучитьСтроку(Стр,5);

          ТекМфо1=СтрПолучитьСтроку(Стр,6);

          ТекСчет1=СтрПолучитьСтроку(Стр,7);

          Имя2=СтрПолучитьСтроку(Стр,8);

          Окпо2=СтрПолучитьСтроку(Стр,9);

          Банк2=СтрПолучитьСтроку(Стр,10);

          ТекМфо2=СтрПолучитьСтроку(Стр,11);

          ТекСчет2=СтрПолучитьСтроку(Стр,12);

          ТекВалюта=СтрПолучитьСтроку(Стр,13);

          ТекСумма=СтрПолучитьСтроку(Стр,14);

          ТекИнфо=СтрПолучитьСтроку(Стр,16);

          //проверка          Если Не(Оснвалюта=ТекВалюта) Тогда

               Сообщить("Строка "+й+": Не найдена Валюта "+РСчет.Валюта.Наименование+" по коду: "+ОснВалюта,"!");

               Продолжить;

          ИначеЕсли Не(ОснМфо=ТекМфо1) И Не(ОснМфо=ТекМфо2) Тогда

               Сообщить("Строка "+й+": Не найден Банк "+РСчет.Банк.Наименование+" по коду МФО: "+ОснМфо,"!");

               Продолжить;

          ИначеЕсли Не(ОснСчет=ТекСчет1) И Не(ОснСчет=ТекСчет2) Тогда

               Сообщить("Строка "+й+": Не найден РСчет по коду: "+ОснСчет,"!");

               Продолжить;

          КонецЕсли;

          //строка          НоваяСтрока();

          Если (ОснМфо=ТекМфо1) И (ОснСчет=ТекСчет1) Тогда

               //приход               УстановитьАтрибут("ПриходРасход",Перечисление.ПлюсМинус.Плюс);

               УстановитьАтрибут("Счет",Н.СчетД);

               КодКлиента=Окпо2;

               ИмяКлиента=Имя2;

          Иначе

               //расход               УстановитьАтрибут("ПриходРасход",Перечисление.ПлюсМинус.Минус);

               УстановитьАтрибут("Счет",Н.СчетК);

               КодКлиента=Окпо1;

               ИмяКлиента=Имя1;

          КонецЕсли;

          //содержание

          УстановитьАтрибут("Содержание",ТекИнфо);

          //сумма          УстановитьАтрибут("ВидНдс",Константа.БазНдс);

          УстановитьАтрибут("СуммаСНдс",ТекСумма);

          УстановитьАтрибут("Ндс",СуммаСНдс*СтавкаНдс/(1+СтавкаНдс));

          //субконто          НазначитьТип("Субконто",ВидыСубконто.Контрагенты);

          Если К.НайтиПоРеквизиту("ЕДРПОУ",КодКлиента,1)=1 Тогда

               УстановитьАтрибут("Субконто",К.ТекущийЭлемент());

          ИначеЕсли Н.ФлагСоздать=1 Тогда

               К.Новый();

               К.Наименование=ИмяКлиента;

               К.ПолнНаименование=ИмяКлиента;

               К.Едрпоу=КодКлиента;

               К.Записать();

               Сообщить("Строка "+й+": Новый контрагент: "+ИмяКлиента);

               //контрагент               УстановитьАтрибут("Субконто",К.ТекущийЭлемент());

          Иначе

               Сообщить("Строка "+й+": Не найден Контрагент по коду ЕГРПОУ: "+КодКлиента,"!");

          КонецЕсли;  

     КонецЦикла;

     Предупреждение("Обработка выполнена");

КонецПроцедуры

Комментариев: 2 RSS

Подскажите, пожалуйста, что делать с этим кодом.

Спасибо!

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Вы можете войти под своим логином или зарегистрироваться на сайте.

(обязательно)