База знаний Одина – Одинэсника › Форумы › ODIN – Форум по 1С Предприятию › Как реализовать открытие документа через гиперссылку на форме в 1С? › RE: Как реализовать открытие документа через гиперссылку на форме в 1С?

Привет, Денис!
Чтобы получить ссылку на документ из вашего кода и реализовать процедуру открытия через гиперссылку на форме документа, вам нужно сделать следующее:
1. **Получить ссылку на документ**: В вашем коде вы уже получаете ссылку на новый документ через НовТКП.Ссылка
. Это значение можно использовать для создания гиперссылки.
2. **Создать гиперссылку на форме документа**: Для этого вам нужно добавить элемент управления на форму, который будет представлять собой гиперссылку. Затем в обработчике события этого элемента вы можете открыть документ по ссылке.
Вот пример, как это можно сделать:
### Шаг 1: Получение ссылки на документ
В вашем коде вы уже получаете ссылку на документ, когда записываете новый документ:
1 2 |
1C Стр.Ссылка = НовТКП.Ссылка; |
### Шаг 2: Реализация гиперссылки на форме
Предположим, что у вас есть элемент управления типа “Гиперссылка” на форме, назовем его ГиперссылкаДокумент
. Вам нужно добавить обработчик события для этого элемента:
1 2 3 4 5 6 7 8 9 10 |
1C &НаКлиенте Процедура ГиперссылкаДокументНажат() Если ЗначениеЗаполнено(Элементы.ГиперссылкаДокумент.Значение) Тогда Ссылка = Элементы.ГиперссылкаДокумент.Значение; ОткрытьЗначение(Ссылка); Иначе Сообщить("Ссылка на документ не задана."); КонецЕсли; КонецПроцедуры |
### Шаг 3: Установка значения гиперссылки
После того как вы записали новый документ, вам нужно установить значение гиперссылки на форме:
1 2 |
1C Элементы.ГиперссылкаДокумент.Значение = Стр.Ссылка; |
### Полный пример
Объединяя все вместе, ваш код может выглядеть так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
1C &НаСервере Процедура ЗаписатьРазделенныеТКПНаСервере() Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда Сообщить("Сначала запишите данное коммерческое предложение!"); Возврат; КонецЕсли; ТаблицаЗаказовКлиентовЭМИ[ЭМИ_НомерТекущегоЗаказаКлиента-1].ЗаказКлиента.Загрузить(ТоварыЗаказаКлиента.Выгрузить()); Ном = 1; Для Каждого Стр Из ТаблицаЗаказовКлиентовЭМИ Цикл Если Стр.ЗаказКлиента.Количество()>0 Тогда Если ЗначениеЗаполнено(Стр.Ссылка) Тогда НовТКП = Стр.Ссылка.ПолучитьОбъект(); Иначе НовТКП = Объект.Ссылка.Скопировать(); НовТКП.ТКП = Объект.Ссылка; НовТКП.Дата = ТекущаяДата(); КонецЕсли; НовТКП.Товары.Загрузить(Стр.ЗаказКлиента.Выгрузить()); Для Каждого Стр2 Из НовТКП.Товары Цикл Ключ = Стр2.КлючСвязи; СтрокаТовары = Объект.Товары[Ключ - 1]; ЗаполнитьЗначенияСвойств(Стр2, СтрокаТовары); Стр2.КлючСвязи = Ключ; КонецЦикла; НовТКП.Комментарий = ?(ПустаяСтрока(НовТКП.Комментарий),"Деление "+Объект.Ссылка,"Деление "+Объект.Ссылка+" |"+НовТКП.Комментарий); НовТКП.Записать(РежимЗаписиДокумента.Запись); Стр.Ссылка = НовТКП.Ссылка; Элементы["ГиперссылкаДокумент"].Значение = Стр.Ссылка; // Установка значения гиперссылки Сообщить("Записан документ "+НовТКП); Элементы["НоваяНадпись"+Ном].Заголовок = Стр.Ссылка; КонецЕсли; Ном = Ном + 1; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ГиперссылкаДокументНажат() Если ЗначениеЗаполнено(Элементы.ГиперссылкаДокумент.Значение) Тогда Ссылка = Элементы.ГиперссылкаДокумент.Значение; ОткрытьЗначение(Ссылка); Иначе Сообщить("Ссылка на документ не задана."); КонецЕсли; КонецПроцедуры |
Теперь, когда вы записываете новый документ, ссылка будет установлена в гиперссылку на форме, и при нажатии на гиперссылку документ будет открываться.