Загрузка прайс-листа с картинками из Excel и работа с буфером обмена

02.08.10

Разработка - Разработка внешних компонент

Недавно столкнулся с необходимостью загрузки большого количества прайсов от различных книжных издательств. Обязательным условием было сохранение в базе данных информации вместе с картинками (обложками книг).

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

Наименование Файл Версия Размер
1CGClipboard.zip
.zip 205,95Kb
464
.zip 205,95Kb 464 Скачать
ПримерИспользования.zip
.zip 200,96Kb
129
.zip 200,96Kb 129 Скачать

Основной проблемой, конечно, стало сохранить картинку на диск.

Поначалу решил использовать cClipBoardObject.dll (автору компоненты большое спасибо за идею!), НО! Возникла следующая проблема: картинки сохраненные с помощью вышеуказанной компоненты имеют формат данных WMF (некоторые просмоторщики распознают как EMF) и при загрузке в базу картинки отображались некорректно, да и с конвертировать их при помощи Новый Картинка(...).Преобразовать(...) тоже не получилось - система упорно выдавала ошибку.

Решил написать собственную компоненту. Функционал небольшой:

2 свойства:

  • Тип файла/FileType - тип файла в который будет сохранено изображение из буфера обмена (0 - bmp, 1 - jpg, по умолчанию 1);
  • Сжатие/Compression - степень сжатия для файлов формата JPEG (значение по умолчанию 80);


1 Метод:

  • СохранитьИзБуфера/SaveFromClipboard(ПутьКФайлу);


Пока реализовано сохранение только для типа CF_MetaFilePict (WMF). При копировании из Excel картинки в буфер используется именно этот формат.
В будущем планирую расширить функционал компоненты и извлекать уже изображения и других типов.

Пример использования для 8.2.

На 7.7 тоже все работает.

Похожие разработки:

//infostart.ru/public/19872/

//infostart.ru/public/19932/

//infostart.ru/public/16800/

 

http://shkuraev.ru

См. также

HTTP сервер 1С 7.7 + HTTP асинхронный клиент: внешние компоненты для 1С 7.7

Разработка внешних компонент WEB-интеграция Платформа 1С v7.7 Конфигурации 1cv7 Платные (руб)

Компонента HttpSrv7 позволяет создавать веб-сервисы в среде 1С 7.7 и даже, используя файлы HTML, несложные веб-сайты. С помощью нее можно обеспечить доступ к данным 1С 7.7 из браузера. Дополнительно используя компоненту HTTP_Async или синхронный клиент HTTP для 1С 7.7 (публикация № 1152364) можно наладить обмен данными между удаленными информационными базами. С помощью компоненты HTTP_Async можно параллельно посылать много запросов к сайтам, веб-сервисам (в т.ч. к HttpSrv7), а затем обрабатывать данные по мере их поступления.

2000 руб.

27.05.2022    7811    20    13    

31

Загрузка банковской выписки для 1С 7.7 любой конфигурации

Банковские операции Загрузка и выгрузка в Excel Платформа 1С v7.7 Конфигурации 1cv7 Россия Бухгалтерский учет Платные (руб)

Решение предоставляет комплексную загрузку банковской выписки из CSV, XLS, TXT файла в 1С 7.7 любой конфигурации. Позволяет создавать документы выбранного вида, например "Строка выписки банка (приход/расход)", или многострочный табличный документ, например Выписка, для каждой операции из загружаемого файла банковской выписки. Загружает реквизиты документа, а также создаёт контрагентов и другие необходимые элементы справочников.

3588 руб.

29.07.2021    20601    13    22    

14

Загрузка документов в 1С (7.7) из табличных файлов Excel,OpenOffice,1C,DBF,TXT (обработка)

Файловый обмен (TXT, XML, DBF), FTP Загрузка и выгрузка в Excel Платформа 1С v7.7 Конфигурации 1cv7 Платные (руб)

Обработка решает поставленную задачу по вводу документов, а кроме того обладает важной функцией: настраивается на ассортимент конкретного поставщика, запоминая соответствие между его номенклатурой и «нашей». Т.е. фактически – является самообучающейся системой ввода накладных. У разных поставщиков могут быть накладные различного типа, с разным количеством полей, поэтому для каждого из них может быть сохранена своя собственная настройка диалоговой формы так, что любая поступающая накладная может быть обработана. По отношению к программе "1С:Предприятие 7.7" данное решение является внешними файлами. Для использования данного продукта не требуется вносить изменения в алгоритм существующих программ или используемых конфигураций.

2400 руб.

10.12.2009    76459    58    93    

68

Компонента ExchangeStruc (Структура Обмена). Прямой обмен данными между потоками, сессиями и окнами.

Разработка внешних компонент Платформа 1С v7.7 Платформа 1С v8.3 Платформа 1C v8.2 Платформа 1С v8.1 Россия Платные (руб)

Аддон "Структура Обмена" (ExchangeStruc) - это компонента, которая обеспечивает доступ к разделяемым процессом структурам, аналогичным структурам 1С. Обеспечивает прозрачную передачу данных примитивных типов, в том числе Двоичных данных, в режиме Реального времени между разными контекстами (формами) или потоками одного процесса. В перспективе функционал будет расширен для обмена между процессами, даже разных версий платформ. Совместим с версиями Windows рабочих станций и серверов, с платформами 1С разных версий и релизов в режиме Native начиная с 8.2, и в режиме COM начиная с версий 7.7. По скорости чтения и записи лишь немногим уступает стандартной структуре 1С. НОВОЕ: Добавлен функционал регистрации компоненты COM в качестве OLE Auto (COMОбъект) для поддержки её работы в серверах старых версий 1С: 8.0 и 8.1, где работа с компонентами исключена. Теперь можно коммуникацию с Фоновыми заданиями на этих версиях проводить.

7200 руб.

19.04.2023    4799    1    0    

3

Выбор из большого списка (для 1С 7.7)

Разработка внешних компонент Платформа 1С v7.7 Платные (руб)

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

1200 руб.

02.12.2021    5777    2    19    

4

Криптография: внешняя компонента для 1С 7.7

Разработка внешних компонент Защита ПО и шифрование Платформа 1С v7.7 Абонемент ($m)

Цифровые подписи, шифрование, просмотр сертификатов ключей ЭЦП, работа с различными криптопровайдерами (в т.ч. КриптоПРО ГОСТ 2012) в 1С 7.7.

1 стартмани

08.06.2020    9050    27    mdbruyfn    10    

9

Клиент HTTP(S): внешняя компонента для 1С 7.7

Разработка внешних компонент WEB-интеграция Платформа 1С v7.7 Абонемент ($m)

Компонента позволяет использовать различные веб-сервисы интернет-ресурсов, например работать с онлайн-кассой через API, предоставленное ее разработчиком. Тестировалась на платформе 1С релиза 7.70.027.

1 стартмани

14.11.2019    18142    88    mdbruyfn    82    

15

Компонента для 1С, принимающая вес с железнодорожных, автомобильных, крановых весов

Разработка внешних компонент Платформа 1С v7.7 Платформа 1С v8.3 Транспорт, автопарки, такси Россия Платные (руб)

Программа "Компонента приёма веса для 1С, версия 3.0" позволяет принимать и заносить вес с весов непосредственно в программу "1С" - то есть, прием веса осуществляется целиком и полностью из программы "1С".

26400 руб.

09.04.2019    16063    2    8    

5
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4670 02.08.10 01:53 Сейчас в теме
Посмотри на это http://infostart.ru/public/19932/
И на источник разработки.
Работает со всеми распространёнными форматами.
2. salexdv 2327 02.08.10 07:08 Сейчас в теме
3. Magister 134 05.08.10 14:48 Сейчас в теме
Маньячество какое-то... а разве нельзя через VBA обратится к Excel и попросить его сохранить картинку на диск? С OpenOffice.org такое точно можно.
4. salexdv 2327 05.08.10 14:51 Сейчас в теме
(3) Может и можно... Если поделитесь наработками, буду очень признателен (и не я один) ;)
5. Magister 134 05.08.10 16:29 Сейчас в теме
(4) У меня-то и Excel на компе нет. А вот по работе с OO.o поделиться могу (правда пока делал только формирование файла с картинками, гиперссылками). Но методы для сохранения на диск у объекта GraphicObjectShape есть.
6. salexdv 2327 05.08.10 17:37 Сейчас в теме
(5) Это понятно, а как передать обратно в 1С путь к картинке, чтобы сделать все как в вышеозначенном примере?
7. Magister 134 05.08.10 18:01 Сейчас в теме
(6)
Что-то типа:
gProvider = Document.CreateInstance("com.sun.star.graphic.GraphicProvider");
Args = New COMSafeArray("VT_VARIANT", 2);
Args.SetValue(0, SetValue(ServiceManager, "URL", "file:///d:/123.jpg"));
Args.SetValue(1, SetValue(ServiceManager, "MimeType", "image/jpg"));
gProvider.storeGraphic(GraphicObjectShape.Graphic, Args);

Не проверял, но по идее должно работать.
8. salexdv 2327 05.08.10 18:51 Сейчас в теме
(7) Надо будет попробовать твое маньячество :D
9. CheBurator 3119 12.08.10 16:00 Сейчас в теме
Автор, посмотри проект Йоксель - там вроде сделано извлечение картинок
10. salexdv 2327 12.08.10 16:07 Сейчас в теме
(9) Хорошая вещь, только вот под свои нужды уже написал.
Рекомендую данную обработку отнести еще к
"ПРОГРАММИРОВАНИЕ → ОБМЕН ДАННЫМИ, ИНТЕГРАЦИЯ → 1C + Excel"
для облегчения поиска ;)
11. Альберт32 26.10.11 09:27 Сейчас в теме
12. egoel 28.02.12 09:42 Сейчас в теме
Это обработка для 8ки?
13. salexdv 2327 28.02.12 11:32 Сейчас в теме
(12) Да, эта обработка, как можно подгружать картинки из прайсов
14. titakovserg 16.03.12 10:43 Сейчас в теме
Отличная обработка. Кадровики просили перенести фотки сотрудников из Эксел; думаю несложно будет переработать эту вещь под мою задачу
15. salexdv 2327 16.03.12 10:54 Сейчас в теме
(14) Сложностей возникнуть не должно. Лучше для работы с буфером используйте усовершенствованную версию этой компоненты
16. Ламия 07.12.12 10:51 Сейчас в теме
Возможно глупый вопрос, а будет ли грузить, если картинки в прайсе и в отдельных файликах их нет?
17. salexdv 2327 07.12.12 11:15 Сейчас в теме
(16) Как раз для таких случаев, когда картинка только в прайсе присутствует
18. Ламия 07.12.12 11:59 Сейчас в теме
Чтож попробуем скачать и воспользоваться тогда, надеюсь все получится
19. Ламия 07.12.12 13:30 Сейчас в теме
А подскажите какого вида должен быть файл, в смысле что в какой колонке и в каком порядке.А то у меня просто создается куча пустых картинок в указанной папке,да и номенклатура никакая не грузится даже
20. salexdv 2327 07.12.12 14:48 Сейчас в теме
(19) В файле ПримерИспользования.zip есть образец прайса. Эта обработка служит примером получения картинки из excel, но она никак не сохраняет полученные данные. Просто на ее основе можно уже реализовать что-то свое
21. Ламия 07.12.12 16:16 Сейчас в теме
Млииин,так хотелось загрузить картинки
22. net7wolf 48 25.10.13 20:17 Сейчас в теме
23. midavp 1 10.02.16 15:08 Сейчас в теме
Скачал пример и файл. Создает пустые файлы картинок!
24. salexdv 2327 11.02.16 08:52 Сейчас в теме
(23) midavp, какая ОС используется и версия MS Office?
25. Yura77 30 09.11.16 10:31 Сейчас в теме
26. ДмитрийС 28.08.17 15:46 Сейчас в теме
Может кто подскажет, почему тестовая обработка не работает? Вернее, что я делаю не так.
Валится на ЗагрузитьВнешнююКомпоненту ("Не найдена компонента ""1CGClipboard"", без нее работа невозможна!").
Регистрировал её вручную. ПодключитьВнешнююКомпоненту проходит, а вот создать объект для работы с буфером обмена нет((
27. salexdv 2327 28.08.17 16:34 Сейчас в теме
(26) Если вы делаете так:
ЗагрузитьВнешнююКомпоненту("1CGClipboard.dll");

то dll должна лежать в каталоге исполняемых файлов программы.
Если компонента лежит где-то в другом месте, то надо вызывать так:
ЗагрузитьВнешнююКомпоненту("<ПутьКDll>\1CGClipboard.dll");
28. ДмитрийС 06.09.17 12:24 Сейчас в теме
(27) Спасибо за оперативный ответ! Извиняюсь за свой долгий ответ.
Думал у меня проблемы с рабочим компом (прав может не хватает), но я и дома проверил. Проблема осталась. Решил свой вопрос другим путем.
29. ClickUp 677 27.06.18 05:01 Сейчас в теме
Добрый день. Подскажите как решить проблему, Скачать Обработку и dll все зарегал все работает, но картинки не появляются и в папке создаются изображения с 0 размером. ОС Windows сервер 2008R2 и Excel 2007 (Пробовал на Windows 10 и Excel 2007 тот же результат), Помогите очень надо данный механизм.
30. salexdv 2327 27.06.18 07:30 Сейчас в теме
Здравствуйте! Попробуйте использовать эту разработку или её бесплатный аналог.
31. ClickUp 677 27.06.18 08:18 Сейчас в теме
Это же редактор картинок в 1с а мне надо получить картинку из excel в 1с
32. salexdv 2327 27.06.18 08:46 Сейчас в теме
(31) Это усовершенствованные версии. В них есть метод ПолучитьИзображение(). Если вызвать этот метод с пустым параметром, то картинка берется из буфера обмена. Потом остается вызвать только СохранитьИзображение()
Оставьте свое сообщение