Импорт банковской выписки в 1С из системы Банк-Клиент
//импорт данных выписки из текстового файла программы "Банк-Клиент"Процедура ИмпортироватьВыписку()
//настройка Н=СоздатьОбъект("Справочник.НастройкиИмпортаВыписки");
Если РСчет.НастройкаИмпортаВыписки.Выбран()=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 Тогда
К.Новый();
К.Наименование=ИмяКлиента;
К.ПолнНаименование=ИмяКлиента;
К.Едрпоу=КодКлиента;
К.Записать();
Сообщить("Строка "+й+": Новый контрагент: "+ИмяКлиента);
//контрагент УстановитьАтрибут("Субконто",К.ТекущийЭлемент());
Иначе
Сообщить("Строка "+й+": Не найден Контрагент по коду ЕГРПОУ: "+КодКлиента,"!");
КонецЕсли;
КонецЦикла;
Предупреждение("Обработка выполнена");
КонецПроцедуры
2009-07-03 в 20:26:59
Подскажите, пожалуйста, что делать с этим кодом.
Спасибо!
2011-12-22 в 00:41:20
Огромное спасибо!!!