Имя: Пароль:
1C
1С v8
Расшифровка в табличном документе
0 BuddyQ
 
28.01.16
17:08
Здравствуйте!
Формирую табличный документ вручную таким образом:

    ЗапросПросроченные = Новый Запрос;
    ЗапросПросроченные.Текст =
                                "ВЫБРАТЬ
                                |    Согл.Наименование,
                                |    ЗадИсп.Автор,
                                |    СоглПредм.Предмет,
                                 |    СоглИсп.Исполнитель,
                                |    ЗадИсп.СрокИсполнения
                                |ИЗ
                                |    БизнесПроцесс.Согласование Согл
                                 |    ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.Согласование.Исполнители СоглИсп ПО Согл.Ссылка = СоглИсп.Ссылка
                                |    ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.Согласование.Предметы СоглПредм ПО Согл.Ссылка = СоглПредм.Ссылка
                                |    ЛЕВОЕ СОЕДИНЕНИЕ Задача.ЗадачаИсполнителя ЗадИсп ПО СоглИсп.ЗадачаИсполнителя = ЗадИсп.Ссылка
                                |ГДЕ
                                |    СоглПредм.РольПредмета = ЗНАЧЕНИЕ(Перечисление.РолиПредметов.Основной)
                                |И
                                |    Согл.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияБизнесПроцессов.Активен)
                                |И
                                |    ЗадИсп.ДатаИсполнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                                |И
                                |    ЗадИсп.СрокИсполнения < &ТекДата        
                                |";
                                
    ЗапросПросроченные.УстановитьПараметр("ТекДата", ТекущаяДата());
    РезультатЗапросаПросроченные = ЗапросПросроченные.Выполнить();
    ВыборкаПросроченные = РезультатЗапросаПросроченные.Выбрать();

    ТД = Новый ТабличныйДокумент;
    ТД.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    ТД.ОтображатьЗаголовки = Ложь;
    ТД.ТолькоПросмотр = Истина;

        ТД.Область("R3C1").Текст = "Бизнес-процесс";
        ТД.Область("R3C2").Текст = "Автор";
        ТД.Область("R3C3").Текст = "Документ";
        ТД.Область("R3C4").Текст = "Исполнитель";
        ТД.Область("R3C5").Текст = "Срок исполнения";

    ТекущаяСтрока = 4;
    Пока ВыборкаПросроченные.Следующий() Цикл
             ТД.Область("R" + ТекущаяСтрока + "C1").Текст = ВыборкаПросроченные["Наименование"];
             ТД.Область("R" + ТекущаяСтрока + "C2").Текст = ВыборкаПросроченные["Автор"];
             ТД.Область("R" + ТекущаяСтрока + "C3").Текст = ВыборкаПросроченные["Предмет"];
             ТД.Область("R" + ТекущаяСтрока + "C4").Текст = ВыборкаПросроченные["Исполнитель"];
             ТД.Область("R" + ТекущаяСтрока + "C4").Текст = ВыборкаПросроченные["СрокИсполнения"];
             ТекущаяСтрока = ТекущаяСтрока + 1;
    КонецЦикла;

Ячейки столбца "Бизнес-процесс" должны быть кликабельны, при щелчке по ним должна отрываться форма соответствующего бизнес-процесса. Почитал документацию, выяснилось, что для этого используется механизм расшифровки. Но нигде не могу найти пример для работы с расшифровкой, если табличный документ формируется "на лету", а не на основе макета. А переделать найденные примеры под свои нужды не хватает знаний :(
1 Ёпрст
 
28.01.16
17:10
Будет работать, ежели положишь таблицу на форму.. и вывод туда.
2 BuddyQ
 
28.01.16
17:13
То есть без формы никак?
3 Ёпрст
 
28.01.16
17:14
(2) да
4 Ёпрст
 
28.01.16
17:14
события есть только у формы
5 BuddyQ
 
28.01.16
17:24
Прошу прощения, а зачем мне события формы? Мне ведь не нужно переопределять стандартное поведение расшифровки.

Цитирую:

"Если табличный документ открыт в отдельном окне, никаких действий по обработке расшифровки выполнить нельзя. В этом случае расшифровка будет работать в соответствии со своим поведением по умолчанию – то есть, будет открыто значение расшифровки. Для ссылочных типов будет открыта основная форма объекта, для других типов будет отображена строка, представляющая значение расшифровки."

У меня же как раз первый вариант - табличный документ в отдельном окне, ссылочный тип. Разве нет?
6 FIXXXL
 
28.01.16
17:25
(5) пустое не откроет, только "живую" ссылку
7 Ёпрст
 
28.01.16
17:26
(5) всё правильно, ты в ячейку записал текст, а в расшифровку ничего не положил при этом.
8 Ёпрст
 
28.01.16
17:27
вот ничего тебе и открывает.
9 BuddyQ
 
28.01.16
17:45
(7)(8) Так это потому что я пока не знаю, что написать.

Допустим, получаю я в цикле ссылку на бизнес-процесс:

БП = БизнесПроцессы.Согласование.НайтиПоРеквизиту("Наименование", ВыборкаПросроченные["Наименование"]).Ссылка;

(Хотя, наверное, ссылку можно и в запросе получить. Ну да ладно, пусть пока так будет)

Дальше пишу (по аналогии с теми примерами, что нашел в сети):
    ТД.Область("R" + ТекущаяСтрока + "C1").Параметры.БП = БП;
        ТД.Область("R" + ТекущаяСтрока + "C1").Параметры.МойПараметрРасшифровки = БП.Ссылка;

Ругается, что поле объекта не обнаружено ("Параметры").
А как тогда поместить ссылку на бизнес-процесс в ячейку?
10 BuddyQ
 
28.01.16
18:32
Заработало.

Всё оказалось проще:

БП = БизнесПроцессы.Согласование.НайтиПоРеквизиту("Наименование", ВыборкаПросроченные["Наименование"]);
ТД.Область("R" + ТекущаяСтрока + "C1").Расшифровка = БП.Ссылка;

И всё! Расшифровка работает.

Всем участникам дискуссии спасибо!
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший