И опять Excel 2016. Индекс находится за границами массива

1. ShuSU 74 22.10.20 15:10 Сейчас в теме
Есть обработка стороннего автора для Розницы. Таблицы где колонка равна ячейки все хорошо загружается.
Я вот пример.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
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. FatPanzer 22.10.20 15:21 Сейчас в теме
1. Не использовать объединенные ячейки. Получится универсальное решение.
2. Если шаблон фиксированный - зная номера колонок объединенных ячеек использовать именно их, безо всякого цикла. Универсальности не получится, получится индивидуальное решение.
3. ShuSU 74 22.10.20 15:30 Сейчас в теме
(2)
ъединенные ячейки. Получится универсальное решение

Я и делаю фиксацию по ИНН. что бы оператор выбрал Контрагента, и все значения колонок проставились автоматом.
Но с данным поставщиком не могу заставить выгружать. номера колонок ставлю с первой колонки объединённой ячейки и не идет.
Постоянно править ексельку перед выгрузкой не вариант, ни кто этого не будет делать. вот и надо именно этот шаблон документа читабельным
4. uno-c 267 22.10.20 18:53 Сейчас в теме
Можно не выгружать, а работать напрямую с ячейками листа экселя.
5. uno-c 267 22.10.20 20:03 Сейчас в теме +0.3 $m
В Вашем случае поможет и такое:
ВсегоКолонок = ExcelSheet.Cells.SpecialCells(11).Column +  ExcelSheet.Cells.SpecialCells(11).Columns.Count - 1;
6. ShuSU 74 23.10.20 00:57 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот