Получение ссылок из Excel

04.06.21

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

Гиперссылки в Excel недоступны при классическом чтении ТабличныйДокумент.Прочитать(). Их можно получить через COM соединение, но остаётся открытым вопрос - как это сделать, не используя внешние средства.

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

Наименование Файл Версия Размер
Получение ссылок из Excel:
.epf 7,50Kb
33
.epf 7,50Kb 33 Скачать бесплатно

Контекст

Из отчета по чекам ofd.ru нужно получать ссылки на сформированные чеки, но ссылки реализованы не в виде обычной строки, а в виде гиперссылки. Типовой механизм загрузки Excel файла через ТабличныйДокумент.Прочитать() такие ссылки не видит.

Было опробовано 2 варианта (оба рабочих):

1. Использование COM объекта. Метод в принципе рабочий, но очень низкая производительность.

2. Использование того факта, что xlsx по сути архив с xml документами.

Ограничения

Здесь не приводится законченное решение, только подход. У меня формат файла жёстко зафиксирован, поэтому универсальные решения не рассматривались.

Получение ссылок через распаковку архива

Общий принцип следующий - получаем файл ссылок "sheet1.xml.rels" - сохраняем из него соответствие идентификаторов ссылкам, а затем обрабатываем файл листа "sheet1.xml".

&НаСервере
Процедура ЗагрузитьДанныеЧековОФД(Адрес)
	
	ДвоичныеДанные = ПолучитьИзВременногоХранилища(Адрес);
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xlsx");
	ИмяВременногоКаталога = ПолучитьИмяВременногоФайла();
	Ссылки = Новый Соответствие;
	
	Попытка
		
		ДвоичныеДанные.Записать(ИмяВременногоФайла);
		
		ЧтениеАрхива = Новый ЧтениеZipФайла(ИмяВременногоФайла);
		ЭлементАрхиваДанные = ЧтениеАрхива.Элементы.Найти("sheet1.xml");
		ЭлементАрхиваСсылки = ЧтениеАрхива.Элементы.Найти("sheet1.xml.rels");
		
		ЧтениеАрхива.Извлечь(ЭлементАрхиваДанные, ИмяВременногоКаталога, РежимВосстановленияПутейФайловZIP.НеВосстанавливать);
		ЧтениеАрхива.Извлечь(ЭлементАрхиваСсылки, ИмяВременногоКаталога, РежимВосстановленияПутейФайловZIP.НеВосстанавливать);
		
		ЧтениеАрхива.Закрыть();
		
		ЧтениеXML = Новый ЧтениеXML;
		ЧтениеXML.ОткрытьФайл(ИмяВременногоКаталога + "/sheet1.xml.rels");
		ПостроительDOM = Новый ПостроительDOM;
		Документ = ПостроительDOM.Прочитать(ЧтениеXML);
		ЧтениеXML.Закрыть();
		
		Если Документ.ДочерниеУзлы.Количество() = 1 Тогда
		
			Для каждого ЭлементСсылки Из Документ.ДочерниеУзлы[0].ДочерниеУзлы Цикл
			
				Тип = ЭлементСсылки.ПолучитьАтрибут("Type");
				ИД = ЭлементСсылки.ПолучитьАтрибут("Id");
				ЗначениеСсылки = ЭлементСсылки.ПолучитьАтрибут("Target");
				
				Если Тип <> "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" Тогда
					Продолжить;
				КонецЕсли;
				
				Ссылки.Вставить(ИД, ЗначениеСсылки);
			
			КонецЦикла; 
		
		КонецЕсли;
		
		ЧтениеXML = Новый ЧтениеXML;
		ЧтениеXML.ОткрытьФайл(ИмяВременногоКаталога + "/sheet1.xml");
		ПостроительDOM = Новый ПостроительDOM;
		Документ = ПостроительDOM.Прочитать(ЧтениеXML);
		ЧтениеXML.Закрыть();
		
		Если Документ.ДочерниеУзлы.Количество() = 1 Тогда
		
			УзелКниги =Документ.ДочерниеУзлы[0];
			
			Для каждого ЭлементЛиста Из УзелКниги.ДочерниеУзлы Цикл
			
				Если Тип(ЭлементЛиста) <> Тип("ЭлементDOM")
					Или ЭлементЛиста.ИмяУзла <> "hyperlinks" Тогда
				
					Продолжить;
				
				КонецЕсли;
				
				Для каждого ЭлементСсылки Из ЭлементЛиста.ДочерниеУзлы Цикл
				
					АдресЯчейки = ЭлементСсылки.ПолучитьАтрибут("ref");
					ИД = ЭлементСсылки.ПолучитьАтрибут("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "id");
					Ссылка = Ссылки[ИД];
					
					Если Ссылка <> Неопределено Тогда
					
						НоваяСтрокаСсылки = ТаблицаСсылок.Добавить();
						НоваяСтрокаСсылки.АдресЯчейки = АдресЯчейки;
						НоваяСтрокаСсылки.Ссылка = Ссылка;
					
					КонецЕсли; 
				
				КонецЦикла; 
			
			КонецЦикла; 
		
		КонецЕсли; 
		
	Исключение
		
	КонецПопытки;

	УдалитьФайлы(ИмяВременногоФайла);
	УдалитьФайлы(ИмяВременногоКаталога);

КонецПроцедуры

Платформа 8.3.14.

Excel Гиперссылки

См. также

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

446

Маркетплейсный загрузчик для 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    32662    261    65    

127

Загрузка номенклатуры 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    152164    368    376    

503

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    217511    936    886    

947

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

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

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

4800 руб.

07.06.2022    15512    83    0    

64

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    102489    299    173    

315
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Jimbo 9 11.06.21 09:23 Сейчас в теме
Весьма оригинально и элегантно!
2. olejjon_123 11.06.21 10:08 Сейчас в теме
Согласен, как раз искал эту информацию
Оставьте свое сообщение