Загрузка данных из Excel через COM Microsoft Excel, Open Office или Libre Office (управляемые формы)

09.06.21

Интеграция - Загрузка и выгрузка в Excel

Болванка обработки для загрузки данных из файла электронной таблицы Excel. Работает как с установленным на машине Microsoft Excel, так и с OpenOffice или LibreOffice. Под управляемые формы. Разрабатывалось на платформе 8.3.16, но будет работать и на более старых версиях.

Скачать исходный код

Наименование Файл Версия Размер
Обработка по загрузке данных из Excel через COM Microsoft Excel, Open Office или Libre Office (Управляемые формы)
.epf 21,95Kb
19
.epf 21,95Kb 19 Скачать

Обработка представляет собой просто заготовку для загрузки данных из файла Excel. Она позволяет работать как с платным (или успешно ломанным) Microsoft Excel на компьютере, так и с бесплатными Open Office или Libre Office (которые все чаще используются во многих компаниях).

 

 

Сразу сообщаю - обработка не является неким универсальным загрузчиком, в котором можно извратиться и загрузить все что угодно из Excel не заглядывая в конфигуратор.

Я не сторонник подобных решения, т.к. как правило 95% пользователей 1С не в состоянии таким механизмом воспользоваться - просто не хватит навыков в программировании и построении запросов. И получается что подобные мощные и гибкие загрузчики по большей части тешат самолюбие их авторов.

Я, скажем так, за разумный подход и полуавтоматизацию в этом вопросе. Поэтому предлагаю свою болванку обработки, которую можно любому, даже начинающему, программисту по быстрому допилить под собственные нужды. 

Плюс обработки в том, что не надо лезть в куски кода работы с COM-объектами, а сразу в нужном месте написать свой кусок и использовать. Для этого достаточно почитать комментарии к коду и вставить свои куски вот в этих двух процедурах:

&НаКлиенте
Процедура ВыполнитьЗагрузку()
	
	Перем Источник, КоличествоСтрок, КоличествоКолонок, ЗначениеЯчейки, СтруктураCOMОбъектов;
	
	//Отказ готовим на случай если надо будет не продолжать загрузку данных на сервере.
	Отказ = Ложь;
	
	//Инициализация обработчика
	ТекстОшибки = ИнициализироватьИсточникДанных(Источник, КоличествоСтрок, КоличествоКолонок, СтруктураCOMОбъектов);
	Если ЗначениеЗаполнено(ТекстОшибки) Тогда
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки);
		Возврат;
	КонецЕсли;
	
	//Готовим массив под строки.
	//Каждая строка будет представлена в виде структуры.
	МассивОбработки = Новый Массив;
	
	Для ТекНомерСтроки = Объект.НомерНачальнойСтроки ПО КоличествоСтрок Цикл
		
		//Получение значений ячеек и помещение в структуру
		СтруктураСтроки = Новый Структура("НомерСтрокиФайла", ТекНомерСтроки); //Для того чтобы можно было состыковать с какой строкой таблицы файла работаем
		
		//...
		//Текст обработчика - получение данных из таблицы файла.
		
		//Заменяем ключи структуры на нужные нам. Номера колонок указываем так же - какие нам нужны
		СтруктураСтроки.Вставить("Заголовок1", ПолучитьЗначениеЯчейки(Источник, 1, ТекНомерСтроки));
		СтруктураСтроки.Вставить("Заголовок2", ПолучитьЗначениеЯчейки(Источник, 2, ТекНомерСтроки));
		СтруктураСтроки.Вставить("Заголовок3", ПолучитьЗначениеЯчейки(Источник, 3, ТекНомерСтроки));
		СтруктураСтроки.Вставить("Заголовок4", ПолучитьЗначениеЯчейки(Источник, 4, ТекНомерСтроки));
		
		//...
		
		//Помещаем сформированную структуру в массив
		МассивОбработки.Добавить(СтруктураСтроки);
	КонецЦикла;
	
	//Закрываем обработчик
	ТекстОшибки = ЗакрытьОбработчик(Источник, СтруктураCOMОбъектов);
	Если ЗначениеЗаполнено(ТекстОшибки) Тогда
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки);
		Возврат;
	КонецЕсли;
	
	//Передаем массив на сервер для уже собственно загрузки данных
	//Если установлена галочка, то выводим загруженные данные пользователю на просмотр в виде табличного документа.
	//Пользователь может отменить дальнейшую обработку, если его что-то не устраивает в данных.
	Если Не Отказ Тогда
		Если Объект.ОтображатьЗагруженныеДанные Тогда
			МожноПродолжатьЗагрузку = ОткрытьФормуМодально("ВнешняяОбработка.БолванкаИмпортаИзExcelИOpenOffice.Форма.ФормаРезультатаЗагрузки", Новый Структура("МассивОбработки", МассивОбработки), ЭтаФорма);
			Если МожноПродолжатьЗагрузку Тогда
				ОбработатьПолученныеДанныеНаСервере(МассивОбработки);
			Иначе
				ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Обработка прервана!");
			КонецЕсли;
		Иначе
			ОбработатьПолученныеДанныеНаСервере(МассивОбработки);
		КонецЕсли;
	КонецЕсли;
		
КонецПроцедуры //ВыполнитьЗагрузку()

&НаСервере
Процедура ОбработатьПолученныеДанныеНаСервере(МассивОбработки)
	
	Для Каждого СтруктураСтроки Из МассивОбработки Цикл
		
		//...
		//Текст обработчика - загрузка данных из полученного массива структур строк.
		//...
		
	КонецЦикла;
	
	ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Обработка завершена!");
	
КонецПроцедуры //ОбработатьПолученныеДанныеНаСервере()

...не заглядывая в остальные места )))

В общем свой код вставляйте тут:

и тут:

 

Сами куски кода работы с COM-объектами естественно не мои - по работе с экселем уже и не вспомню откуда брал изначально, а по Опен офису помогла вот эта статья: 1С и работа с Excel, OpenOffice/LibreOffice, ADODB (за что огромное спасибо автору!)

Для понимания работы, ну и собственно проверки работоспособности обработки - добавил кнопочку, которая сохранит из бинарного макета обработки на диск тестовый файл Excel, чтобы его можно было бы выбрать и протестировать работу загрузчика.

Прошу помидорами в комментах не закидывать - еще раз, не претендую на какую-либо оригинальность, просто причесал инструмент под себя, и решил, что, может, еще кому пригодится ))

Разрабатывалось на платформе 8.3.16, но будет работать и на более старых версиях.

эксель ексель excel open libre OpenOffice LibreOfice загрузка обработка таблица

См. также

Загрузка номенклатуры из 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 руб.

29.10.2014    210931    630    526    

445

Загрузка номенклатуры 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 форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 09.04.2024, версия 9.9 - 9.10)

14400 руб.

20.11.2015    151282    366    376    

502

Маркетплейсный загрузчик для 12-ти маркетплейсов в 1С:БП 3, УТ 11, КА 2, ERP, УНФ

Загрузка и выгрузка в 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 дней БЕСПЛАТНОГО пользования!

1800 руб.

12.08.2021    32226    240    63    

122

SALE! 30%

Распознавание и загрузка сканов в 1С "одним нажатием": УПД, ТОРГ-12, накладные, счета, номенклатура, заказы и т.д.

Загрузка и выгрузка в 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С и нажимаете кнопку "Распознать и загрузить".

6000 5520 руб.

04.06.2019    101763    298    173    

314

Загрузка данных отчета о реализации товаров из Excel файла СберМегаМаркет

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

Загрузка данных отчета о реализации товаров из сервиса СберМегаМаркет для конфигурации: Бухгалтерия предприятия, редакция 3.0; Управление торговлей, редакция 11 и Управление нашей фирмой, редакция 3.0 в документ "Отчет комиссионера (агента) о продажах".

4800 руб.

07.06.2022    15322    81    0    

62

SALE! 20%

Загрузка документов и номенклатуры из Excel в 1С "одним нажатием": УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы

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

Универсальная обработка для загрузки документов из Excel в 1С. Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.). Не требует MS Office. Для поиска таблиц используются методы эвристического поиска. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д. Содержит модуль работы с электронной почтой и api-загрузчик отчетов о продажах маркетплейсов.

5000 4000 руб.

09.11.2016    215634    928    886    

942
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. kembrik 10 10.06.21 09:08 Сейчас в теме
Про оригинальность не скажу, скажу за универсальность. Очень часто при парсинге Excel от иностранных партнеров хочется с одной стороны сохранить заголовки таблицы для обращения к ним через точку (или сходным по удобству способом), с другой стороны - обработка не должна падать, если ключ структуры будет начинается с числа, Unicode символов и тому подобного. Опять же иногда приходится нормализовывать к одному типу, при вашем подходе если не прописать заранее, то придется каждый раз смотреть, как незаполненную ячейку преобразовывать, как 0 или как "". В конце концов остановились на подходе - каждую колонку в отдельный массив без заголовка, только значения, эти колонки в другой массив, где по индексу мы как раз нужную колонку и получим, в первой строке массива массивов (индекс(0)) - имена колонок, а в первой строке массива по колонке - индекс смещения первой строки. И вот эту вот красоту удобно потом проверять на предмет всё ли загрузилось (ибо известные подходы определения конца таблицы бывает, сбоят), обращаться к значениям практически по координатной плоскости, короче, удобно
2. Homyak 19 10.06.21 12:59 Сейчас в теме
Спасибо за мнение, просто у меня это скорее "гаечный ключ" программисту для решения конкретной разовой задачи, а не постоянно используемый механизм. Поэтому я не заморачивался на тему контроля и надежности.
3. Cерый 25 11.06.21 12:40 Сейчас в теме
Предлагаю рассмотреть вариант помещения запрашиваемых данных/именованных диапазонов Excel в МенеджерВременныхТаблиц, тогда на уровне обработки данные Excel можно будет извлекать запросом 1С.
Оставьте свое сообщение