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

В 1С, в обработке загрузчика, обход такого эксель происходит цикл в цикле (по строкам и по столбцам). Какие ячейки мы обходим — не видно. В результате выполнения алгоритма непонятно: все ли ячейки обошли, почему имеются расхождения в итогах, как найти ошибку в алгоритме?
После 100-ой кривой загрузки родился способ как отладить алгоритм — я начал маркировать ячейки зеленым цветом:
//маркируем ячейку
Лист.Cells(НомерСтроки,НомерКолонки).Interior.Color = 255045;В результате выполнения алгоритма я вижу все ячейки, по которым прошелся алгоритм.

Всех успехов и всего доброго!

