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

Публикация № 1453620 04.06.21

Разработка - Обмен данными 1С - Загрузка и выгрузка в Excel

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

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

Контекст

Из отчета по чекам 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:

.epf 7,50Kb
16
.epf 7,50Kb 16 Скачать бесплатно

Специальные предложения

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

См. также

Чтение файлов *.xlsx средствами 1С 8.2

Загрузка и выгрузка в Excel v8 1cv8.cf Россия Бесплатно (free)

Формат файлов *.xlsx представляет собой фактически ZIP-архив, внутри которого находятся xml-файлы, что позволяет считывать значения ячеек исключительно средствами 1С 8.2

13.06.2012    39996    1531    Abadonna    43    

Форма МП-сп статистика Росстат

Универсальные печатные формы Статистические Загрузка и выгрузка в Excel v8 БП2.0 Бесплатно (free)

Регламентная форма статистики МП-сп для Росстата под 1С:Бухгалтерия 1.6.23-30 и Бухгалтерия 2.0.18-19 на платформах 8.1 и 8.2. Заполняет, выводит печатную форму. Возможности отправки в электронном виде (XML-файл для Такском Спринтер) пока нет.

31.03.2011    51404    249    milov.aleksey    5    

Еще одна обработка по загрузке цен номенклатуры из MS Excel. (код открыт)

Ценообразование, прайсы Обработка документов Загрузка и выгрузка в Excel Ценообразование, анализ цен Ценообразование, анализ цен v8 КА1 УТ10 УПП1 1С7:ТиС Бесплатно (free)

Простая и понятная обработка для формирования документа "Установка цен номенклатуры" по данным из файла *.xls

25.12.2010    16510    560    chesnokov-a-v    9    

Анализ Продаж Торговля+Склад 9.2 -> Excel (OLAP)

Загрузка и выгрузка в Excel Анализ учета Управленческие Ценообразование, анализ цен Ценообразование, анализ цен v77::ОУ v77::БУ v77::Расчет 1cv7.md Бесплатно (free)

Пример создания сводной таблицы Эксель из ШТАТНОГО отчета 1С. OLAP своими руками. (Можно рассматривать как PivotTable example)

12.10.2010    15315    128    dav405    1    

Загрузка из Excel табличных частей Товары в документы 8.1, 7.7

Обработка документов Загрузка и выгрузка в Excel Учет ТМЦ Учет ТМЦ v8 БП2.0 УТ10 УПП1 1С7:Бух 1С7:ЗиК 1С7:ТиС Бесплатно (free)

Для 1С 8.1 и 7.7. Также имеется возможность загрузки номеров ГТД и Стран происхождения. Проверялось на 1С 8 Бухгалтерия, 1С 7.7 Комплексная.

15.06.2010    14636    573    ilya005    18    

АЦРК: Сопоставление справочников из разных баз данных

Анализ учета Перенос данных из 1C8 в 1C8 Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

Обработка позволяет сопоставить содержимое справочников из разных баз данных через общий MXL-файл. Сопоставление производится по коду или наименованию. Актуально в основном для справочников номенклатуры, контрагентов или сотрудников для решения проблем при обменах между базами данных.

26.04.2010    18691    398    acrk    4    

Загрузка из Excel в ТаблицуЗначений 8.1 (с помощью ADO DB)

Загрузка и выгрузка в Excel Практика программирования v8 1cv8.cf Бесплатно (free)

Внешняя обработка для загрузки данных из Excel в ТаблицуЗначений 8.1

19.02.2010    11872    561    dav405    8    

Выгрузка в Excel c помощью ADO

Загрузка и выгрузка в Excel Практика программирования v7.7 1cv7.md Бесплатно (free)

По мотивам http://infostart.ru/public/65045/ Записывает произвольную таблицу значений в файл Эксель, с сохранением типов. Замечание(!!), преобразование нецелого числа зависит от региональных настроек, то есть, если у Вас нерусские ("."), то надо закомментировать строку =СтрЗаменить(

04.02.2010    13559    290    dav405    9    

Загрузка данных из таблицы Excel в два шага

Загрузка и выгрузка в Excel Практика программирования v7.7 1cv7.md Бесплатно (free)

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

24.01.2010    11790    430    olgad946    31    

Загрузка документов из Excel

Загрузка и выгрузка в Excel Ценообразование, прайсы Обработка документов Ценообразование, анализ цен Ценообразование, анализ цен v8 УТ10 Россия Бесплатно (free)

Обработка (старался сделать универсальной) позволяет загружать данные из Excel. Есть возможность выбора соответствия колонок.

23.11.2009    17123    928    Tarlich    34    

Загрузить все данные со всех страниц файла Excel

Загрузка и выгрузка в Excel Практика программирования v8 1cv8.cf Бесплатно (free)

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

11.11.2009    13669    592    Мастер1С    12    

Выгрузка в OpenOffice Calc. Платформа 7.7. Формирование прайса и формы заказа

Загрузка и выгрузка в Excel Практика программирования Разработка внешних компонент v77::ОУ 1cv7.md Бесплатно (free)

Выгрузка в OpenOffice Calc (форматирование, формулы, гиперссылки, закрепление областей, добавление листов, удаление сетки).

28.10.2009    19907    285    a_shpak    4    

MiracleV8: Расширенная версия

Разработка внешних компонент Загрузка и выгрузка в Excel Россия Бесплатно (free)

Универсальная компонента для 1С 7.7 и 1С 8.x

24.10.2009    68666    4484    Abadonna    350    

Загрузка в УП 10.3 табличных частей документов поступления с сериями (+возможность использовать формулы при настройке)

Загрузка и выгрузка в Excel Обработка документов v8 УТ10 Россия Бесплатно (free)

Загрузка в УП 10.3 табличных частей документов поступления с сериями (+возможность использовать формулы при настройке) Не ругайте сильно, это для пробы. Принимаю конструктивную критику и предложения, в частности по возможности сотрудничества (интересует защита обработок, улучшения интерфейса и т.д. ), есть еще несколько реализаций (ICQ -загрузка по артикулам, создание заказов; система аналогов товаров, продажа через собственную фирму и т.д.). В общем жду откликов. P.S. готова загрузка прайс-листов в документ установки цен контрагентов.

22.10.2009    6604    169    dosen    3    

Загрузка из EXCEL в документ "Поступление ТМЦ"

Загрузка и выгрузка в Excel Обработка документов v77::ОУ 1С7:ТиС Россия Бесплатно (free)

Загрузка из EXCEL в документ "Поступление ТМЦ"

06.10.2009    10551    300    Kertman    20    

Универсальная дозагрузка справочников из файлов Excel

Обработка справочников Загрузка и выгрузка в Excel v77::ОУ v77::БУ v77::Расчет 1cv7.md Бесплатно (free)

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

28.09.2009    20135    710    swimdog    20    

Загрузка номенклатуры из EXCEL

Загрузка и выгрузка в Excel Обработка справочников v8 УТ10 Украина Бесплатно (free)

C помощью данной обработки можно легко и непринужденно загрузить справочник номенклатуры в Управление торговлей для Украины

1 стартмани

04.09.2009    7567    109    ncf    5    

Универсальная загрузка любых документов из Excel с использованием нечеткого сравнения по реквизиту типа "Справочник"

Загрузка и выгрузка в Excel Обработка документов Разработка внешних компонент v7.7 1cv7.md Бесплатно (free)

В помощь антиглобалистам! Для мелких и очень мелких 1С - это дорого (ноутбук стоит дешевле). Поэтому практикуется такой порядок работы: в центральном офисе выгружают в Excel из 1С "Продажный лист"; торгуют и отмечают продажи в файле; приносят в офис вечером файл результата и загружают отчет о продажах за день. Грузить можно и заявки, и перемещения, и поступления, и списания, и счета, и все для ОС, НМА, МБП... была бы табличная часть!

02.09.2009    22652    901    ge_ni    39    

Загрузка данных из Табличного Документа + загрузка в Движения Документа

Обработка документов Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

Доработка типовой Загрузка данных из Табличного Документа с диска ИТС: добавлена загрузка в Движения Документа (проверял на операциях)

21.08.2009    27759    1197    grigr    20    

Тест группировок в Эксель. Для 1С 7.7

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

Тестовая выгрузка справочника номенклатуры в Эксель с xls-группировками. (Такие плюсики слева от листа)

12.08.2009    14864    231    dav405    12    

Печать выборки справочника с возможностью конвертации в Excel с сохранением группировок (7.7)

Загрузка и выгрузка в Excel Обработка справочников Универсальные печатные формы v7.7 1cv7.md Бесплатно (free)

Печать выборки справочника - для 7.7 С возможностью конвертации в Excel с сохранением группировок

30.06.2009    14729    496    Natalia    13    

Загрузка формы табеля Т-13 в УПП из EXCEL сохранённого из ЗИК 7.7

Перенос данных из 1С7.7 в 1C8.X Загрузка и выгрузка в Excel v8 УПП1 Бесплатно (free)

Загрузка формы табеля Т-13 в УПП из EXCEL сохранённого из ЗИК 7.7

25.06.2009    12037    113    rebuzx    1    

[ОБМЕН] Формирование файла заказа поставщику

Печатные формы документов Загрузка и выгрузка в Excel WEB Монитор заказов Монитор заказов v77::ОУ 1С7:ТиС Россия Бесплатно (free)

1C v.7.7 Внешняя печатная форма, предназначена для формирования файла заказа поставщику и выполнения с ним простейших действий. Подключается как внешняя печатная форма к документу "Заказ поставщику". Обработка простая, представляет интерес для начинающих не особо продвинутых программистов 1С.

29.05.2009    20523    207    CheBurator    2    

Загрузка данных из файлов Excel

Загрузка и выгрузка в Excel Практика программирования v8 1cv8.cf Бесплатно (free)

Обработка предназначена для загрузки данных из файлов Excel. Не имеет визуального интерфейса. Только программный вызов.

27.05.2009    5291    935    AngV    15    

Печать документа через Word (1С77)

Загрузка и выгрузка в Excel Универсальные печатные формы Практика программирования v7.7 1cv7.md Бесплатно (free)

Мини-конфигурация для 1С 7.7, демонстрирует организацию печати документа через Word.

21.05.2009    24020    991    YVolohov    39    

Пример чтения данных из экселя

Загрузка и выгрузка в Excel Обработка документов Практика программирования v8 1cv8.cf Бесплатно (free)

Пример чтения данных их экселя ФАЙЛ ОБРАБОТКИ ИСПРАВЛЕН (будет корректно работать на любой конфигурации)

19.05.2009    12032    1333    pavel_pss    14    

Загрузка номенклатуры из Екселя (полная карточка товара)

Обработка справочников Загрузка и выгрузка в Excel Оптовая торговля Учет ТМЦ Оптовая торговля Учет ТМЦ v77::ОУ 1С7:ТиС Россия Бесплатно (free)

Загрузка из екселя справочника номенклатуры (полностью всей карточки с учетом штрихов и 2-х единиц (базовой и основной))... Загружает в ТИС только Товар/ТМЦ

13.05.2009    12995    151    MikaelW    10    

Обработка "Движение" (Помощник заказа)

Загрузка и выгрузка в Excel Обработка справочников Учет ТМЦ Учет ТМЦ v77::БУ 1С7:Бух Россия БУ Бесплатно (free)

Обработка "Движение" - это практически тот же помощник заказа, только работающий не с наименованиями, а с артикулами, из-за этого он работает гораздо точнее. Изначально обработка писалась для вывода информации о движении товаров по списку артикулов в листе экселя, но в последствии обросла гораздо большим функционалом. В частности, может применяться для изменения реквизитов справочника из экселя.

11.05.2009    5471    205    Nikolaev_AV    4    

Процедуры по работе с объектами MSOffice

Загрузка и выгрузка в Excel Практика программирования v8 1cv8.cf Бесплатно (free)

Общий модуль, содержащий процедуры по чтению данных из документов MSOffice v0.5

27.04.2009    23224    1143    acsent    6    

Включение документации в форматах MS Office в базу 1С + Описание метаданных

Работа с интерфейсом Загрузка и выгрузка в Excel Документооборот и делопроизводство Документооборот и делопроизводство MS Office v8 1cv8.cf Бесплатно (free)

Думаю, что так можно было бы документировать измененные конфигурации. При реализации использовалось http://infostart.ru/projects/3670/ (респект автору), также добавил отрывки из "Конвертации данных".

09.04.2009    11753    159    mosAdm    1    

Обмен данными с ВТБ24 для зачисления на пластик

Обмен с банком Обработка документов Загрузка и выгрузка в Excel Зарплата Зарплата v77::Расчет 1С7:ЗиК Россия Бесплатно (free)

Обмен данными о номерах ПК и суммах к зачислению для ЗИК и Камин:ЗП 2.0

09.04.2009    15304    306    Berrimor    5    

Универсальный импорт в 1С из Excel (для 7.7)

Загрузка и выгрузка в Excel Практика программирования v7.7 1cv7.md Бесплатно (free)

Универсальный импорт в 1С из Excel Внешняя обработка (ert) для импорта данных из Excel файлов в 1С (7.7).

25.03.2009    21024    1495    progas    9    

Чтение/Запись документа Excel 2007 без офиса, без внешних компонент. (с примером для 7.7, 8.1 и 8.2 на управляемых формах)

Загрузка и выгрузка в Excel Практика программирования v8 1cv8.cf 1cv7.md Бесплатно (free)

Чтение/запись документ Excel 2007 без установленного Excel'а, без внешних компонент, исключительно средствами 1С (7.7, 8.1, 8.2 на управляемых формах).

24.02.2009    60401    4167    Душелов    78    

Класс для вывода отчета в Excel

Загрузка и выгрузка в Excel Практика программирования Разработка внешних компонент openconf v77::БУ 1cv7.md Бесплатно (free)

Класс для вывода отчета в Excel (выводит быстро :) Как-то попал мне, нигде больше не видел, ИМХО очень жизненный при больших отчетах.

10.02.2009    13058    304    babys    1    

Импорт Номенклатуры для 8.1

Загрузка и выгрузка в Excel Обработка справочников v8 1cv8.cf Бесплатно (free)

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

10.02.2009    11194    1004    floraukraine    7    

Импорт для всех конф семерки!

Файловые протоколы обмена, FTP Загрузка и выгрузка в Excel 1С7.7<->1C7.7 v7.7 1cv7.md Бесплатно (free)

Переносит любые справочники, документы и т.д. Работаю с ней уже год - все отлично при любом количестве строк.

06.02.2009    17539    2494    floraukraine    21    

[ExcelEditor] Чтение/запись файла Excel напрямую из 1С без Excel (формат 97/2003)

Загрузка и выгрузка в Excel Разработка внешних компонент v7.7 v8 1cv8.cf 1cv7.md Бесплатно (free)

Чтение и запись файла Excel напрямую из 1С Компонента читает и редактирует напрямую файл Excel без загрузки самого Excel (формат Microsoft Office 97/2003)

08.01.2009    51000    1220    Душелов    92