Перем Команда_Заполнение;
Перем Sheet;
Функция ПолучитьОписаниеТЗ()
ТЗ = Новый ТаблицаЗначений();
ТЗ.Колонки.Добавить("ВидНоменклатурыСтрока");
ТЗ.Колонки.Добавить("ВидНоменклатуры");
ТЗ.Колонки.Добавить("Артикул");
ТЗ.Колонки.Добавить("Наименование");
ТЗ.Колонки.Добавить("Спецификация");
ТЗ.Колонки.Добавить("МеталлСтрока");
ТЗ.Колонки.Добавить("Металл");
ТЗ.Колонки.Добавить("ЦветСтрока");
ТЗ.Колонки.Добавить("Цвет");
ТЗ.Колонки.Добавить("ПробаСтрока");
ТЗ.Колонки.Добавить("Проба");
ТЗ.Колонки.Добавить("РазмерСтрока");
ТЗ.Колонки.Добавить("Размер");
ТЗ.Колонки.Добавить("КоличествоШт");
ТЗ.Колонки.Добавить("Количество");
ТЗ.Колонки.Добавить("СтоимостьЗакупочная");
ТЗ.Колонки.Добавить("СтоимостьВРознице");
ТЗ.Колонки.Добавить("ШтрихКод");
ТЗ.Колонки.Добавить("ВидЕИЦены");
ТЗ.Колонки.Добавить("СтрКлючИзделие");
ТЗ.Колонки.Добавить("СтранаПроисхождения");
ТЗ.Колонки.Добавить("Комментарий");
ТЗ.Колонки.Добавить("НомерГТД");
ТЗ.Колонки.Добавить("Поставщик");
ТЗ.Колонки.Добавить("Производитель");
ТЗ.Колонки.Добавить("ЦветЦиферблата");
ТЗ.Колонки.Добавить("КатегорияКамней");
ТЗ.Колонки.Добавить("ВнешнийВид");
ТЗ.Колонки.Добавить("Родитель");
ТЗ.Колонки.Добавить("ПроцентНаценки");
ТЗ.Колонки.Добавить("ЦенаРозница");
ТЗ.Колонки.Добавить("ЦенаЗакупка");
ТЗ.Колонки.Добавить("Весовой");
ТЗ.Колонки.Добавить("КоллекцияИзделия");
ТЗ.Колонки.Добавить("ШтрихКодПоставщика");
Возврат ТЗ;
КонецФункции
// Интерфейс для регистрации обработки.
// Вызывается при добавлении обработки в справочник "ВнешниеОбработки"
//
// Возвращаемое значение:
// Структура:
// Вид - строка - возможные значения: "ДополнительнаяОбработка"
// "ДополнительныйОтчет"
// "ЗаполнениеОбъекта"
// "Отчет"
// "ПечатнаяФорма"
// "СозданиеСвязанныхОбъектов"
//
// Назначение - массив строк имен объектов метаданных в формате:
// <ИмяКлассаОбъектаМетаданного>.[ * | <ИмяОбъектаМетаданных>]
// Например, "Документ.СчетЗаказ" или "Справочник.*"
// Прим. параметр имеет смысл только для назначаемых обработок
//
// Наименование - строка - наименование обработки, которым будет заполнено
// наименование справочника по умолчанию - краткая строка для
// идентификации обработки администратором
//
// Версия - строка - версия обработки в формате <старший номер>.<младший номер>
// используется при загрузке обработок в информационную базу
// БезопасныйРежим – Булево – Если истина, обработка будет запущена в безопасном режиме.
// Более подбробная информация в справке.
//
// Информация - Строка- краткая информация по обработке, описание обработки
//
// ВерсияБСП - Строка - Минимальная версия БСП, на которую рассчитывает код
// дополнительной обработки. Номер версии БСП задается в формате «РР.ПП.ВВ.СС»
// (РР – старший номер редакции; ПП – младший номер ре-дакции; ВВ – номер версии; СС – номер сборки).
//
// Команды - ТаблицаЗначений - команды, поставляемые обработкой, одная строка таблицы соотвествует
// одной команде
// колонки:
// - Представление - строка - представление команды конечному пользователю
// - Идентификатор - строка - идентефикатор команды. В случае печатных форм
// перечисление через запятую списка макетов
// - Использование - строка - варианты запуска обработки:
// "ОткрытиеФормы" - открыть форму обработки
// "ВызовКлиентскогоМетода" - вызов клиентского экспортного метода из формы обработки
// "ВызовСерверногоМетода" - вызов серверного экспортного метода из модуля объекта обработки
// - ПоказыватьОповещение – Булево – если Истина, требуется оказывать оповещение при начале
// и при окончании запуска обработки. Прим. Имеет смысл только
// при запуске обработки без открытия формы.
// - Модификатор – строка - для печатных форм MXL, которые требуется
// отображать в форме ПечатьДокументов подсистемы Печать
// требуется установить как "ПечатьMXL"
//
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Вид", "ЭлектроннаяНакладная");
ПараметрыРегистрации.Вставить("Назначение", ПолучитьНазначениеОбработки());
ПараметрыРегистрации.Вставить("Наименование", НСтр("ru = 'Загрузка Шарафетдинов (xls)'"));
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
ПараметрыРегистрации.Вставить("Информация", НСтр("ru = 'Обработка заполнения документа ""Документ Приемка товара"".'"));
ПараметрыРегистрации.Вставить("ВерсияБСП", "2.0.1.3");
ПараметрыРегистрации.Вставить("ТипФайлаЭН", "Файл данных (*.xls, *.xlsx)|*.xls; *.xlsx");
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд,
НСтр("ru = 'Заполнить'"),
Команда_Заполнение,
"ВызовСерверногоМетода",
Истина);
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
// Интерфейс для запуска логики обработки
//
// Параметры
// ОбъектыНазначения - массив - ссылки на объекты информационной базы, для которых требуется
// вызвать обработку
// ПараметрыВыполненияКоманды - структура - структура со свойством ДополнительнаяОбработкаСсылка (ссылка на
// элемент справочника ДополнительныеОтчетыИОбработки, который связан с данной дополнительной обработкой)
//
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт
КонецПроцедуры
Функция ПолучитьНазначениеОбработки()
Назначение = Новый Массив;
Назначение.Добавить("Документ.ПриемкаТовара");
Возврат Назначение;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
Функция ПолучитьТаблицуДанных(ПараметрыПоУмолчанию, ПутьКФайлуИзделий) Экспорт
ВремКаталог = КаталогВременныхФайлов() + "temp_" + новый УникальныйИдентификатор() + "";
СоздатьКаталог(ВремКаталог);
ДвоичныеДанные = ПолучитьИзВременногоХранилища(ПутьКФайлуИзделий);
ПутьКФайлуИзделий = ВремКаталог + "i.xls";
ДвоичныеДанные.Записать(ПутьКФайлуИзделий);
ОтборПоВставкам = Новый Структура("СерияНоменклатуры");
Попытка
Ea = ПолучитьCOMОбъект(ПутьКФайлуИзделий);
Исключение
Ea = NULL;
Отказ = Истина;
Сообщить("Ошибка при установке соединения с COM-объектом: переустановите Excel", СтатусСообщения.Важное);
КонецПопытки;
Sheet = Ea.ActiveSheet;
ТЗ=ЗаполнитьТаблицу(Sheet,ПараметрыПоУмолчанию);
Ea.Close();
Ea = NULL;
Возврат ТЗ;
КонецФункции
Функция Эксель(Стр,Столб)
Значение = СокрЛП(Sheet.Cells(Стр,Столб).Value);
Значение = СтрЗаменить(Значение,Символы.НПП,"");
Возврат Значение;
КонецФункции
Функция ЭксельЧисло(Стр,Столб)
Попытка
Значение = Эксель(Стр,Столб);
Значение = СтрЗаменить(Значение,",", ".");
Значение = СтрЗаменить(Значение," ", "");
Значение = СтрЗаменить(Значение,"-", ".");
ЗначениеЧисло = Число(Значение);
Исключение
ЗначениеЧисло=0;
КонецПопытки;
Возврат ЗначениеЧисло;
КонецФункции
Функция Разложить(Значение,Стр)
Массив = Новый Массив;
Массив = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Значение, Стр);
Возврат Массив;
КонецФункции
Показать полностью
Я ПОНИМАЮ ЧТО ПРОБЛЕМА ИМЕННО ТУТ
Код
Функция ЗаполнитьТаблицу(Sheet,ПараметрыПоУмолчанию)
ТЗ = ПолучитьОписаниеТЗ();
//0. Здесь задаются номера столбцов для стабильных характеристик
НомерСтроки = 24;
СтолбецИтогов = 0;
СтолбецШтрихКода = 13;
СтолбецГТД = 0;
СтолбецСтрана = 0;
СтолбецВес = 33;
СтолбецШтук = 25;
СтолбецЦена = 33;
СтолбецБезНДС = 0; //если нужно потом пересчитывать цену с ндс, то заполняем, иначе 0
СтолбецСНДС = 44;
СтолбецЗначения = 3;
//
//
//Пока Эксель(НомерСтроки,СтолбецИтогов) <> "Всего по накладной" Цикл
// Если Эксель(НомерСтроки,СтолбецИтогов) = "Итого" Тогда
// Если Эксель(НомерСтроки+1,СтолбецИтогов)= "Всего по накладной" Тогда
// Прервать;
// Иначе
// НомерСтроки = НомерСтроки + 5;
// КонецЕсли;
// КонецЕсли;
// // 1. сначала разберем массив с нестабильными характеристиками
// //Сообщить(НомерСтроки);
// Значение = Эксель(НомерСтроки,СтолбецЗначения);
// Массив = Разложить(Значение," ");
// Кол=Массив.Количество();
//
// ВидНоменклатуры=Массив[0];
// //Массив = Разложить(Значение,"(");
// Артикул = СокрЛП(СтрЗаменить(Массив[1],",",""));
// Спецификация = "";
// Проба="";
// Размер="";
// //Если Массив.Количество()>1 тогда
// // Массив1=Разложить(СокрЛП(СтрЗаменить(СтрЗаменить(Массив[1],"(",""),")","")),";");
// // Попытка
// // Количество=Число(СокрЛП(Массив1[0]));
// // Исключение
// // Количество=0;
// // КонецПопытки;
// // Проба=?(Массив1.Количество()>1,СокрЛП(Массив1[1]),"");
// // Спецификация=?(Массив1.Количество()>2,СокрЛП(Массив1[2]),"");
// // ГТД=?(Массив1.Количество()>3,СокрЛП(Массив1[3]),"");
// //КонецЕсли;
// Если Проба = "585" ИЛИ Проба = "750" ИЛИ Проба = "350" Тогда
// Металл = "Золото";
// ИначеЕсли Проба = "925" ИЛИ Проба = "375" Тогда
// Металл = "Серебро";
// Иначе
// Металл = ПараметрыПоУмолчанию.Металл;
// Проба = ПараметрыПоУмолчанию.Проба;
// КонецЕсли;
//
//
// // 2. теперь заполним стабильные характеристики
// ШК = ?(СтолбецШтрихКода=0,"",Эксель(НомерСтроки,СтолбецШтрихКода));
// //ГТД = ?(СтолбецГТД=0,ПараметрыПоУмолчанию.НомерГТД,Эксель(НомерСтроки,СтолбецГТД));
// Страна=?(СтолбецСтрана=0,ПараметрыПоУмолчанию.СтранаПроисхождения,Эксель(НомерСтроки,СтолбецСтрана));
// КоличествоШт = ЭксельЧисло(НомерСтроки,СтолбецШтук);
// Количество = ЭксельЧисло(НомерСтроки,СтолбецВес);
// Цена = ЭксельЧисло(НомерСтроки,СтолбецЦена);
// Сумма=ЭксельЧисло(НомерСтроки,СтолбецСНДС);
//
// // 3. обработаем ситуации с ошибками из-за округления
// Если СтолбецБезНДС>0 тогда
// СуммаБезНДС=ЭксельЧисло(НомерСтроки,СтолбецБезНДС);
// Если СуммаБезНДС=Цена*КоличествоШт тогда
// Цена = Сумма/КоличествоШт;
// Иначе
// Цена = Сумма/Количество;
// КонецЕсли;
// КонецЕсли;
// //Количество = Количество / КоличествоШт;
// КолОстаток = Количество*КоличествоШт-Окр(Количество,2)*(КоличествоШт-1);
// Сумма = Сумма / КоличествоШт;
// СуммаОстаток = Сумма*КоличествоШт-Окр(Сумма,2)*(КоличествоШт-1);
//
// // 4. заполним таблицу значений
// Пока КоличествоШт >= 1 Цикл
// СтрокаТЗ = ТЗ.Добавить();
// СтрокаТЗ.Артикул = Строка(Артикул);
// СтрокаТЗ.Наименование = Строка(Артикул);
// СтрокаТЗ.ВидНоменклатурыСтрока = Строка(ВидНоменклатуры);
// СтрокаТЗ.МеталлСтрока = Строка(Металл);
// СтрокаТЗ.ПробаСтрока = Строка(Проба);
// СтрокаТЗ.ЦветСтрока = Строка(?(ПараметрыПоУмолчанию.Цвет = Справочники.КлассификаторЦветов.ПустаяСсылка(),Справочники.КлассификаторЦветов.Неопределен,ПараметрыПоУмолчанию.Цвет));
// СтрокаТЗ.Количество = ?(КоличествоШт=1,КолОстаток,Количество);
// СтрокаТЗ.КоличествоШт = 1;
// СтрокаТЗ.РазмерСтрока = Строка(СтрЗаменить(Размер,".",","));
// Если Цена = Сумма Тогда
// Иначе
// Если КоличествоШт > 1 Тогда
// Сумма = Цена * Количество;
// КонецЕсли;
// КонецЕсли;
// СтрокаТЗ.Родитель = ПараметрыПоУмолчанию.Родитель;
// СтрокаТЗ.ВнешнийВид = ПараметрыПоУмолчанию.ВнешнийВид;
// СтрокаТЗ.КатегорияКамней = ПараметрыПоУмолчанию.КатегорияКамней;
// СтрокаТЗ.ЦветЦиферблата = ПараметрыПоУмолчанию.ЦветЦиферблата;
// СтрокаТЗ.Производитель = ПараметрыПоУмолчанию.Производитель;
// СтрокаТЗ.Поставщик = ПараметрыПоУмолчанию.Поставщик;
// СтрокаТЗ.Комментарий = ПараметрыПоУмолчанию.Комментарий;
// СтрокаТЗ.КоллекцияИзделия = ПараметрыПоУмолчанию.КоллекцияИзделия;
// СтрокаТЗ.СтранаПроисхождения = Страна;
// СтрокаТЗ.ЦенаЗакупка = Цена;
// СтрокаТЗ.СтоимостьЗакупочная = ?(КоличествоШт=1,СуммаОстаток,Сумма);
// СтрокаТЗ.Спецификация = Спецификация;
// //СтрокаТЗ.НомерГТД = ГТД;
// СтрокаТЗ.ШтрихКодПоставщика=ШК;
// КоличествоШт = КоличествоШт - 1;
// КонецЦикла;
// НомерСтроки = НомерСтроки + 1;
//КонецЦикла;
// Возврат ТЗ;
Пока Эксель(НомерСтроки,СтолбецИтогов) <> "" Цикл
//Если Эксель(НомерСтроки,СтолбецИтогов) = "Итого" Тогда
// Если Эксель(НомерСтроки+1,СтолбецИтогов)= "Всего по накладной" Тогда
// Прервать;
// Иначе
// НомерСтроки = НомерСтроки + 5;
// КонецЕсли;
//КонецЕсли;
// 1. сначала разберем массив с нестабильными характеристиками
//Сообщить(НомерСтроки);
Значение = Эксель(НомерСтроки,СтолбецЗначения);
Массив = Разложить(Значение," ");
Кол=Массив.Количество();
ВидНоменклатуры=Массив[0];
Массив = Разложить(Значение,"(");
Артикул = СокрЛП(СтрЗаменить(Массив[0],ВидНоменклатуры,""));
Спецификация = "";
Проба="";
Размер="";
Если Массив.Количество()>1 тогда
Массив1=Разложить(СокрЛП(СтрЗаменить(СтрЗаменить(Массив[1],"(",""),")","")),";");
Попытка
Количество=Число(СокрЛП(Массив1[0]));
Исключение
Количество=0;
КонецПопытки;
Проба=?(Массив1.Количество()>1,СокрЛП(Массив1[1]),"");
Спецификация=?(Массив1.Количество()>2,СокрЛП(Массив1[2]),"");
ГТД=?(Массив1.Количество()>3,СокрЛП(Массив1[3]),"");
КонецЕсли;
Если Проба = "585" ИЛИ Проба = "750" ИЛИ Проба = "350" Тогда
Металл = "Золото";
ИначеЕсли Проба = "925" ИЛИ Проба = "375" Тогда
Металл = "Серебро";
Иначе
Металл = ПараметрыПоУмолчанию.Металл;
Проба = ПараметрыПоУмолчанию.Проба;
КонецЕсли;
// 2. теперь заполним стабильные характеристики
ШК = ?(СтолбецШтрихКода=0,"",Эксель(НомерСтроки,СтолбецШтрихКода));
//ГТД = ?(СтолбецГТД=0,ПараметрыПоУмолчанию.НомерГТД,Эксель(НомерСтроки,СтолбецГТД));
Страна=?(СтолбецСтрана=0,ПараметрыПоУмолчанию.СтранаПроисхождения,Эксель(НомерСтроки,СтолбецСтрана));
КоличествоШт = ЭксельЧисло(НомерСтроки,СтолбецШтук);
Количество = ЭксельЧисло(НомерСтроки,СтолбецВес);
Цена = ЭксельЧисло(НомерСтроки,СтолбецЦена);
Сумма=ЭксельЧисло(НомерСтроки,СтолбецСНДС);
// 3. обработаем ситуации с ошибками из-за округления
Если СтолбецБезНДС>0 тогда
СуммаБезНДС=ЭксельЧисло(НомерСтроки,СтолбецБезНДС);
Если СуммаБезНДС=Цена*КоличествоШт тогда
Цена = Сумма/КоличествоШт;
Иначе
Цена = Сумма/Количество;
КонецЕсли;
КонецЕсли;
//Количество = Количество / КоличествоШт;
КолОстаток = Количество*КоличествоШт-Окр(Количество,2)*(КоличествоШт-1);
Сумма = Сумма / КоличествоШт;
СуммаОстаток = Сумма*КоличествоШт-Окр(Сумма,2)*(КоличествоШт-1);
// 4. заполним таблицу значений
Пока КоличествоШт >= 1 Цикл
СтрокаТЗ = ТЗ.Добавить();
СтрокаТЗ.Артикул = Строка(Артикул);
СтрокаТЗ.Наименование = Строка(Артикул);
СтрокаТЗ.ВидНоменклатурыСтрока = Строка(ВидНоменклатуры);
СтрокаТЗ.МеталлСтрока = Строка(Металл);
СтрокаТЗ.ПробаСтрока = Строка(Проба);
СтрокаТЗ.ЦветСтрока = Строка(?(ПараметрыПоУмолчанию.Цвет = Справочники.КлассификаторЦветов.ПустаяСсылка(),Справочники.КлассификаторЦветов.Неопределен,ПараметрыПоУмолчанию.Цвет));
СтрокаТЗ.Количество = ?(КоличествоШт=1,КолОстаток,Количество);
СтрокаТЗ.КоличествоШт = 1;
СтрокаТЗ.РазмерСтрока = Строка(СтрЗаменить(Размер,".",","));
Если Цена = Сумма Тогда
Иначе
Если КоличествоШт > 1 Тогда
Сумма = Цена * Количество;
КонецЕсли;
КонецЕсли;
СтрокаТЗ.Родитель = ПараметрыПоУмолчанию.Родитель;
СтрокаТЗ.ВнешнийВид = ПараметрыПоУмолчанию.ВнешнийВид;
СтрокаТЗ.КатегорияКамней = ПараметрыПоУмолчанию.КатегорияКамней;
СтрокаТЗ.ЦветЦиферблата = ПараметрыПоУмолчанию.ЦветЦиферблата;
СтрокаТЗ.Производитель = ПараметрыПоУмолчанию.Производитель;
СтрокаТЗ.Поставщик = ПараметрыПоУмолчанию.Поставщик;
СтрокаТЗ.Комментарий = ПараметрыПоУмолчанию.Комментарий;
СтрокаТЗ.КоллекцияИзделия = ПараметрыПоУмолчанию.КоллекцияИзделия;
СтрокаТЗ.СтранаПроисхождения = Страна;
СтрокаТЗ.ЦенаЗакупка = Цена;
СтрокаТЗ.СтоимостьЗакупочная = ?(КоличествоШт=1,СуммаОстаток,Сумма);
СтрокаТЗ.Спецификация = Спецификация;
СтрокаТЗ.НомерГТД = ГТД;
СтрокаТЗ.ШтрихКодПоставщика=ШК;
КоличествоШт = КоличествоШт - 1;
КонецЦикла;
НомерСтроки = НомерСтроки + 1;
КонецЦикла;
Возврат ТЗ;
КонецФункции
и читать не форматированный код трудно, оформите красиво
могу предположить, что не читает данные или читает, но как-то не так... возможно проблема в цикле
Пока Эксель(НомерСтроки,СтолбецИтогов) <> "" Цикл
куда передается СтолбецИтогов = 0, фактически это колонка таблицы эксель, которая по определению не может быть нулевой
Если XLSОбъект = Неопределено Тогда
XLSОбъект = Новый COMОбъект("Excel.Application");
XLSОбъект.Visible = Ложь;
XLSОбъект.DisplayAlerts = Ложь;
КонецЕсли;
Попытка
Book = XLSОбъект.Workbooks.Open(ИмяФайлаПриемника, , Истина);
Исключение
Сообщить ("Проблемы с подключением к Excel" );
//Возврат Неопределено;
КонецПопытки;
Если ТЗ = Неопределено Тогда
ТЗ = Новый ТаблицаЗначений;
Для Счетчик = 1 По КолвоКолонок Цикл
ТЗ.Колонки.Добавить("Колонка"+Счетчик, Новый ОписаниеТипов("Строка"));
КонецЦикла;
КонецЕсли;
Для Счетчик = НомерПервойСтроки По КолвоСтрок Цикл
НоваяСтрока = ТЗ.Добавить();
КонецЦикла;
Область = Лист.Range(Лист.Cells(НомерПервойСтроки,НомерПервойКолонки), Лист.Cells(КолвоСтрок,КолвоКолонок));
Данные = Область.Value.Выгрузить();
Для Счетчик = 0 По КолвоКолонок-1 Цикл
ТЗ.ЗагрузитьКолонку(Данные[Счетчик], Счетчик);
КонецЦикла;
Лист = Неопределено;
Пока Эксель(НомерСтроки,СтолбецИтогов) <> "Всего по накладной:" Цикл
здесь СтолбецИтогов = 7;
а в проблемном коде СтолбецИтогов = 0;
СтолбецИтогов - фактически это колонка таблицы эксель, которая по определению не может быть нулевой
поэтому и до чтения значения в ячейке не доходит - читать негде...
Функция ПолучитьТаблицуДанных(ПараметрыПоУмолчанию, ПутьКФайлуИзделий) Экспорт
ВремКаталог = КаталогВременныхФайлов() + "temp_" + новый УникальныйИдентификатор() + "";
СоздатьКаталог(ВремКаталог);
ДвоичныеДанные = ПолучитьИзВременногоХранилища(ПутьКФайлуИзделий);
ПутьКФайлуИзделий = ВремКаталог + "i.xls";
ДвоичныеДанные.Записать(ПутьКФайлуИзделий);
ОтборПоВставкам = Новый Структура("СерияНоменклатуры");
Попытка
Ea = ПолучитьCOMОбъект(ПутьКФайлуИзделий); // ВОТ - подключаемся к файлу
Исключение
Ea = NULL; // ВОТ - неудачная попытка
Отказ = Истина;
Сообщить("Ошибка при установке соединения с COM-объектом: переустановите Excel", СтатусСообщения.Важное);
КонецПопытки;
Sheet = Ea.ActiveSheet; // ВОТ - даже если попытка неудачная, все равно лезем в файл, а как в него залезть, если подключиться не удалось?
// ВОТ - тут надо проверять на ОТКАЗ предварительно, и уже потом переходить к листу
ТЗ=ЗаполнитьТаблицу(Sheet,ПараметрыПоУмолчанию);
Ea.Close();
Ea = NULL;
Возврат ТЗ;
КонецФункции
Показать
примерно так по идее должно быть
//подключаемся к эксел
Попытка
Excel = Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(Объект.ИмяФайла);
Состояние("Обработка файла Microsoft Excel...");
Исключение
Сообщить("Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!");
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
Попытка
//Открываем необходимый лист
Excel.Sheets(1).Select(); // лист 1, по умолчанию
Исключение
//Закрываем Excel
Excel.ActiveWorkbook.Close();
Excel = 0;
Сообщить("Файл "+Строка(Объект.ИмяФайла)+" не соответствует необходимому формату! Первый лист не найден!");
Возврат;
КонецПопытки;
https://infostart.ru/public/341855/ - Загружайте как тут, скопируйте код прям, и потом разбирайте тз уже на нужные реквизиты. Там где возврат Таблица результат, не возвращайте её, а обработайте как необходимо
Проверил, работает ваш код. Ошибка 0x800a03ec - это, вероятно, обращение к несуществующему столбцу с номером - 0. Если проблема не решена, покажите реальную excel таблицу на которой спотыкается выполнение.