Простые эксель-таблицы - линейные прайсы, списки товаров, клиентов - не в счет!
Предыстория. Вообще, я достаточно много решал задач с загрузкой данных из эксель. Со временем пришел к нестандартным решениям. Примеры таких решений опубликовал в статьях:
1) Загрузка номенклатуры из Эксель (новый взгляд) //infostart.ru/public/666516/
2) Загрузка прайса. УТ 10.3 //infostart.ru/public/805845/
3) Загрузка данных о розничных продажах из магазинов Intimissimi (Интимиссими) и Calzedonia (Кальцедония) //infostart.ru/public/790428/
По мотивам статьи из п.3) родилась данная публикация.
Еще раз, простые эксель-таблицы - линейные прайсы, списки товаров, клиентов - не в счет!
Речь идет о сложных структурах эксель - двумерные, трехмерные таблицы. Пример двумерного отчета на рисунке ниже - по строкам указаны Артикулы товара, по столбцам - Размеры товара, на пересечении стоят - количество проданного товара. Товар в данном случае - это Артикул+Размер.
На самом деле, в статье представлено не решение, а подход, или только часть алгоритма.
Весь алгоритм включает в себя и другие вспомогательные инструменты для анализа загрузки:
1) пошаговые служебные сообщения при обходе строк и колонок сложно-структурированного экселя;
2) математические сравнения вертикальных и горизонтальных итогов по строкам и колонкам;
3) "ручное" или "визуальное" человеческое сравнение эксель-таблицы с загруженными данными в 1С.
К этим очевидным инструментам добавилась маркировка ячеек цветом - стало легче искать ошибки.
Самые не очевидные ошибки, с которыми пришлось столкнуться и которые были решены с помощью маркировки ячеек цветом:
1) мы не знаем как формируется исходная эксель-таблица, и почему-то в ней изначально содержалась ошибка - итоги по горизонтали и по вертикали (по строкам и колонкам) не совпадают !
2) или исходная эксель-таблица формируется со спрятанными колонками (сжатыми столбцами) - и каждый раз их надо раздвигать вручную перед загрузкой и после для сравнения - в итоге маркировка показала, что не все ячейки обходятся, алгоритм был доработан. А после загрузки уже не надо раздвигать столбцы - маркировка показывает ячейки, которые мы обошли, при этом мы не видим содержимое ячейки.
Я бы сравнил маркировку ячеек с трассирующими пулями - когда мы видим куда стреляем - после загрузки эксель мы видим какие ячейки обошли в цикле.
Итак, вот исходная таблица эксель.
В 1С, в обработке загрузчика, обход такого эксель происходит цикл в цикле (по строкам и по столбцам). Какие ячейки мы обходим - не видно. В результате выполнения алгоритма непонятно: все ли ячейки обошли, почему имеются расхождения в итогах, как найти ошибку в алгоритме?
После 100-ой кривой загрузки родился способ как отладить алгоритм - я начал маркировать ячейки зеленым цветом:
//маркируем ячейку
Лист.Cells(НомерСтроки,НомерКолонки).Interior.Color = 255045;
В результате выполнения алгоритма я вижу все ячейки, по которым прошелся алгоритм.
Всех успехов и всего доброго!