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


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

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

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

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;

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

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


См. также:

Как эффективно использовать Инфостарт 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"

7 Comments

  1. pakko

    Ещё бы примечания к ячейкам добавлять, чтобы было понятно что не так.

    Reply
  2. Rustig

    (1) понравился метод?

    Reply
  3. pakko

    (2)метод понятен, удобный, но эксель не люблю, так как бывает, что он строку типа 1.12 превращает в первое декабря и иные действия, которые создают ошибки загрузки

    Reply
  4. CheBurator

    Плохое решение. Костыль. Приходится оператору визуально определять все или не все. Вопрос: что гарантирует правильность того, что оператор определил визуально правильно. Ответ — ничего.

    То есть — костыль. типичный. но за неимением внятного быстрого действенного решения — прокатит. на первых порах. пока не случится какой-нить трабл.

    Reply
  5. Rustig

    (4) это нельзя назвать «решением», как вы пишите — это лишь часть или фрагмент мозаики — при обходе сложно-структурированного экселя использовались пошаговые служебные сообщения, сравнения вертикальных и горизонтальных итогов, визуальное человеческое сравнение. К этим очевидным инструментам добавилась позже маркировка ячеек — стало легче искать «траблы», как вы это назвали. Самый не очевидный был трабл, когда мы не знаем как формируется эта эксель-таблица в программе Shoppy (задача по загрузке продаж Кальцедонии), и выяснилось, что итоги по горизонтали и по вертикали не совпадают «специально», или сама эксель-таблица формируется со сжатыми столбцами — и каждый надо раздвигать — или все раздвигаем, или только те, на которых есть значения — маркировка в этом плане выручает — выделяет ячейку зеленым пятнышком, хоя мы не видим содержимое ячейки.

    В целом достаточно анализировать одну таблицу — когда отлаживаем загрузку — в дальнейшем каждую таблицу не нужно, если итоги совпадают.

    П.С. «Костыль» — слово несущее в себе негативный оттенок. Типа без костыля нездоровый человек ходить не будет, аналогия здесь другая — загрузка будет работать без маркировки, отладка тоже будет работать — отлаживал же до этого способа. Я бы сравнил маркировку ячеек с трассирующими пулями — когда мы видим куда стреляем.

    Спасибо за уточняющее замечание.

    Reply
  6. Rustig

    (4) я бы хотел решить какую-нибудь сложную задачу — да пока задач таких нет… может у вас есть?

    Reply
  7. CheBurator

    (6) у меня задачи узкоспециализированные и требующие математики хорошей (оптимизационные всякие), да и при этом мало востребованные (поэтому до сих пор толком и нерешенные, и без них как-то живем ;-), неинтересно вам будет. Но если что-то появится — буду иметь ввиду

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *