И опять Excel 2016. Индекс находится за границами массива
Есть обработка стороннего автора для Розницы. Таблицы где колонка равна ячейки все хорошо загружается.
Я вот пример.xls выдает ошибку:
Как я понял проблема в том что в таблице примера строки объединение.
Вопрос: как заставить код проглатывать данные с объединённых ячеек ексельки. За ранее спасибо.
Я вот пример.xls выдает ошибку:
{ВнешняяОбработка.1111.Форма.Форма.Форма(180)}: Индекс находится за границами массива
Как я понял проблема в том что в таблице примера строки объединение.
Excel = Новый COMОбъект("Excel.Application");
Excel.Application.Workbooks.Open(ИмяФайлаНаСервере);
Excel.DisplayAlerts = 0;
ExcelSheet = Excel.Sheets(1);
ВсегоСтрок = ExcelSheet.Cells.SpecialCells(11).Row;
ВсегоКолонок = ExcelSheet.Cells.SpecialCells(11).Column;
ExcelSheetRange = ExcelSheet.Range(ExcelSheet.Cells(НачСтрока, 1), ExcelSheet.Cells(КонСтрока, ВсегоКолонок));
Данные = ExcelSheetRange.Value.Выгрузить();
Попытка
//Остановка начинается с первой прочинанной колонки
Артикулы = ?(кАртикул <= 0, Неопределено, Данные[кАртикул - 1]);;
Наименования = ?(кНаименование <= 0, Неопределено, Данные[кНаименование - 1]);
ШтрихКод = ?(кШтрихКод <= 0, Неопределено, Данные[кШтрихКод - 1]);
Единицы = ?(кЕдИзмерения <= 0, Неопределено, Данные[кЕдИзмерения - 1]);
СтавкиНДС = ?(кСтавкаНДС <= 0, Неопределено, Данные[кСтавкаНДС - 1]);
Количества = ?(кКоличество <= 0, Неопределено, Данные[кКоличество - 1]);
Цены = ?(кЦена <= 0, Неопределено, Данные[кЦена - 1]);
Сумма = ?(кСумма <= 0, Неопределено, Данные[кСумма - 1]);
Исключение
Сообщить(ОписаниеОшибки());
Данные = Неопределено;
КонецПопытки;
Объект.ДанныеЗагрузки.Очистить();
Для Сч = 0 По КонСтрока - НачСтрока Цикл //- 1 Цикл
Если Данные = Неопределено Тогда
Прервать;
КонецЕсли;
СтрокаТЧ = Новый Структура("Артикул, Наименование, ШтрихКод, ЕдиницаИзФайла, СтавкаНДСИзФайла, Количество, Цена, Сумма");
СтрокаТЧ.Артикул = ?(Артикулы = Неопределено, "", СокрЛП(Артикулы[Сч]));
СтрокаТЧ.Наименование = ?(Наименования = Неопределено, "", СокрЛП(Наименования[Сч]));
СтрокаТЧ.ШтрихКод = ?(ШтрихКод = Неопределено, "", СокрЛП(ШтрихКод[Сч]));
СтрокаТЧ.ЕдиницаИзФайла = ?(Единицы = Неопределено, "", СокрЛП(Единицы[Сч]));
СтрокаТЧ.СтавкаНДСИзФайла = ?(СтавкиНДС = Неопределено, "", СокрЛП(СтавкиНДС[Сч]));
СтрокаТЧ.Количество = ?(Количества = Неопределено, "", ЧисткаСтроки(Количества[Сч]));
СтрокаТЧ.Цена = ?(Цены = Неопределено, "", Цены[Сч]);
СтрокаТЧ.Сумма = ?(Сумма = Неопределено, "", Сумма[Сч]);
Если НЕ ЗначениеЗаполнено(СтрокаТЧ.Артикул) И НЕ ЗначениеЗаполнено(СтрокаТЧ.Наименование) Тогда
Продолжить;
КонецЕсли;
СтрокаЗагрузки = Объект.ДанныеЗагрузки.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаЗагрузки, СтрокаТЧ);
КонецЦикла;
Данные = Неопределено;
ExcelSheetRange = Неопределено;
ВсегоСтрок = Неопределено;
ExcelSheet = Неопределено;
Excel.Application.Workbooks(1).Close();
Excel.Quit();
Excel = Неопределено;
ПоказатьВопрос: как заставить код проглатывать данные с объединённых ячеек ексельки. За ранее спасибо.
Прикрепленные файлы:
пример.xls
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
1. Не использовать объединенные ячейки. Получится универсальное решение.
2. Если шаблон фиксированный - зная номера колонок объединенных ячеек использовать именно их, безо всякого цикла. Универсальности не получится, получится индивидуальное решение.
2. Если шаблон фиксированный - зная номера колонок объединенных ячеек использовать именно их, безо всякого цикла. Универсальности не получится, получится индивидуальное решение.
(2)
Я и делаю фиксацию по ИНН. что бы оператор выбрал Контрагента, и все значения колонок проставились автоматом.
Но с данным поставщиком не могу заставить выгружать. номера колонок ставлю с первой колонки объединённой ячейки и не идет.
Постоянно править ексельку перед выгрузкой не вариант, ни кто этого не будет делать. вот и надо именно этот шаблон документа читабельным
ъединенные ячейки. Получится универсальное решение
Я и делаю фиксацию по ИНН. что бы оператор выбрал Контрагента, и все значения колонок проставились автоматом.
Но с данным поставщиком не могу заставить выгружать. номера колонок ставлю с первой колонки объединённой ячейки и не идет.
Постоянно править ексельку перед выгрузкой не вариант, ни кто этого не будет делать. вот и надо именно этот шаблон документа читабельным
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот