Загрузка номенклатуры с изображениями из многоуровневых файлов Excel

14.05.15

Учетные задачи - Логистика, склад и ТМЦ

Идея загрузки многоуровневых прайс-листов поставщиков вместе со вложенными картинками давно не нова.
Но до конца доведенного под толстый клиент обычного приложения я видел только один.
Это Мегапрайс Жени Шекина. Вещь отличная (судя по роликам в ютубе), но я для себя написал свою.

Скачать файлы

Наименование Файл Версия Размер
ЗагрузкаМногоуровневогоExcellСКартинками.rar
.rar 3,72Mb
119
.rar 3,72Mb 119 Скачать

В сети много разговоров о том, как загружать данные из многоуровневого листа экселя.

Самое тяжелое определить родителя, ибо в экселе в группировке нет родителя как такового

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

Нет смысла писать о всех возможных вариациях группировки в экселе.

У Евгения в Мегапрайсе есть некая функция определения родительской папки.

Как я понимаю, она работает так.
Цититую автора с его же слов
http://www.forum.mista.ru/topic.php?id=566936

делаешь ТЗ для заполнения
Две колонки Группа, Уровень С\читываем файл
Пока Стр для Каждого ляляля Следующий
Если
Ляляля проблелов = 1 Тогда

ТЗ.Группа = Стр.Значение ТЗ. Уровень = 1
ИначеЕсли Пробелов ляляля = 2 Тогда
ТЗ.Группа = Стр.Значение ТЗ.Уровень = 2 и т.д.
КонецЦИкла.

ВерхняяГруппа = "";
Для Каждого Стр из ТЗ ЦИкл
Если
Стр.Уровень = 1 Тогда ляляля найтигруппа

Не нашли создали
ВерхняяГруппа = СОзданнаяИлиНайденнаяГруппа
Если Уровень = 2 Тогда
лояляля - ищем.создаем
НайденнаяГруппа.РОдитель = ВерхняяГруппа;
ВерхняяГруппа = Найденнаягруппа.Ссылка;

и т.д. и т.п.

Но я, видимо, вконец непонятливый: единственное, что понял - то, что уровни надо указывать явно, а это не есть хорошо, т.к. заранее количество уровней вложенности нам неизвестно.

Поэтому пришлось написать свой алгоритм чтения многоуровневой иерархии из экселя с определением родителей.

Далее  стоял вопрос, как считать из файла картинки, и тут, я, ни секунды не колеблясь, прибегнул к помощи Александра Шкураева
//infostart.ru/public/73687/
http://shkuraev.ru/?p=476
Его алгоритм позиционирования в таблице по координатам Shape-в очень интересен.
Ну и dll-ка его, с помощью которой можно энти Shape-ы (картинки) сохранить на диске.


После считывания картинок их надо сохранить в хранилище и тут я снова, не колеблясь ))) прибег к коду от Поручик-а
//infostart.ru/public/19932/
Хотя, положа руку на сердце, больше всего в разработке Поручика понравилось, как он dll-ку сохранил в виде двоичных данных в макете и при необходимости распаковывал в нужную папку.

Многое, конечно же, пришлось кодить самому и с нуля (особенно долго пришлось повозиться с определением родителя в экселевской группировке). Но, конечно же, если бы не "подсказки" вышеуказанных коллег, то работы было бы гораздо больше.
Поэтому, спасибо, друзья!


Итак,  с гордостью представляю Вам моего франкенштейна, склепанного из моего кода с вкраплениями кода Саши Шкураева и Поручика.

Во вложенном архиве сама обработка, образец многоуровневого файла-прайса с картинками и внешняя компонента 1CGClipboard.dll (в сущности, она не нужна, т.к. лежит в обработке в макете).

Работа с обработкой очень проста.
1. Надо определиться, есть ли в нашем прайсе столбец с картинками и штрихкодами. В зависмости от этого надо проставить флажки "ИспользоватьШтрихКоды" и "ЗагружатьИзображения"
2. Далее надо указать номера столбцов и номер первой строки таблицы, с которой начинать считывать данные.
3. Потом надо выбрать каталог временного хранения изображений и группу номенклатуры, в которую будет подгружена новая
4. Выбираем файл таблицу. Если надо то можно выбрать лист таблицы (по умолчанию будет 1-й)

5. Нажимаем кнопку "Предварительный просмотр"
Ждем. Любуемся полученной таблицей "Товары" и ссылками на изображения во временном каталоге (их кстати, при необходимости, можно менять или добавлять прямо в таблице)

6. Нажимаем кнопку "Загрузить" и получаем всю номенклатуру с полным сохранением иерархии и изображениями

P.S. Само собой, все возможные виды группировок в экселе моя обработка не поддерживает, но я работал на самом рапространенном шаблоне. Работает на 8.1, но думаю, не стоит говорить, как в конфигураторе сконрвертить и в 8.2 / 8.3

Надеюсь моя работа поможет кому нибудь еще.
с уважением,
Джамал Абдусаламов

P.P.S 14.05.2015

Прошел год успешного пользования обработкой. Заметил небольшой косяк. Компонента 1CGClipboard.dll требует регистрации в системе что не всегда возможно, плюс она не работает на последних версиях мелкософтовского офиса.

поэтому порылся в сети и нашел способ сохранять средствами самого  Excell-а.

Вкратце все выглядит так.

Картинки как и ранее мы находим методом Shape-ов

так же копируем их в clipboard методом Copy()

но затем не используем внешнюю компоненту а создаем внутри книги объект диаграмму затем Paste()-руем в нее наш рисунок и методом Export() выгружаем на диск

 

вот фрагменты кода

 

                

// СТАРЫЙ СПОСОБ СОХРАНЕНИЯ
                //ИскомаяКартинка.Copy();
                
                //Если ОчиститьОтНедопустимыхСимволов(СтрокаТЗ.Артикул) = "" Тогда
                    ИмяКартинки = КаталогКартинок + "\" + Новый УникальныйИдентификатор() + "_pic_" + СчетчикКартинок + ".jpg";
                //Иначе
                //    ИмяКартинки = КаталогКартинок + "\" + ОчиститьОтНедопустимыхСимволов(СтрокаТЗ.Артикул) + "_pic_" + СчетчикКартинок + ".jpg";
                //КонецЕсли;
                //БуферОбмена.СохранитьИзБуфера(ИмяКартинки);
                
                // ЛИБО ВОТ ЕЩЕ
                
                //GraphicObject.ScaleHeight(1,1);     // Истинный размер по высоте.
                //GraphicObject.ScaleWidth(1,1);      // Истинный размер по ширине.
                //GraphicObject.Copy();

                //Chart = EXCELApplication.ActiveSheet.ChartObjects().Add(0, 0, GraphicObject.Width, GraphicObject.Height).Chart();
                //Chart.Paste();
                //Chart.Export(ПолноеИмяФК);

                //Chart = Неопределено;
                
                
                
                // ИЛИ ЕЩЕ ИМ СЕЙЧАС ПОЛЬЗУЮСЬ НО ТРЕБУЕТ ДОПИЛА ПО ЧАСТИ ЗАКРЫТИЯ ДОКА БЕЗ СОХРАНЕНИЯ
//НЕ СТАЛ ЗАМОРАЧИВАТЬСЯ
//НУЖНО БЫЛО СРОЧНО ОДИН ПРАЙС ПОДРУЗИТЬ ПОТОМУ ПРОСТО ЗАГРУЗИЛ А ПОТОМ В ДИСПЕТЧЕРЕ ЗАДАЧ УДАЛИЛ
//ПРОЦЕСС EXCELL
                
                //Ссылка на картинку
                Картинка = ИскомаяКартинка;

                // промежуточная книга для хранения диаграммы - контейнера картинки
                Excel.Application.Workbooks.Add(1);
                ИмяЛистаXLS = Excel.ActiveSheet.Name;

                //Создание диаграммы, которая будет являться контейнером для картинки
                //Расположение новой диаграммы - как объект на созданном ранее новом листе, являющемся в данный момент активным
                //Размеры диаграммы слегка превышают размер картинки
                ДиаграммаXLS = Excel.ActiveSheet.ChartObjects().Add(0, 0, Картинка.Width * 1.01, Картинка.Height * 1.01);

                //Копирование картинки в буфер
                Картинка.Copy();

                //Заполняем диаграмму картинкой из буфера
                ДиаграммаXLS.Chart.Paste();

                //Сохраняем диаграмму во временном файле
                ДиаграммаXLS.Chart.Export(ИмяКартинки);

                ДиаграммаXLS = Неопределено;  

 

 

В общем, дерзайте.
Эту обработку уже взял на вооружение  StalkerAkella в  //infostart.ru/public/343876/

 

загрузка многоуровненой иерархии Excell картинками

См. также

SALE! 20%

Автоматический заказ поставщику в 1С: загрузка прайсов и анализ цен поставщиков для УТ 10.3, УТ 11, КА2, УНФ, УПП, ERP, Розница 2

Бюджетирование и планирование Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Анализ продаж Платформа 1С v7.7 Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Система управления запасами для 1С помогает работать с запасами правильно: автоматически рассчитывает потребность и делает заказ поставщику, загружает прайсы, перемещает товары по филиалам, анализирует продажи и позволяет управлять ассортиментом.

28500 22800 руб.

21.04.2017    90178    105    39    

190

Модуль "Ответственное хранение" или фулфилмент (FBS / FBO) для 1С:УТ 11.5, КА 2.5, ERP 2.5

Логистика, склад и ТМЦ Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Модуль "Ответственное хранение" для 1С (УТ 11.5, КА 2.5, ERP 2.5) позволяет организовать учет ответственного хранения товаров с весовыми характеристиками, в том числе со сроком годности и личным кабинетом Поклажедателя. Модуль реализован в виде расширения конфигурации, устанавливается в режиме 1С:Предприятие 8 за 5 минут по инструкции, что позволяет оставить конфигурацию 1С на стандартной поддержке и продолжать получать стандартные обновления от фирмы "1С".

60000 руб.

09.06.2020    34313    27    57    

54

SALE! 10%

Загрузка номенклатуры из Excel в УТ11, КА 2, ERP 2, Розница 2. Дополнительные реквизиты и сведения, характеристики, картинки, цены, остатки

Загрузка и выгрузка в Excel Розничная торговля Логистика, склад и ТМЦ Ценообразование, анализ цен Прайсы Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Загрузка из файлов xls, xlsx, ods, csv, mxl в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

10560 9504 руб.

29.10.2014    210174    620    524    

439

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 11.12.2023, версия 9.5 - 9.9)

13200 руб.

20.11.2015    150720    367    375    

501

AS WMS: автоматизация склада с адресным хранением с помощью ТСД

Логистика, склад и ТМЦ Платформа 1С v8.3 Россия Платные (руб)

Подсистема управления складом AS WMS для конфигураций на платформе 1С 8. AS WMS – готовое решение для эффективного управления адресным складом. Внедрение системы AS WMS способствует быстрому отбору товара, ускорению инвентаризации, снижению зависимости от персонала, исключению пересорта. AS WMS встраивается в любую конфигурацию на платформе 1С 8 и работает как единая система без обменов. В учетной системе нет необходимости менять процессы под AS WMS (например, вводить ордерную схему), AS WMS использует стандартные документы по товародвижению вашей учетной системы.

40000 руб.

26.07.2023    3228    13    0    

8
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 17.05.14 16:29
Сообщение было скрыто модератором.
...
2. пользователь 17.05.14 16:40
Сообщение было скрыто модератором.
...
3. пользователь 19.01.15 10:27
Сообщение было скрыто модератором.
...
4. пользователь 20.03.16 11:09
Сообщение было скрыто модератором.
...
5. Saldor 19.05.16 16:32 Сейчас в теме


А вот такое он добавит в базу, без программирования?

Если да, то готов купить.... Добавьте из прикрепленного файла товар и скиньте мне скрин с 1с что он в базе, желательно с открытой обработкой, чтобы было видно, что этот файл добавляется ..........
Прикрепленные файлы:
Тифлани+розница+(2).xls
6. пользователь 19.05.16 16:42
Сообщение было скрыто модератором.
...
7. Saldor 19.05.16 16:59 Сейчас в теме
8. user709114_powerful 01.11.19 08:43 Сейчас в теме
библиотека не подключается , для 8,2 не работает, или как то надо конвертировать?
библиотеку кидал во все папки 1с - подпапки, и в систем32 виндовс тоже...
9. j3d 34 03.11.19 01:33 Сейчас в теме
(8)

1. Вы должны быть админом в системе
2. библиотеку так же можно подключить через regsrv32 (п.1 обязателен)
все писалось и тестировалось именно на 8.2 и на Winвows 7 (в 2014 году)
на Win10 и новых процах не тестировал так что точно сказать не могу
10. user709114_powerful 06.11.19 12:48 Сейчас в теме
(9)
regsrv32

а как подключить? и надо ли перезагружаться ? и куда конкретно ложить библиотеку то ?
Оставьте свое сообщение