Как загрузить данные из документа Excel в 1С используя «Табличный документ»
Вопрос загрузки в информационную базу 1С различных данных из документов Excel очень актуален. На практике задачи подобного рода «загрузки/выгрузки» данных «из/в» Excel будут встречаться очень часто. Поэтому научиться работать с этим очень важно. Конечно, сейчас очень много типовых обработок которые к тому же есть во многих типовых конфигурациях которые позволяют загружать и выгружать данные, но все же лучше научиться создавать их самому. Реализовать это можно разными способами, все их мы обязательно рассмотрим, ну а сегодня будем использовать для этого «Табличный документ».
Данная статья является продолжением статей «Как загрузить данные в 1С из различных файлов«, и «1С Последовательное чтение файлов«. Из них вы узнаете про два способа загрузки данных из текстовых файлов «ТХТ», так же в первой статье я рассказывал про создание обработки для загрузки, которою и будут использовать сейчас.
Загрузка данных из Excel
У объекта «Табличный документ» есть метод «Прочитать» у которого есть одна особенность о которой обязательно нужно знать, доступен он только на сервере, т.е процедура должна выполняться не на клиенте а на сервере.
Поэтому в обработчики события команды «Загрузить» будем вызывать процедуру.
&НаКлиенте
Процедура Загрузить(Команда)
Объект.ДанныеФайла.Очистить();
Прочитать_xls_НаСервере();
КонецПроцедуры
Для того чтобы данные не задвоились, сначала очистим ТЧ потом вызовем процедуру загрузки данных из Excel.
Далее создаем процедуру на сервере в которой пишем следующий код.
&НаСервере
Процедура Прочитать_xls_НаСервере()
ТабДок = Новый ТабличныйДокумент;
Попытка
ТабДок.Прочитать(Объект.ВыбратьФайл, СпособЧтенияЗначенийТабличногоДокумента.значение);
Исключение
Сообщиние = Новый СообщениеПользователю;
Сообщиние.Текст ="Не удалось прочитать " + ОписаниеОшибки();
Сообщиние.Сообщить();
Возврат;
КонецПопытки;
КоличествоСтрок = ТабДок.ВысотаТаблицы;
Для НомерСтроки = 2 По КоличествоСтрок Цикл
СтрокаДанных = Объект.ДанныеФайла.Добавить();
СтрокаДанных.Наименование = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки,"ЧГ=0") + "C" +1).ТекущаяОбласть.Текст;
СтрокаДанных.Расшифровка = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки,"ЧГ=0") + "C" +2).ТекущаяОбласть.Текст;
СтрокаДанных.ИНН = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки,"ЧГ=0") + "C" +3).ТекущаяОбласть.Текст;
КонецЦикла;
КонецПроцедуры
Если кратко его описать то сначала создаем переменную «Табличный документ», далее добавляем конструкцию «Попытка/КонецПопытки» для обработки ошибок в момент чтения документа. После чего уже обрабатываем в цикле строки документа Excel.
Сам документ будет выглядеть следующим образом, в нем три колонки, первая это шапка её читать не нужно, поэтому в процедуре мы сразу добавили «+1».
Сохраняем обработку, и пробуем загрузить данные из документа.
Я уже говорил об общем принципе загрузке данных в предыдущих статьях, но еще раз повторюсь. Сразу загружать данные в базу 1С не правильно! Их нужно сначала прочитать/загрузить и отобразить пользователю и только после их проверки с помощью еще одной команды записать в базу! В данной статье Я рассказал про первый этап, т.е данные из файла были прочитаны и загружены в табличную часть обработки для отображения их пользователю, дальше нужно создать команду которая запишет их в базу (создаст на их основе контрагентов), но об этом в следующей статье.
Как видите в загрузке данных из Excel в 1С нет ничего сложного, но если у Вас возникли вопросы или что-то не получается, то обязательно напишите об этом, будем разбираться вместе.