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