Версия для печати темы (http://pro1c.org.ua/index.php?s=d5724c6ea8490fa976c642564375ef13&showtopic=48270)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Система компоновки данных _ Расшифровка в один клик с помощью настройки макета

Автор: greya 10.10.18, 8:14

Добрый день.

Есть отчет на СКД, в котором есть 3 поля и один ресурс.
Изначальная настройка имеет такой вид:
Отчет
Групировка по полю 1
Группировка по полю 2.

При нажатии на поле ресурса появляется стандартное диалоговое окно расшифровки, где, среди прочего, можно выбрать вариант "Расшифровать по полю 3".

Очень хочется сделать так, чтобы вместо диалогового окна с его выборами типа действия и поля, сразу после нажатия на поле выскакивал результат расшифровки по полю 3.

Смотрю в сторону настройки макета. Создал макет группировки для Группировки по полю 2.
Указал для ячейки, в которой выводится ресурс, Параметр Расшифровки.
В окне настройки Параметра расшифровки из Параметров макета указал Основное действие "Расшифровать".
Но вот дальше тупик. :-( Если в окне настройки Параметра расшифровки я указываю Имя поля "Поле3" и Выражение "Поле3", то при попытки сформировать отчет получаю ошибку "Поле3 не может быть использовано в группировке Поле2".
Если эти поля не заполнять, или заполнить значением "Поле2" то при попытке вызвать расшифровку все равно появляется диалоговое окно, в котором нужно выбирать поле для расшифровки.
Подскажите, в чем неправ?


Платформа 8.3.7.1805, самописная конфа.

Автор: Vladal 11.10.18, 14:16

Нужен сферический пример в вакууме.
Пусть это будет Номенклатура на Складах по Регистраторам.

Автор: greya 11.10.18, 21:34

Vladal @ Сегодня, 15:16 * ,
Хорошо...

Запрос:

"Выбрать 
   Регистр.Склад,
   Регистр.Номенклатура,
   Регистр.Регистратор
   Сумма(Регистр.Сумма)
Из _Регистр_ Как Регистр
Сгруппировать ПО
   Регистр.Склад,
   Регистр.Номенклатура,
   Регистр.Регистратор"


Сумма - ресурс.

Настройки отчета:
Первая группировка - Склад.
Вторая группировка - Номенклатура.
Без детальных записей.
Задача - "в один клик" по полю сумма в группировке "номенклатура" выводить расшифровку по полю "Регистратор", не выдавая пользователю никаких лишних меню. Желательно, через макет, но можно и кодом.

Автор: Vladal 14.10.18, 12:16

На форуме есть заметка о расшифровке:
http://pro1c.org.ua/index.php?showtopic=13696

Вот и сделаем согласно описанию:

На форме в поле результата добавить обработчик

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


В результате при клике на ячейки с типом "СправочникСсылка.Номенклатура" и Регистратор с типом "ДокументСсылка.РеализацияТоваровУслуг" откроется непосредственно сам объект.



Можно подумать, как это нарисовать полностью программно - это наверно написано в книге Хрусталёвой по СКД.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
http://pro1c.org.ua