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

09.06.21

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Обработка по загрузке данных из Excel через COM Microsoft Excel, Open Office или Libre Office (Управляемые формы)
.epf 21,95Kb
21
21 Скачать (1 SM) Купить за 1 850 руб.

Обработка представляет собой просто заготовку для загрузки данных из файла 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 загрузка обработка таблица

См. также

SALE! 15%

Загрузка и выгрузка в Excel Оптовая торговля Печатные формы Бухгалтер Пользователь Платформа 1С v8.3 Управляемые формы Платформа 1C v8.2 1C:Бухгалтерия 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С:Розница 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С. Забудьте о ручном вводе: загружайте документы из Excel в 1С за секунды! Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С.

6000 руб.

09.11.2016    242068    1114    908    

1044

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

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

5400 руб.

12.08.2021    37880    405    68    

172

Загрузка и выгрузка в 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.02.2025, версия 9.9 - 9.15)

16800 руб.

20.11.2015    159253    390    378    

520

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

Обработки загрузки данных о продажах WildBerries предназначены для следующих конфигураций: Бухгалтерия предприятия, редакция 3.0; Управление нашей фирмой, редакция 3.0; Розница, редакция 3.0; Управление торговлей, редакция 11; Управление торговлей, редакция 10.3

4800 руб.

11.12.2019    59389    1016    3    

253

SALE! 30%

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

Кто получает документы в формате XML из различных сервисов ЭДО (формат 820 приказ ФНС 31 мая 2019) и набивает их вручную в 1С, тот наверняка хотел бы автоматизировать этот процесс. Поддержка конфигураций: Бухгалтерии 3, УПП 1.3, 1С:КА 2.4 и 1С:КА 2.5, УТ10, УТ11.4 и УТ11.5. Для бухгалтерии 3 добавлена поддержка формат 5.03 от 23/01/2025

3600 руб.

11.02.2020    94682    319    157    

232

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

Загружает данные по Акту приемки товара от ООО «Вайлдберриз» (поставок), полученный из личного кабинета в формате *.xlsx или API (FBO, FBS) в документ "Реализация (акты, накладные, УПД)" для конфигурации: Бухгалтерия предприятия, редакция 3.0; Управление торговлей, редакция 11; Комплексная автоматизация 2; ERP 2 Управление предприятием и Управление нашей фирмой 3.0

4800 руб.

24.01.2021    21267    86    0    

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