Простые эксель-таблицы — линейные прайсы, списки товаров, клиентов — не в счет!
Предыстория. Вообще, я достаточно много решал задач с загрузкой данных из эксель. Со временем пришел к нестандартным решениям. Примеры таких решений опубликовал в статьях:
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С нестанДАрт
Расчет банковских (рабочих) дней нестанДАрт
Шаблоны кода в режиме 1С:Предприятие SALE’1sm
Доработка конфигурации Конвертация Данных
Планирование платежей. Прогнозирование прибылей и убытков
Ввод показателей план-факта БП 3.0 Know-how
Инвентаризация личного опыта Для новичков 1С
Большие запросы: взгляд на проблему нестанДАрт
Технология создания коммерческих разработок Know-how
Андроид-решение для создания заказов в 1С Know-how + нестанДАрт
Печать ценников с одной и двумя ценами 55х40, 100х60, 140х200
Ещё бы примечания к ячейкам добавлять, чтобы было понятно что не так.
(1) понравился метод?
(2)метод понятен, удобный, но эксель не люблю, так как бывает, что он строку типа 1.12 превращает в первое декабря и иные действия, которые создают ошибки загрузки
Плохое решение. Костыль. Приходится оператору визуально определять все или не все. Вопрос: что гарантирует правильность того, что оператор определил визуально правильно. Ответ — ничего.
То есть — костыль. типичный. но за неимением внятного быстрого действенного решения — прокатит. на первых порах. пока не случится какой-нить трабл.
(4) это нельзя назвать «решением», как вы пишите — это лишь часть или фрагмент мозаики — при обходе сложно-структурированного экселя использовались пошаговые служебные сообщения, сравнения вертикальных и горизонтальных итогов, визуальное человеческое сравнение. К этим очевидным инструментам добавилась позже маркировка ячеек — стало легче искать «траблы», как вы это назвали. Самый не очевидный был трабл, когда мы не знаем как формируется эта эксель-таблица в программе Shoppy (задача по загрузке продаж Кальцедонии), и выяснилось, что итоги по горизонтали и по вертикали не совпадают «специально», или сама эксель-таблица формируется со сжатыми столбцами — и каждый надо раздвигать — или все раздвигаем, или только те, на которых есть значения — маркировка в этом плане выручает — выделяет ячейку зеленым пятнышком, хоя мы не видим содержимое ячейки.
В целом достаточно анализировать одну таблицу — когда отлаживаем загрузку — в дальнейшем каждую таблицу не нужно, если итоги совпадают.
П.С. «Костыль» — слово несущее в себе негативный оттенок. Типа без костыля нездоровый человек ходить не будет, аналогия здесь другая — загрузка будет работать без маркировки, отладка тоже будет работать — отлаживал же до этого способа. Я бы сравнил маркировку ячеек с трассирующими пулями — когда мы видим куда стреляем.
Спасибо за уточняющее замечание.
(4) я бы хотел решить какую-нибудь сложную задачу — да пока задач таких нет… может у вас есть?
(6) у меня задачи узкоспециализированные и требующие математики хорошей (оптимизационные всякие), да и при этом мало востребованные (поэтому до сих пор толком и нерешенные, и без них как-то живем ;-), неинтересно вам будет. Но если что-то появится — буду иметь ввиду