Импорт данных в 1С из текстового файла

Как в 1С загрузить данные из файла TXT?

Основными преимуществами текстовых файлов являются их маленький размер и простота хранения данных внутри файла. Пожалуй, именно поэтому многие данные до сего дня передаются посредством текстовых файлов. Учитывая существующую потребность, вам могут потребоваться умения в импортировании данных в 1С из текстового файла. И нижеприведённые примеры помогут вам в приобретении необходимых знаний.

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

Реклама:
Смотрите также:
Учёт и формирование доверенностей в 1С
Извлечение административных данных из базы 1С
Связать две информационные базы 1С
Как начислить зарплату в 1С