В обработке описаны процедуры подключения к файлу Excel (каталогу с файлами Excel) и получения данных из файла.
Данные из файла считываются в функции по такому принципу:
ТабельныйНомер = ExcelЛист.Cells(Row, 2).Text;
Сотрудник = ExcelЛист.Cells(Row, 3).Text;
которая возвращает в качестве результата таблицу значений.
Далее в обработке описан цикл по полученной таблице значений.
Вам остается только указать требуемые колонки в функции чтения файла и затем определить, в какой объект конфигурации необходимо записать полученные данные.
Загрузка файла (файлов) в 1С 3.0
Добавим реквизиты обработки:
ИмяФайла: Строка (150)
ИмяКаталога: Строка (150)
РежимЗагрузки: Число (1)
Настроим форму
Свойства «Форма», закладка «Использование»:
АвтоматическоеСохранениеДанных: Использовать.
Свойства «ИмяФайла», закладка «Использование»:
КнопкаВыбора: Да
КнопкаОчистки: Да
Вставьте текст в модуль формы:
Функция ПрочитатьФайл(ИмяФайла) НомерЛистаExcel = 1; xlLastCell = 11; ВыбФайл = Новый Файл(ИмяФайла); Если НЕ ВыбФайл.Существует() Тогда Сообщить("Файл не существует!"); Возврат Ложь; КонецЕсли; Попытка Excel = Новый COMОбъект("Excel.Application"); Excel.WorkBooks.Open(ИмяФайла); ExcelЛист = Excel.Sheets(НомерЛистаExcel); Исключение Сообщить("Ошибка. Возможно неверно указан номер листа книги Excel."); Возврат ложь; КонецПопытки; ТЗ = новый ТаблицаЗначений; ТЗ.Колонки.Добавить("ИмяФайла"); ТЗ.Колонки.Добавить("Сотрудник"); ТЗ.Колонки.Добавить("ФизическоеЛицо"); ТЗ.Колонки.Добавить("Организация"); ТЗ.Колонки.Добавить("Период"); ТЗ.Колонки.Добавить("КалендарныхДней"); ActiveCell = Excel.ActiveCell.SpecialCells(xlLastCell); // количество активных строк: RowCount = ActiveCell.Row; //количество активных колонок: ColumnCount = ActiveCell.Column; // "2" - номер строки, с которой начинаем считывать данные: Для Row = 2 По RowCount Цикл НовСтрока = ТЗ.Добавить(); НовСтрока.ИмяФайла = ИмяФайла; // позицию (цифру КОЛОНКИ) "Сотрудника" можно запросить у пользователя на форме обработки //это позиция для примера без запроса указать её у пользователя: НовСтрока.Сотрудник = ExcelЛист.Cells(Row, 2).Text; НовСтрока.ФизическоеЛицо = ExcelЛист.Cells(Row, 3).Text; НовСтрока.Организация = ExcelЛист.Cells(Row, 4).Text; НовСтрока.Период = ExcelЛист.Cells(Row, 5).Text; НовСтрока.КалендарныхДней = ExcelЛист.Cells(Row, 6).Text; КонецЦикла; Excel.WorkBooks.Close(); Excel = 0; Возврат ТЗ; КонецФункции &НаКлиенте Процедура ИмяФайлаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ДиалогОткрытияФайла.ПолноеИмяФайла = Объект.ИмяФайла; ДиалогОткрытияФайла.Фильтр = "Документ Excel (*.xls, *.xlsx)|*.xls; *.xlsx"; ДиалогОткрытияФайла.МножественныйВыбор = Ложь; ДиалогОткрытияФайла.Заголовок = "Выберите файл"; Если ДиалогОткрытияФайла.Выбрать() Тогда Объект.ИмяФайла = ДиалогОткрытияФайла.ПолноеИмяФайла; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ИмяКаталогаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога); ДиалогОткрытияФайла.Каталог = Объект.ИмяКаталога; ДиалогОткрытияФайла.ИндексФильтра = 0; ДиалогОткрытияФайла.ПроверятьСуществованиеФайла = Истина; ДиалогОткрытияФайла.Заголовок = "Выберите каталог с данными для загрузки"; Если ДиалогОткрытияФайла.Выбрать() Тогда Объект.ИмяКаталога = ДиалогОткрытияФайла.Каталог; КонецЕсли; КонецПроцедуры &НаСервере Процедура ЗагрузитьНаСервере() Если Объект.РежимЗагрузки = 1 Тогда МассивФайлов = Новый Массив(); ФайлНаДиске = Новый Файл(Объект.ИмяФайла); МассивФайлов.Добавить(ФайлНаДиске); Иначе МассивФайлов = НайтиФайлы(Объект.ИмяКаталога, "*.xls", ложь); Конецесли; Для каждого ТекФайл из МассивФайлов Цикл ТаблицаИзФайла = ПрочитатьФайл(ТекФайл.ПолноеИмя); Для каждого ТекСтрока из ТаблицаИзФайла Цикл //здесь вы что-то делаете с полученными данными Сообщить(ТекСтрока.Сотрудник); КонецЦикла; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура Загрузить(Команда) ЗагрузитьНаСервере(); КонецПроцедуры
Добавьте событие реквизиту формы «ИмяФайла:
Тоже самое проделайте с реквизитом «ИмяКаталога».
Настройте рекизит «РежимЗагрузки», закладка «Основные»: Вид: Поле переключателя.
ВидПереключателя: Тумблер.
Закладка «Расположение»: КоличествоКолонок: 2.
Закладка «Использование»: СписокВыбора:
Отметьте реквизиты для сохранения:
Добавьте команду «Загрузить». И настройте действие из модуля: Загрузить.
Перенесите команду на форму.
Файл 1 с данными:
Остальные файлы примерно такие же.
Результат загрузки (прочтения файлов):
Обработка так же приложена к статье.
в SQL варианте работать не будет, необходимо на сервер передать файл через ДвоичныеДанные
(1) AlexeyK1, с чего вдруг? У нас все базы серверные, каталог с файлом просто должен быть доступен (расшарен) для сервера.
Ну и понятное дело Excel должен быть установлен на сервере.
В противном случае пользуйтесь mxl, xml, txt и тп.
Эта обработка больше подойдет в том случае, если пользователь хочет вводить и контролировать данные в удобном для него формате и затем загружать в 1С.