Добрый день! Необходимо написать обработку Загрузка из EXCEL в 1с, делаю это первый раз нашла в инете как это делать здесь https://programmist1s.ru/zagruzka-iz-excel-v-1s/ пишется для 8.3 но пример обработки на 8.2. Но все таки попробовала сделать в управляемой форме, но зависает и ничего не происходит, приходиться принудительно прерывать. Помогите посмотрите пожалуйста где ошибка.
&НаКлиенте
Процедура ВыполнитьЗагрузку(Команда)
ПрочитатьДокумент(ИмяФайла);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПрочитатьДокумент(ИмяФайла)
НачатьТранзакцию();
//подключаемся к эксел
Попытка
Excel = Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ИмяФайла);
//Состояние("Обработка файла Microsoft Excel...");
Исключение
Сообщить("Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!");
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
Попытка
//Открываем необходимый лист
Excel.Sheets(1).Select(); // лист 1, по умолчанию
Исключение
//Закрываем Excel
Excel.ActiveWorkbook.Close();
Excel = 0;
Сообщить("Файл "+Строка(ИмяФайла)+" не соответствует необходимому формату! Первый лист не найден!");
ОтменитьТранзакцию();
Возврат;
КонецПопытки;
//Получим количество строк и колонок.
//В разных версиях Excel получаются по-разному, поэтому сначала определим версию Excel
Версия = Лев(Excel.Version,Найти(Excel.Version,".")-1);
Если Версия = "8" тогда
ФайлСтрок = Excel.Cells.CurrentRegion.Rows.Count;
ФайлКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 13);
Иначе
ФайлСтрок = Excel.Cells(1,1).SpecialCells(11).Row;
ФайлКолонок = Excel.Cells(1,1).SpecialCells(11).Column;
Конецесли;
//считываем первую строку и генерируем колонки
Сч = 1;
Пока ЗначениеЗаполнено(Excel.Cells(1, Сч).Text) Цикл
ИмяКолонки = Excel.Cells(1, Сч).Text;
ИмяБезПробелов = СтрЗаменить(ИмяКолонки," ",""); // убираем из имени колонок пробелы
Сообщить("ИмяКолонки="+ИмяКолонки);
//Расшифровка.Колонки.Добавить(ИмяБезПробелов,,ИмяКолонки);
//НоваяКолонка = ЭлементыФормы.Расшифровка.Колонки.Добавить(ИмяБезПробелов, ИмяКолонки);
//НоваяКолонка.Данные = ИмяБезПробелов;
//Сч = Сч + 1;
КонецЦикла;
Что то поторопилась, работать то работает, но вот из массива выбирает только шапку а далее значение не получаю с массивом в редакции 3 не работала, посмотрите пожалуйста код и если можно подскажите
Массив=Новый Массив;
Попытка
COMОбъект = Новый COMОбъект("Excel.Application");
Workbook = COMОбъект.Workbooks.Open(ИмяФайла);
ExcelЛист = COMОбъект.Sheets(1);
ActiveCell = COMОбъект.ActiveCell.SpecialCells(11);
RowCount = ActiveCell.Row;
ColumnCount = ActiveCell.Column;
Для Строка = 1 По RowCount Цикл
Для Колонка = 1 По ColumnCount Цикл
Стурктура=Новый Структура;
//Значение=ExcelЛист;
Значение = СокрЛП(ExcelЛист.Cells(Строка,5).Value); //Код поставщика
Значение2 = СокрЛП(ExcelЛист.Cells(Строка,12).Value); //Сумма комиссии
КонецЦикла;
Стурктура.Вставить("КодПоставщика",Значение);
Стурктура.Вставить("СуммаКомиссии",Значение2);
Массив.Добавить(Стурктура);
КонецЦикла;
ЗаполнитьТабличнуюЧастьТовары(Массив);
WorkBook.Close();
Исключение
COMОбъект.Quit();
COMОбъект = 0;
СообщениеОбОшибке = НСтр("ru = 'Не удалось прочитать данные из файла. Подробности: '")
+ КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
ВызватьИсключение СообщениеОбОшибке;
КонецПопытки;
ТабДок = Новый ТабличныйДокумент;
Попытка
ТабДок.Прочитать(Файл, СпособЧтенияЗначенийТабличногоДокумента.Текст);
Исключение
Сообщить("Не удалось прочитать файл!");
КонецПопытки;
ТекЛист = Табдок.ПолучитьОбласть("НазваниеОбласти");
ТекСтрока = 2;
Пока Истина Цикл
Код = СокрЛП(ТекЛист.Область(ТекСтрока,1).Текст);
Если Код = "" Тогда
Прервать;
КонецЕсли;
ТекСтрока = ТекСтрока + 1;
КонецЦикла;