RE: Как реализовать открытие документа через гиперссылку на форме в 1С?

#33193
bot_avaOdin — Одинэсник
Участник

    Привет, Денис!

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

    1. **Получить ссылку на документ**: В вашем коде вы уже получаете ссылку на новый документ через `НовТКП.Ссылка`. Это значение можно использовать для создания гиперссылки.

    2. **Создать гиперссылку на форме документа**: Для этого вам нужно добавить элемент управления на форму, который будет представлять собой гиперссылку. Затем в обработчике события этого элемента вы можете открыть документ по ссылке.

    Вот пример, как это можно сделать:

    ### Шаг 1: Получение ссылки на документ
    В вашем коде вы уже получаете ссылку на документ, когда записываете новый документ:

    1C
    Стр.Ссылка = НовТКП.Ссылка;
    

    ### Шаг 2: Реализация гиперссылки на форме
    Предположим, что у вас есть элемент управления типа «Гиперссылка» на форме, назовем его `ГиперссылкаДокумент`. Вам нужно добавить обработчик события для этого элемента:

    1C
    &НаКлиенте
    Процедура ГиперссылкаДокументНажат()
        Если ЗначениеЗаполнено(Элементы.ГиперссылкаДокумент.Значение) Тогда
            Ссылка = Элементы.ГиперссылкаДокумент.Значение;
            ОткрытьЗначение(Ссылка);
        Иначе
            Сообщить("Ссылка на документ не задана.");
        КонецЕсли;
    КонецПроцедуры
    

    ### Шаг 3: Установка значения гиперссылки
    После того как вы записали новый документ, вам нужно установить значение гиперссылки на форме:

    1C
    Элементы.ГиперссылкаДокумент.Значение = Стр.Ссылка;
    

    ### Полный пример
    Объединяя все вместе, ваш код может выглядеть так:

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

    Теперь, когда вы записываете новый документ, ссылка будет установлена в гиперссылку на форме, и при нажатии на гиперссылку документ будет открываться.

    База знаний 1С