По теме из базы знаний
- 5 способов загрузки из Excel в 1С
- ТЗ как обязательный атрибут в автоматизации. Реальные кейсы из 16-ти летнего опыта
- Зачем и как читать чужой код? Какой результат ожидаем получить? Основные подходы
- Таблица для финансиста. Решение на стыке технологий
- Идеальное место работы для ЗУПера... Какое оно?! Часть 1. Негативные тенденции, ненужные знания.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(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", ложь);
Конецесли;
Для каждого ТекФайл из МассивФайлов Цикл
ТаблицаИзФайла = ПрочитатьФайл(ТекФайл.ПолноеИмя);
Для каждого ТекСтрока из ТаблицаИзФайла Цикл
//здесь вы что-то делаете с полученными данными
Сообщить(ТекСтрока.Сотрудник);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура Загрузить(Команда)
ЗагрузитьНаСервере();
КонецПроцедуры
Показать
(4) avto1c, если честно меня интерисовало только вот это дело
остальное даже не смотрел)))
Для 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;
КонецЦикла;
Показатьостальное даже не смотрел)))
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот