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

14.05.15

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
ЗагрузкаМногоуровневогоExcellСКартинками.rar
.rar 3,72Mb
119
119 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

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

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

Как я понимаю, она работает так.
Цититую автора с его же слов
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 картинками

См. также

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

Программа позволяет организовать учет ответственного хранения товаров с весовыми характеристиками, в том числе со сроком годности и личным кабинетом Поклажедателя. Модуль реализован в виде расширения конфигурации, устанавливается в режиме 1С:Предприятие 8 за 5 минут по инструкции, что позволяет оставить конфигурацию 1С на стандартной поддержке и продолжать получать стандартные обновления от фирмы "1С".

89900 руб.

09.06.2020    38682    28    59    

64

SALE! 10%

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

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Предлагаем качественное и проверенное временем решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам. При выходе новых релизов конфигураций 1C оперативно выпускаем обновление переноса данных.

55778 50200 руб.

24.04.2015    194959    150    243    

280

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

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

40000 руб.

26.07.2023    6070    21    0    

12

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

Реальный помощник, с помощью которого Вы сделаете необходимые документы для Wildberries, OZON, ЯндексМаркет, Мегамаркет, Aliexpress, "Детский мир", МагнитЭкспресс (быв.Казань-Экспресс), "Леруа Мерлен", ЭНФАНТА (Акушерство), ЛаМода, Летуаль, "Твой дом", "Золотое Яблоко" в документы "Отчет комиссионера (агента) о продажах" и другие, работает в "Бухгалтерия 3", "Бухгалтерия 3 КОРП", УТ 11, УНФ, КА 2, ERP. Возможность подключить любые маркетплейсы. Анализ продаж ОЗОН. 30 дней БЕСПЛАТНОГО пользования!

2400 руб.

12.08.2021    35497    348    68    

155

SALE! 30%

Загрузка и выгрузка в Excel Документооборот и делопроизводство (СЭД) Учет документов Распознавание документов и образов Бухгалтер Пользователь Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная программа для распознавания сканов или фото товарных документов в 1С. Не требует указания параметров и предварительной настройки. Просто выбираете файл (PDF, JPG, DOC, XLS, HTML) выбираете документ 1С и нажимаете кнопку "Распознать и загрузить".

8400 5880 руб.

04.06.2019    106954    313    173    

326

Загрузка и выгрузка в 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 1С:Розница 3.0 Платные (руб)

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

15600 руб.

20.11.2015    156074    376    378    

513
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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

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