Имя: Пароль:
1C
1С v8
в отчете на СКД не могу открыть документ по клику
0 I_learn_1c
 
17.06.25
14:07
Доброго дня,
Помогите плиз разобраться в чем может быть проблема

Есть отчет на СКД, в ячейке выводится ссылка на документ.
Это точно именно ссылка, не представление и т.п. Это регистратор, поэтому тип документа разный может быть.

Но почему-то по клику на эту ячейку не могу открыть сам документ. По клику правой кнопкой тоже "Открыть" недоступно (скрин).
В аналогичном отчете, но более простом - открывается все без проблем.
Макетов никаких не назначено, обработчиков тоже. В какую сторону можно посмотреть? будто глюк какой-то

https://disk.yandex.ru/i/7iTgtieC2bE-YA
1 Волшебник
 
17.06.25
14:07
надо заполнить параметр расшифровки
2 I_learn_1c
 
17.06.25
14:08
(1) где заполнить? это не макет же
3 Волшебник
 
17.06.25
14:16
Вероятно, что при программной компоновке отчета не указывается расшифровка.

Адрес = ПоместитьВоВременноеХранилище(ДанныеРасшифровкиСКД,УникальныйИдентификатор);
ДанныеРасшифровки = Адрес ;


найдите строку:
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);

исправьте на:
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
4 I_learn_1c
 
17.06.25
15:12
сам отчет (этот проблемный) и есть расшифровка по регистратору другого отчета. В модуле объекта проблемного пусто.
Из модуля объекта основного отчета вот ниже кусок кода ПриКомпоновкеРезультата. Данные расшифровки передаются.

Т.е. в этом куске ниже:
ЭтоРасшифровка = Истина.

ВнешниеНаборыДанных - возвращает
Возврат Новый Структура("ТаблицаДанных", Запрос.Выполнить().Выгрузить());

в запросе точно возвращается именно ссылка, если отладкой смотреть на этом месте

ТаблицаДанных - это имя объекта, содержащего данные. в наборе данных. И далее поле попадает в выбранные поля, не ресурс, не в группировке.

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    НастройкиКомпоновки = КомпоновщикНастроек.ПолучитьНастройки();    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновки, ДанныеРасшифровки);    
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    
    ИсключаемыеХозОперации = РасчетСебестоимостиПрикладныеАлгоритмы.ХозяйственныеОперацииПеремещений();
    НастройкиКомпоновки.ПараметрыДанных.УстановитьЗначениеПараметра("ИсключаемыеХозОперации", ИсключаемыеХозОперации);
    
    ЭтоРасшифровка = ДанныеРасшифровки.Настройки.Отбор.Элементы.Количество() > 0
        И ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(МакетКомпоновки.Тело[МакетКомпоновки.Тело.Количество()-1],"Группировка")
        И МакетКомпоновки.Тело[МакетКомпоновки.Тело.Количество()-1].Группировка[0].ИмяПоля = "ОтчетРасшифровка";
    
    ТекстФильтра1 = "";
    ТекстФильтра2 = "";
    ТекстФильтра3 = "";
    ЗапросСОтбором = МакетКомпоновки.НаборыДанных.НаборДанныхОбъединение.Элементы.НаборДанныхОтбор.Запрос;
    ПозицияОтбораГДЕ = СтрНайти(ЗапросСОтбором, "ГДЕ");
    Если ПозицияОтбораГДЕ > 0 Тогда
        ТекстФильтра1 = Сред(ЗапросСОтбором, ПозицияОтбораГДЕ + 4);
        ТекстФильтра1 = СтрЗаменить(ТекстФильтра1, "ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)", "Организация");
        ТекстФильтра1 = СтрЗаменить(ТекстФильтра1, "ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)", "Склад");
        ТекстФильтра1 = СтрЗаменить(ТекстФильтра1, "ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)", "Номенклатура");
        
        ТекстФильтра2 = Сред(ЗапросСОтбором, ПозицияОтбораГДЕ + 4);
        ТекстФильтра2 = СтрЗаменить(ТекстФильтра2, "ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)", "Организация");
        ТекстФильтра2 = СтрЗаменить(ТекстФильтра2, "ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)", "АналитикаУчетаНоменклатуры.МестоХранения");
        ТекстФильтра2 = СтрЗаменить(ТекстФильтра2, "ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)", "АналитикаУчетаНоменклатуры.Номенклатура");
                
        ТекстФильтра3 = Сред(ЗапросСОтбором, ПозицияОтбораГДЕ + 4);
        ТекстФильтра3 = СтрЗаменить(ТекстФильтра3, "ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)", "Партии.Организация");
        ТекстФильтра3 = СтрЗаменить(ТекстФильтра3, "ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)", "Партии.АналитикаУчетаНоменклатуры.МестоХранения");
        ТекстФильтра3 = СтрЗаменить(ТекстФильтра3, "ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)", "Партии.АналитикаУчетаНоменклатуры.Номенклатура");
        
    КонецЕсли;
        
    Если ЭтоРасшифровка Тогда
        
        Отчет = Отчеты._ок_РасшифровкаСверкиПоПартиямТоваров.Создать();
        Настройки = Отчет.КомпоновщикНастроек.Настройки;
        
        Для Каждого ОтборРасшифровки Из ДанныеРасшифровки.Настройки.Отбор.Элементы Цикл
            КомпоновкаДанныхКлиентСервер.ДобавитьОтбор(Настройки, Строка(ОтборРасшифровки.ЛевоеЗначение),
                ОтборРасшифровки.ПравоеЗначение, ОтборРасшифровки.ВидСравнения, ОтборРасшифровки.Использование);  
        КонецЦикла;
        Для Каждого ПараметрДанных Из ДанныеРасшифровки.Настройки.ПараметрыДанных.Элементы Цикл
            КомпоновкаДанныхКлиентСервер.УстановитьПараметр(Настройки, ПараметрДанных.Параметр,
                ПараметрДанных.Значение, ПараметрДанных.Использование);  
        КонецЦикла;
        МакетКомпоновки = КомпоновщикМакета.Выполнить(Отчет.СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
        ТаблицаДанных = Отчеты._ок_РасшифровкаСверкиПоПартиямТоваров.ВнешниеНаборыДанных(ТекстФильтра1, ТекстФильтра2, ТекстФильтра3,
            МакетКомпоновки.ЗначенияПараметров);
        
    Иначе    
        
        ТаблицаДанных = ВнешниеНаборыДанных(ТекстФильтра1, ТекстФильтра2, ТекстФильтра3, МакетКомпоновки.ЗначенияПараметров);
        
    КонецЕсли;    
    
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ТаблицаДанных, ДанныеРасшифровки, Истина, Ложь);
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    
    // Устанавливаем фиксацию в табличном документе
    ДокументРезультат.ФиксацияСлева = 1;
    
КонецПроцедуры
5 I_learn_1c
 
17.06.25
15:25
аналогично устроен другой отчет со своей расшифровкой, и там из расшифровки можно открыть документ из ячейки без проблем.
Поэтому и не могу понять в чем отличие вообще тут..

отличие в том, что запрос в ВнешниеНаборыДанных собирает данные по другим регистрам, тексты фильтров отличаются..  но сама процедура ПриКомпоновкеРезультата такая же
Основная теорема систематики: Новые системы плодят новые проблемы.