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


После 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 не будет опубликован. Обязательные поля помечены *