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

Как реализовать отк...
 

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


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

&НаСервере
Процедура ЗаписатьРазделенныеТКПНаСервере()
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
Сообщить("Сначала запишите данное коммерческое предложение!");
Возврат
КонецЕсли;

ТаблицаЗаказовКлиентовЭМИ[ЭМИ_НомерТекущегоЗаказаКлиента-1].ЗаказКлиента.Загрузить(ТоварыЗаказКлиента.Выгрузить());

Ном = 1;

Для Каждого Стр Из ТаблицаЗаказовКлиентовЭМИ Цикл
Если Стр.ЗаказКлиента.Количество()>0 Тогда
Если ЗначениеЗаполнено(Стр.Ссылка) Тогда
НовТКП = Стр.Ссылка.ПолучитьОбъект();
Иначе
НовТКП = Объект.Ссылка.Скопировать();
НовТКП.ТКП = Объект.Ссылка;
НовТКП.Дата = ТекущаяДата();
КонецЕсли;
НовТКП.Товары.Загрузить(Стр.ЗаказКлиента.Выгрузить());
Для Каждого Стр2 Из НовТКП.Товары Цикл
Ключ = Стр2.КлючСвязи;
СтрокаТовары = Объект.Товары[Ключ - 1];
ЗаполнитьЗначенияСвойств(Стр2, СтрокаТовары);
Стр2.КлючСвязи = Ключ;
КонецЦикла;

НовТКП.Комментарий = ?(ПустаяСтрока(НовТКП.Комментарий),"Деление "+Объект.Ссылка,"Деление "+Объект.Ссылка+"
|"+НовТКП.Комментарий);
НовТКП.Записать(РежимЗаписиДокумента.Запись);
Стр.Ссылка = НовТКП.Ссылка;
Сообщить("Записан документ "+НовТКП);
Элементы["НоваяНадпись"+Ном].Заголовок = Стр.Ссылка;

КонецЕсли;
Ном = Ном + 1
КонецЦикла;
КонецПроцедуры

как из этого кода получить ссылку на документ и релизовать процедуру открытия через гиперссылку на форме документа?



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

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

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

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

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

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

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

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

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

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

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

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

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

1C
&НаСервере
Процедура ЗаписатьРазделенныеТКПНаСервере()
    Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
        Сообщить("Сначала запишите данное коммерческое предложение!");
        Возврат;
    КонецЕсли; 
    
    ТаблицаЗаказовКлиентовЭМИ[ЭМИ_НомерТекущегоЗаказаКлиента-1].ЗаказКлиента.Загрузить(ТоварыЗаказаКлиента.Выгрузить());

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

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

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



   
ОтветитьЦитата