27.07.16 — 17:02
Добавляю в отчет в экселе гиперссылки с помощью следующего кода:
excel = Новый COMОбъект(«Excel.Application»);
Книга = excel.WorkBooks.Open(ПутьКФайлуотчета);
List = Книга.Sheets(1);
ВсегоСтрок = List.Cells(1,1).SpecialCells(11).Row;
Для i=1 по ВсегоСтрок цикл
Hyperlink = «…»;
List.Hyperlinks.Add(List.Cells(i,5), Hyperlink, , , СокрЛП(List.Cells(i,5).Text));
КонецЦикла;
Все работает, но при большом количестве строк процесс занимает много времени, хотелось бы его ускорить, кто-нибудь может предложить более быстрый вариант?
1 — 27.07.16 — 17:05
у нас так:
Ячейка = Лист.Cells(Строка, й0);
Ячейка.Hyperlinks.Add(Ячейка, ГиперСсылка);
2 — 27.07.16 — 17:07
(1) ну это тоже самое)
3 — 27.07.16 — 17:12
Хотелось бы посмотреть на вариант работы с Excel через ADODB… как через него вставить гиперссылки?
4 — 27.07.16 — 17:51
Есть вообще какие-нибудь хорошие библиотеки для работы с файлами в формате xlsx помимо COMОбъект(«Excel.Application»), который использовать вроде как не рекомендует Майкрософт?
5 — 27.07.16 — 18:03
Запиши макрос средствами EXCEL в личную книгу макросов и вызывай макрос из 1С (если задача локальная то в разы быстрее)
6 — 27.07.16 — 19:32
>>Все работает, но при большом количестве строк процесс занимает много времени, хотелось бы его ускорить, кто-нибудь может предложить более быстрый вариант?
Сформируй табличный документ с гиперссылками, сохрани в xlsx
>>помимо COMОбъект(«Excel.Application»), который использовать вроде как не рекомендует Майкрософт?
наркоман штоле©
>>если задача локальная то в разы быстрее
и ты наркоман
Еще я у тебя в коде Application.ScreenUpdating = Ложь
не вижу
7 — 27.07.16 — 19:43
Средствами 1С записать xlsx, вместо гиперссылки какое-нибудь значение.
Распаковать файл и поменять текст на гиперссылки, запаковать обратно.
Предварительно сделать пример файла с гипер сылкой, чтобы было понятно что писать в xml.
Сам так не делал, предположил просто. ))
8 — 27.07.16 — 21:46
Невидимость там включить…
9 — 28.07.16 — 10:03
(6)Сформируй табличный документ с гиперссылками, сохрани в xlsx
Не очень понял, как в табличный документ 1С можно вставить гиперссылки?..
Application.ScreenUpdating = Ложь
Это зачем?
10 — 28.07.16 — 10:07
(7) да, чисто теоретически можно распаковать файл xlsx и работать с xml файлами. Однако трудоемкость данной задачи приличная)
11 — 28.07.16 — 10:16
(6)>>помимо COMОбъект(«Excel.Application»), который использовать вроде как не рекомендует Майкрософт?
наркоман штоле©
https://support.microsoft.com/ru-ru/kb/257757
Корпорация Microsoft не советует производить и не поддерживает серверной автоматизации Office.
12 — 28.07.16 — 10:17
Корпорация Microsoft на сегодняшний день не рекомендует производить и не поддерживает автоматизацию программ из пакета Microsoft Office с помощью автоматических, неинтерактивных клиентских приложений или компонентов (включая ASP, DCOM и службы NT), поскольку при запуске в этом окружении программы пакета Office могут работать нестабильно или зависать.
13 — 28.07.16 — 13:21
(9) Application.ScreenUpdating = Ложь отключает обновление экрана Excel и ускоряет его работу.
(11) Ты это &НаСервере запускаешь?
Dolphinbet
14 — 28.07.16 — 15:42
(13) да, на сервере (в фоновом задании формируются отчеты, сохраняются в эксель и обрабатываются определенным образом). Так на экране и так ничего не отображается…
Автор Сарычев Владислав, 21 мая 2019, 13:04
0 Пользователей и 1 гость просматривают эту тему.
Выгружаю из Эксель-файла в 1С данные. В файле есть гиперссылка (путь к файлу). Нашел через отладчик , в каком реквизите (Эксель.ActiveSheet.Cells(Строка,Колонка).Hyperlinks[0].Addres) находится путь, но программно не могу его вытащить. Как программно обратиться к Эксель.ActiveSheet.Cells(Строка,Колонка).Hyperlinks[0].Addres?
Работаю в 1С:Предприятие 8.3 (8.3.11.3034)
&НаКлиенте
Процедура Прочитать(Команда)
Если ИмяФайла = «» Тогда
Сообщить(«Файл не выбран» + ОписаниеОшибки());
Возврат;
КонецЕсли;
Попытка
Эксель = Новый COMОбъект(«Excel.Application»);
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
Книга = Эксель.WorkBooks.Open(ИмяФайла);
Лист = Книга.WorkSheets(1);
КоличествоЛистов = Книга.Sheets.Count;
ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
Для Строка = 1 По ВсегоСтрок Цикл
Для Колонка = 1 По ВсегоКолонок Цикл
Гиперссылка = СокрЛП(Эксель.ActiveSheet.Cells(Строка,Колонка).Hyperlinks);
ОбработкаПрерыванияПользователя();
КонецЦикла;
КонецЦикла;
Эксель.Application.Quit();
КонецПроцедуры
(0) что ЗНАЧИТ: «программно его вытащить».??
Вы же пишете: Гиперссылка = СокрЛП(Эксель.ActiveSheet.Cells(Строка,Колонка).Hyperlinks);
а НЕ: Гиперссылка = СокрЛП(Эксель.ActiveSheet.Cells(Строка,Колонка).Hyperlinks[0].Addres);
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают
при попытке написать
Гиперссылка = СокрЛП(Эксель.ActiveSheet.Cells(Строка,Колонка).Hyperlinks[0].Addres);
выдает ошибку
Суть моей просьбы: Мне нужна гиперссылка (путь к файлу), то бишь его значение.
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают
Выдает ошибку «Получение элемента по индексу для значения не определено»
Попробуйте вместо Hyperlinks[0] написать
Hyperlinks.Item(0)
{ВнешняяОбработка.РаботаcEXEl.Форма.Форма.Форма(23)}: Ошибка при вызове метода контекста (Hyperlinks)
Значение1 = СокрЛП(Эксель.ActiveSheet.Cells(Строка,Колонка).Hyperlinks(0));
по причине:
Произошла исключительная ситуация (0x8002000b)
-
Здравтсвуйте!
надо сохранить табличный документ в excel и передать туда ссылкуТабДок.Записать(СокрЛП(ФайлВыгрузки),"XLS"); Ексель = Новый COMОбъект("Excel.Application"); Прайс = Ексель.Workbooks.Open(ФайлВыгрузки); Ячейка = Прайс.Sheets(1).Cells(5,7); Прайс.Sheets(1).Hyperlinks.Add(Ячейка,"http://rambler.ru";,,);
гиперссылка работает очень странно… то есть , нужно несколько раз нажать на нее чтобы активизировать.
и как задать отображаемое имя???спасибо
Используйте тэг
-
Offline
BabySG
Администраторы
Команда форума
Администратор- Регистрация:
- 10 июн 2007
- Сообщения:
- 11.853
- Симпатии:
- 18
- Баллы:
- 29
Вас интересует ScreenTip и TextToDisplay
-
Извините, действительно новичок …
знаю что нужно ScreenTip и TextToDisplay, но не знаю как из 1с это сделать.Прайс.Sheets(1).Hyperlinks.Add(Ячейка,"http://rambler.ru","","Microsoft Web Site", "Текст...");
не работает
-
Прайс.Sheets(1).Hyperlinks.Add(Ячейка,"http://rambler.ru","","Microsoft Web Site","Подробно...");
Не работает!!!!
отображается Подробно… , но как киперссылка не срабатывает!!!
помогите, плиз!!!!!!!!!!! -
Offline
BabySG
Администраторы
Команда форума
Администратор- Регистрация:
- 10 июн 2007
- Сообщения:
- 11.853
- Симпатии:
- 18
- Баллы:
- 29
У меня вот так работает нормально:
ТаблицаExcel = Новый COMОбъект("Excel.Application"); КнигаExcel = ТаблицаExcel.Workbooks.Add(); СтраницаExcel = КнигаExcel.Worksheets(1); СтраницаExcel.Cells(1, 1).Hyperlinks.Add(СтраницаExcel.Cells(1, 1), "http://www.mail.ru",, "Ссылка", "Ссылка на мэйлру" );
-
При создании нового ссылка работает, а вот при открытии и изменении нет((((
-
Ексель = ПолучитьCOMОбъект(ФайлВыгрузки);
ошибка — Ошибка получения объекта COM: Класс не зарегистрирован
-
Offline
BabySG
Администраторы
Команда форума
Администратор- Регистрация:
- 10 июн 2007
- Сообщения:
- 11.853
- Симпатии:
- 18
- Баллы:
- 29
Не догнал…ФайлВыгрузки — это что такое и чему равно?
-
ТабДок.Записать("D:выгрузка.xls","XLS"); Ексель = Новый COMОбъект("Excel.Application"); Книга = Ексель.Workbooks.Open("D:выгрузка.xls"); Страница = Книга.WorkSheets(1); Страница.Hyperlinks.Add(Страница.Cells(5,7),"http://rambler.ru",,"Ссылка", "Рамблер..."); Книга.Save(); Книга.Close(); Ексель.Quit();
Не работает….
при создании нового документа ексель работает. а при открытии сохраненного документа, куда надо добавить ссылку нет -
Спасибо большое!!!
все заработало!!! моей радости нет предела.. -
Offline
BabySG
Администраторы
Команда форума
Администратор- Регистрация:
- 10 июн 2007
- Сообщения:
- 11.853
- Симпатии:
- 18
- Баллы:
- 29
Сейчас глянем…
PS. Пока писал, уже до меня посмотрели
-
Offline
sdemon72
- Регистрация:
- 12 сен 2008
- Сообщения:
- 11
- Симпатии:
- 0
- Баллы:
- 1
Так а как сделать то? У меня те же грабли. Пробовал так:
Екс.ActiveSheet.Cells(ТекСтрокаЕкс, 3).Hyperlinks.Add(Екс.ActiveSheet.Cells(ТекСтрокаЕкс, 3), ТекАдресКартинки);
и так
Екс.ActiveSheet.Hyperlinks.Add(Екс.ActiveSheet.Cells(ТекСтрокаЕкс, 3), ТекАдресКартинки);
и так
Екс.ActiveSheet.Hyperlinks.Add(Екс.ActiveSheet.Cells(ТекСтрокаЕкс, 3), ТекАдресКартинки,"","Ссылка","Текст");
В экселе открываешь — выглядит как ссылка, но не ведет себя как ссылка. Причем если при открытом документе еще раз запускаю обработку — оно видно как перерисовавает ячейки, и ссылки становятся рабочими. Где чего добавить?
-
Offline
sdemon72
- Регистрация:
- 12 сен 2008
- Сообщения:
- 11
- Симпатии:
- 0
- Баллы:
- 1
Ага, просек тему.
Дело в том, что, поленившись создавать шапку програмным путем, я сохранял объект 1с «Таблица» в формат XLS, затем открывал его (Екс.workbooks.Open(ИмяФайлаПрайса)) и забивал туда строки. При сохранении полученного документа он сохранялся как Excel95, и поэтому ссылки не сохранялись (видимо не поддерживаются).
Переделал программу, чтобы документ XLS создавался «с нуля» — теперь все тип-топ :unsure: -
Offline
alp
Опытный в 1С- Регистрация:
- 8 янв 2009
- Сообщения:
- 434
- Симпатии:
- 0
- Баллы:
- 26
У меня Проблема как сделать ссылку на себя, тоесть на другую ячейку ??
Ячейка= Данные.Sheets(1).Cells(3,1); Данные.Sheets(1).Hyperlinks.Add(Ячейка,Данные.sheets(1).Range("A160"));
не работает , почему не понимаю.
-
Offline
alp
Опытный в 1С- Регистрация:
- 8 янв 2009
- Сообщения:
- 434
- Симпатии:
- 0
- Баллы:
- 26
Можно ли получить адрес из уже существующей гиперссылки ?
-
Offline
myr4ik07
- Регистрация:
- 10 авг 2013
- Сообщения:
- 10
- Симпатии:
- 0
- Баллы:
- 1
А ссылку поставить на изображение как?
4 / 4 / 0 Регистрация: 16.01.2013 Сообщений: 1,228 |
|
1 |
|
1C 8.x Гиперссылка на ячейку в макете29.01.2016, 16:28. Показов 13554. Ответов 9
Можете показать пример как в макете нажимая на ячейку с текстом (имеет гиперссылку ) чтобы открывался файл «Файл.dot».
0 |
Yanush 162 / 158 / 62 Регистрация: 28.09.2013 Сообщений: 293 |
||||
29.01.2016, 17:43 |
2 |
|||
Есть такие вещи: Вот пример: ТабДок на форму.
0 |
Ermak27 4 / 4 / 0 Регистрация: 16.01.2013 Сообщений: 1,228 |
||||
01.02.2016, 09:40 [ТС] |
3 |
|||
Yanush, что то не получилось у меня, может что то не так объяснил. Вот код открытия макета
В макете есть текст, на одну из ячейки я поставил гиперссылку, при нажатии на эту ячейку должен открываться документ «Файл.dot».
0 |
162 / 158 / 62 Регистрация: 28.09.2013 Сообщений: 293 |
|
01.02.2016, 16:51 |
4 |
Создай реквизит формы тип ТабличныйДокумент и перекинь его на форму. Все то, что ты сформировал выведи в него. А дальше у табличного документа определи событие Выбор. В него передается ячейка (или область), на которую ты нажимаешь (то, что выше постом).
0 |
4 / 4 / 0 Регистрация: 16.01.2013 Сообщений: 1,228 |
|
01.02.2016, 17:11 [ТС] |
5 |
Yanush, создать реквизит в макете или где? Я же про макет говорю
0 |
162 / 158 / 62 Регистрация: 28.09.2013 Сообщений: 293 |
|
01.02.2016, 19:40 |
6 |
Может так понятней будет. Миниатюры
0 |
4 / 4 / 0 Регистрация: 16.01.2013 Сообщений: 1,228 |
|
02.02.2016, 08:50 [ТС] |
7 |
Yanush, Создал реквизит ТабДок, создал форму. Реквизит имеет свойство Поле выбора. События Выбора нет, только НачалоВыбора и НачалоВыбораИзСписка.
В него передается ячейка (или область), на которую ты нажимаешь (то, что выше постом). Как передать?
0 |
162 / 158 / 62 Регистрация: 28.09.2013 Сообщений: 293 |
||
02.02.2016, 11:04 |
8 |
|
Внутри архива пример Вложения
1 |
4 / 4 / 0 Регистрация: 16.01.2013 Сообщений: 1,228 |
|
02.02.2016, 13:30 [ТС] |
9 |
Yanush, у меня управляемая обработка не открывается.
0 |
Yanush 162 / 158 / 62 Регистрация: 28.09.2013 Сообщений: 293 |
||||||||
02.02.2016, 16:57 |
10 |
|||||||
А я понял. Тогда по-другому:
Ну а у поля табличного документа есть событие Выбор. И в параметре Область будет та ячейка (или область) на которую произведено нажатие.
1 |
1С, вставить ссылку в табличный документ (макет печатной формы)
Порядок действий:
- Создать макет, добавить параметр. В свойствах параметра задать наименование реквизита «ПараметрРасшифровки»;
- Создать процедуру печати, где заполним свойство «ПараметрРасшифровки», пример процедуры:
Обратите внимание, что в свойствах табличного документа «ТабДок.ТолькоПросмотр = Истина»
&НаСервере Процедура ПечатьНаСервере() ТабДок = Новый ТабличныйДокумент; Макет = Обработки.ВставитьСсылкуВТабличныйДокумент.ПолучитьМакет("Макет"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаказПокупателя.Ссылка КАК Ссылка, | ЗаказПокупателя.Представление КАК Представление |ИЗ | Документ.ЗаказПокупателя КАК ЗаказПокупателя"; Выборка = Запрос.Выполнить().Выбрать(); ОбластьМакета = Макет.ПолучитьОбласть("Детали"); Пока Выборка.Следующий() Цикл ОбластьМакета.Параметры.Представление = Выборка.Представление; ОбластьМакета.Параметры.Ссылка = Выборка.Ссылка; ТабДок.Вывести(ОбластьМакета, Выборка.Уровень()); КонецЦикла; ТабДок.ТолькоПросмотр = Истина; ТабДок.Показать(); КонецПроцедуры