Ребят, написал отчет, осталось пару штрихов, бьюсь уже целый день, не могу придумать как сделать. Вообщем есть отчет, как на скрине, под заказом выводятся ордера (это было обязательное условие для клиента). И нужно чтобы при нажатии на заказ/ордер открывалась ссылка. Ордера - это ресурс, чтобы по группировке выводить заказ. При нажатии на ордер выводится окно, как на скрине, оттуда есть возможность открывать ордер, а вот при нажатии на заказ выводится другое поле (как на другом скрине), как сделать, чтобы заказ открывался?
Для управляемых форм тоже самое. перехватывает расшифровку не обработчик формы, а обработчик табличного документа на форме. ( на форме выделить таблицу и там будут обработчики)
Значение = ОбДанныеРасшифровки .Элементы[Расшифровка].ПолучитьПоля()[0].Значение; // текущее значение на котором щелкнули
ИмяПоля = ОбДанныеРасшифровки .Элементы[Расшифровка].ПолучитьПоля()[0].Поле; // имя текущего поля
Если ИмяПоля = "Ордер" Тогда
СтандартнаяОбработка = Ложь;
ОткрытьЗначение(Значение );
КонецЕсли;
(11) Да вы, батюшка, гений. Красивое и элегантное решение. Единственное, что оно не работало для обычных форм из-за того, что нет отображения на клиенте для расшифровки, поэтому переделал на клиент-серверный вариант и сделал немодальный вызов функции, вот уже готовы код:
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка, ДополнительныеПараметры)
СтруктураДанныхРасшифровки = РасшифроватьНаСервере(ДанныеРасшифровки, Расшифровка);
Если СтруктураДанныхРасшифровки.Поле = "Ордер" Тогда
СтандартнаяОбработка = Ложь;
ПоказатьЗначение(Неопределено, СтруктураДанныхРасшифровки.Значение);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция РасшифроватьНаСервере(ДанныеРасшифровки, Расшифровка)
ОбДанныеРасшифровки = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
СтруктураВозврата = Новый Структура;
СтруктураВозврата.Вставить("Значение", ОбДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()[0].Значение);
СтруктураВозврата.Вставить("Поле", ОбДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()[0].Поле);
Возврат СтруктураВозврата;
КонецФункции
Показать
Я позаимствовал типовую форму отчета, чтобы не менялось расположение кнопок (так пользователям спокойнее) и туда встроил этот код. Спасибо за помощь!
Значение = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()[0].Значение; // текущее значение на котором щелкнули
ИмяПоля = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()[0].Поле; // имя текущего поля
Если ИмяПоля = "Ордер" Тогда
СтандартнаяОбработка = Ложь;
ОткрытьЗначение(Значение );
КонецЕсли;
Значение = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()[0].Значение; // текущее значение на котором щелкнули
ИмяПоля = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()[0].Поле; // имя текущего поля
Если ИмяПоля = "Ордер" Тогда
СтандартнаяОбработка = Ложь;
ОткрытьЗначение(Значение );
КонецЕсли;
КонецПроцедуры
Может это для обычных форм? Потому что у управляемой СКД формы вообще нет ни одного обработчика, который перехватывает расшифровку (добавил все обработчики и проверил). Ну и соответственно этот код не может быть вызван из формы.
Для управляемых форм тоже самое. перехватывает расшифровку не обработчик формы, а обработчик табличного документа на форме. ( на форме выделить таблицу и там будут обработчики)
Значение = ОбДанныеРасшифровки .Элементы[Расшифровка].ПолучитьПоля()[0].Значение; // текущее значение на котором щелкнули
ИмяПоля = ОбДанныеРасшифровки .Элементы[Расшифровка].ПолучитьПоля()[0].Поле; // имя текущего поля
Если ИмяПоля = "Ордер" Тогда
СтандартнаяОбработка = Ложь;
ОткрытьЗначение(Значение );
КонецЕсли;
(11) Да вы, батюшка, гений. Красивое и элегантное решение. Единственное, что оно не работало для обычных форм из-за того, что нет отображения на клиенте для расшифровки, поэтому переделал на клиент-серверный вариант и сделал немодальный вызов функции, вот уже готовы код:
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка, ДополнительныеПараметры)
СтруктураДанныхРасшифровки = РасшифроватьНаСервере(ДанныеРасшифровки, Расшифровка);
Если СтруктураДанныхРасшифровки.Поле = "Ордер" Тогда
СтандартнаяОбработка = Ложь;
ПоказатьЗначение(Неопределено, СтруктураДанныхРасшифровки.Значение);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция РасшифроватьНаСервере(ДанныеРасшифровки, Расшифровка)
ОбДанныеРасшифровки = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
СтруктураВозврата = Новый Структура;
СтруктураВозврата.Вставить("Значение", ОбДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()[0].Значение);
СтруктураВозврата.Вставить("Поле", ОбДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()[0].Поле);
Возврат СтруктураВозврата;
КонецФункции
Показать
Я позаимствовал типовую форму отчета, чтобы не менялось расположение кнопок (так пользователям спокойнее) и туда встроил этот код. Спасибо за помощь!