База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как реализовать открытие документа через гиперссылку на форме в 1С? › RE: Как реализовать открытие документа через гиперссылку на форме в 1С?
Привет, Денис!
Чтобы получить ссылку на документ из вашего кода и реализовать процедуру открытия через гиперссылку на форме документа, вам нужно сделать следующее:
1. **Получить ссылку на документ**: В вашем коде вы уже получаете ссылку на новый документ через `НовТКП.Ссылка`. Это значение можно использовать для создания гиперссылки.
2. **Создать гиперссылку на форме документа**: Для этого вам нужно добавить элемент управления на форму, который будет представлять собой гиперссылку. Затем в обработчике события этого элемента вы можете открыть документ по ссылке.
Вот пример, как это можно сделать:
### Шаг 1: Получение ссылки на документ
В вашем коде вы уже получаете ссылку на документ, когда записываете новый документ:
1C Стр.Ссылка = НовТКП.Ссылка;
### Шаг 2: Реализация гиперссылки на форме
Предположим, что у вас есть элемент управления типа «Гиперссылка» на форме, назовем его `ГиперссылкаДокумент`. Вам нужно добавить обработчик события для этого элемента:
1C
&НаКлиенте
Процедура ГиперссылкаДокументНажат()
Если ЗначениеЗаполнено(Элементы.ГиперссылкаДокумент.Значение) Тогда
Ссылка = Элементы.ГиперссылкаДокумент.Значение;
ОткрытьЗначение(Ссылка);
Иначе
Сообщить("Ссылка на документ не задана.");
КонецЕсли;
КонецПроцедуры
### Шаг 3: Установка значения гиперссылки
После того как вы записали новый документ, вам нужно установить значение гиперссылки на форме:
1C Элементы.ГиперссылкаДокумент.Значение = Стр.Ссылка;
### Полный пример
Объединяя все вместе, ваш код может выглядеть так:
1C
&НаСервере
Процедура ЗаписатьРазделенныеТКПНаСервере()
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
Сообщить("Сначала запишите данное коммерческое предложение!");
Возврат;
КонецЕсли;
ТаблицаЗаказовКлиентовЭМИ[ЭМИ_НомерТекущегоЗаказаКлиента-1].ЗаказКлиента.Загрузить(ТоварыЗаказаКлиента.Выгрузить());
Ном = 1;
Для Каждого Стр Из ТаблицаЗаказовКлиентовЭМИ Цикл
Если Стр.ЗаказКлиента.Количество()>0 Тогда
Если ЗначениеЗаполнено(Стр.Ссылка) Тогда
НовТКП = Стр.Ссылка.ПолучитьОбъект();
Иначе
НовТКП = Объект.Ссылка.Скопировать();
НовТКП.ТКП = Объект.Ссылка;
НовТКП.Дата = ТекущаяДата();
КонецЕсли;
НовТКП.Товары.Загрузить(Стр.ЗаказКлиента.Выгрузить());
Для Каждого Стр2 Из НовТКП.Товары Цикл
Ключ = Стр2.КлючСвязи;
СтрокаТовары = Объект.Товары[Ключ - 1];
ЗаполнитьЗначенияСвойств(Стр2, СтрокаТовары);
Стр2.КлючСвязи = Ключ;
КонецЦикла;
НовТКП.Комментарий = ?(ПустаяСтрока(НовТКП.Комментарий),"Деление "+Объект.Ссылка,"Деление "+Объект.Ссылка+"
|"+НовТКП.Комментарий);
НовТКП.Записать(РежимЗаписиДокумента.Запись);
Стр.Ссылка = НовТКП.Ссылка;
Элементы["ГиперссылкаДокумент"].Значение = Стр.Ссылка; // Установка значения гиперссылки
Сообщить("Записан документ "+НовТКП);
Элементы["НоваяНадпись"+Ном].Заголовок = Стр.Ссылка;
КонецЕсли;
Ном = Ном + 1;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаДокументНажат()
Если ЗначениеЗаполнено(Элементы.ГиперссылкаДокумент.Значение) Тогда
Ссылка = Элементы.ГиперссылкаДокумент.Значение;
ОткрытьЗначение(Ссылка);
Иначе
Сообщить("Ссылка на документ не задана.");
КонецЕсли;
КонецПроцедуры
Теперь, когда вы записываете новый документ, ссылка будет установлена в гиперссылку на форме, и при нажатии на гиперссылку документ будет открываться.