Маркировка ячеек цветом. Отладка загрузки данных из эксель.

Публикация № 860846

Программирование - Практика программирования

загрузка из эксель

12
После 100-ой кривой загрузки родился способ, как отладить алгоритм.

Простые эксель-таблицы - линейные прайсы, списки товаров, клиентов - не в счет!

Предыстория. Вообще, я достаточно много решал задач с загрузкой данных из эксель. Со временем пришел к нестандартным решениям. Примеры таких решений опубликовал в статьях:

1) Загрузка номенклатуры из Эксель (новый взгляд)  //catalog.mista.ru/public/666516/

2) Загрузка прайса. УТ 10.3 //catalog.mista.ru/public/805845/

3) Загрузка данных о розничных продажах из магазинов Intimissimi (Интимиссими) и Calzedonia (Кальцедония) //catalog.mista.ru/public/790428/

По мотивам статьи из п.3) родилась данная публикация.

Еще раз, простые эксель-таблицы - линейные прайсы, списки товаров, клиентов - не в счет!

Речь идет о сложных структурах эксель - двумерные, трехмерные  таблицы. Пример двумерного отчета на рисунке ниже - по строкам указаны Артикулы товара, по столбцам - Размеры товара, на пересечении стоят - количество проданного товара. Товар в данном случае - это Артикул+Размер.

На самом деле, в статье представлено не решение, а подход, или только часть алгоритма. 

Весь алгоритм включает в себя и другие вспомогательные инструменты для анализа загрузки:

1) пошаговые служебные сообщения при обходе строк и колонок сложно-структурированного экселя;

2) математические сравнения вертикальных и горизонтальных итогов по строкам и колонкам;

3) "ручное" или "визуальное" человеческое сравнение эксель-таблицы с загруженными данными в 1С.

К этим очевидным инструментам добавилась маркировка ячеек цветом - стало легче искать ошибки.

Самые не очевидные ошибки, с которыми пришлось столкнуться и которые были решены с помощью маркировки ячеек цветом:

1) мы не знаем как формируется исходная эксель-таблица, и почему-то в ней изначально содержалась ошибка - итоги по горизонтали и по вертикали (по строкам и колонкам) не совпадают !

2) или исходная эксель-таблица формируется со спрятанными колонками (сжатыми столбцами) - и каждый раз их надо раздвигать вручную перед загрузкой и после для сравнения - в итоге маркировка показала, что не все ячейки обходятся, алгоритм был доработан. А после загрузки уже не надо раздвигать столбцы - маркировка показывает ячейки, которые мы обошли, при этом мы не видим содержимое ячейки.

Я бы сравнил маркировку ячеек с трассирующими пулями - когда мы видим куда стреляем - после загрузки эксель мы видим какие ячейки обошли в цикле.

Итак, вот исходная таблица эксель.

В 1С, в обработке загрузчика, обход такого эксель происходит цикл в цикле (по строкам и по столбцам). Какие ячейки мы обходим - не видно. В результате выполнения алгоритма непонятно: все ли ячейки обошли, почему имеются расхождения в итогах, как найти ошибку в алгоритме?

После 100-ой кривой загрузки родился способ как отладить алгоритм - я начал маркировать ячейки зеленым цветом:

//маркируем ячейку
Лист.Cells(НомерСтроки,НомерКолонки).Interior.Color = 255045;

В результате выполнения алгоритма я вижу все ячейки, по которым прошелся алгоритм.

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


См. также:

Как эффективно использовать Инфостарт NEW!

Список реализаций + структура подчиненности + реестр документов SALE'1sm

Список заказов поставщикам + структура подчиненности SALE'1sm

Список заказов покупателей + структура подчиненности SALE'1sm

Договоры для 1с-ника ТОП-скачиваний

Сетка расписания (Планировщик) нестанДАрт

Два механизма, которые ускорили работу бухгалтеров в 1С нестанДАрт

Мини-CRM для УТ 10.3

Расчет банковских (рабочих) дней нестанДАрт

Шаблоны кода в режиме 1С:Предприятие SALE'1sm

Доработка конфигурации Конвертация Данных

Планирование платежей. Прогнозирование прибылей и убытков

Ввод показателей план-факта БП 3.0 Know-how

Инвентаризация личного опыта Для новичков 1С

Большие запросы: взгляд на проблему нестанДАрт

Технология создания коммерческих разработок Know-how

Андроид-решение для создания заказов в 1С Know-how + нестанДАрт

Отчет Остатки и цены

Печать ценников с одной и двумя ценами 55х40, 100х60, 140х200

Загрузка данных о розничных продажах из магазинов Intimissimi (Интимиссими) и Calzedonia (Кальцедония)

Доработки обмена "УТ 10.3 - интернет-магазина Shop-Script"

12

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. pakko 10 06.07.18 14:40 Сейчас в теме
Ещё бы примечания к ячейкам добавлять, чтобы было понятно что не так.
2. Rustig 1172 06.07.18 15:19 Сейчас в теме
3. pakko 10 07.07.18 10:50 Сейчас в теме
(2)метод понятен, удобный, но эксель не люблю, так как бывает, что он строку типа 1.12 превращает в первое декабря и иные действия, которые создают ошибки загрузки
4. CheBurator 3392 29.07.18 00:51 Сейчас в теме
Плохое решение. Костыль. Приходится оператору визуально определять все или не все. Вопрос: что гарантирует правильность того, что оператор определил визуально правильно. Ответ - ничего.
То есть - костыль. типичный. но за неимением внятного быстрого действенного решения - прокатит. на первых порах. пока не случится какой-нить трабл.
5. Rustig 1172 29.07.18 11:30 Сейчас в теме
(4) это нельзя назвать "решением", как вы пишите - это лишь часть или фрагмент мозаики - при обходе сложно-структурированного экселя использовались пошаговые служебные сообщения, сравнения вертикальных и горизонтальных итогов, визуальное человеческое сравнение. К этим очевидным инструментам добавилась позже маркировка ячеек - стало легче искать "траблы", как вы это назвали. Самый не очевидный был трабл, когда мы не знаем как формируется эта эксель-таблица в программе Shoppy (задача по загрузке продаж Кальцедонии), и выяснилось, что итоги по горизонтали и по вертикали не совпадают "специально", или сама эксель-таблица формируется со сжатыми столбцами - и каждый надо раздвигать - или все раздвигаем, или только те, на которых есть значения - маркировка в этом плане выручает - выделяет ячейку зеленым пятнышком, хоя мы не видим содержимое ячейки.
В целом достаточно анализировать одну таблицу - когда отлаживаем загрузку - в дальнейшем каждую таблицу не нужно, если итоги совпадают.
П.С. "Костыль" - слово несущее в себе негативный оттенок. Типа без костыля нездоровый человек ходить не будет, аналогия здесь другая - загрузка будет работать без маркировки, отладка тоже будет работать - отлаживал же до этого способа. Я бы сравнил маркировку ячеек с трассирующими пулями - когда мы видим куда стреляем.
Спасибо за уточняющее замечание.
6. Rustig 1172 29.07.18 11:58 Сейчас в теме
(4) я бы хотел решить какую-нибудь сложную задачу - да пока задач таких нет... может у вас есть?
7. CheBurator 3392 30.07.18 00:38 Сейчас в теме
(6) у меня задачи узкоспециализированные и требующие математики хорошей (оптимизационные всякие), да и при этом мало востребованные (поэтому до сих пор толком и нерешенные, и без них как-то живем ;-), неинтересно вам будет. Но если что-то появится - буду иметь ввиду
Оставьте свое сообщение