Имя: Пароль:
1C
1С v8
Дополнительные пункты расшифровки СКД (контекстное меню) в 1С 8.3 Тонкий клиент [Решено]
0 romix
 
07.12.15
20:49
Хочется добавить в контекстное меню расшифровки СКД вызов дополнительных отчетов. На эту тему есть понятная/толковая статья по ссылке https://helpf.pro/faq/print/1055.html но, к сожалению, она относится к толстому клиенту, а в тонком клиенте (8.3) примеры не работают. Вопрос - кто-нибудь заморачивался этой темой и есть ли работающий образец?
1 romix
 
07.12.15
22:40
Ну или в типовых есть ли что-то похожее? Я чувствую что тут опять придется статьи писать. ?
2 NcSteel
 
07.12.15
22:41
Покопался, ничего сложного нет.... ты видимо не копался
3 NcSteel
 
07.12.15
22:50
В общем сделал так:

ВыполненноеДействие = Неопределено;
    
    ДополнительныеДействия = Новый СписокЗначений;
    ДополнительныеДействия.Добавить("ТестовоеДействие", "Дополнительное действие"); // добавляем свое действие

    ПараметрВыполненногоДействия = Новый Структура;
    
    ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСКД));
    
    ОбработкаРасшифровки.ВыбратьДействие(Расшифровка, ВыполненноеДействие, ПараметрВыполненногоДействия,,ДополнительныеДействия);    
    
    Если ВыполненноеДействие = "ТестовоеДействие" Тогда
        СтандартнаяОбработка = Ложь;
           ВыполнитьДействие1(Расшифровка);
    КонецЕсли;
4 NcSteel
 
07.12.15
22:51
(3) + но у ОбработкаРасшифровкиКомпоновкиДанных есть другой "правильный" метод "ПоказатьВыборДействия", который православные трезвенники должны использовать.
5 romix
 
10.12.15
15:17
(3) Ага спасибо, тут еще пример:
http://its.1c.ru/db/metod8dev/content/3728/hdoc


&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)

  Перем ВыбранноеДействие;
  Перем ПараметрыВыбранногоДействия;

  СтандартнаяОбработка = Ложь;
  ОбработкаРасшифровки =  Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(Отчет));

  ОбработкаРасшифровки.ВыбратьДействие(Расшифровка, ВыбранноеДействие, ПараметрыВыбранногоДействия);

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

КонецПроцедуры
6 romix
 
11.12.15
13:37
ВыбратьДействие - двоится выбор стандартной расшифровки. Две менюшки подряд вылетает, причем непонятно где (отладчик не показывает).

ПоказатьВыборДействия - пока непонятно, как вызвать стандартную расшифровку (например, по Регистратору).
7 romix
 
11.12.15
18:45
В таком виде всё работает (тонкий клиент, 1С:Предприятие 8.3 (8.3.6.2299)):


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

///////////////////////////////////////////////////////////////////////
&НаКлиенте
Процедура РезультатОбработкаРасшифровки_Продолжение(ВыполненноеДействие, ПараметрВыполненногоДействия, ДополнительныеПараметры) Экспорт
    Если ВыполненноеДействие = "РасшифровкаПоДокументам" Тогда
        РасшифровкаПоДокументам(ДополнительныеПараметры);
    ИначеЕсли ВыполненноеДействие = "РасшифровкаПоРегистратору" Тогда
        РасшифровкаПоРегистратору(ДополнительныеПараметры);
    ИначеЕсли ВыполненноеДействие=ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение Тогда
        ОткрытьЗначение(ПараметрВыполненногоДействия);
    КонецЕсли;    
КонецПроцедуры    

///////////////////////////////////////////////////////////////////////
&НаКлиенте
Функция РасшифровкаПоДокументам(Расшифровка)
    ОбъектРасшифровки = Неопределено;
    ЗначенияРасшифровки = ПолучитьДанныеРасшифровки(Расшифровка, ОбъектРасшифровки );
    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("Отбор1", ЗначенияРасшифровки);
    ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
    ПараметрыФормы.Вставить("КлючВарианта", "МойОтчет_Расшифровка");
    ПараметрыФормы.Вставить("КлючНазначенияИспользования", "МойОтчет_Расшифровка");
    ПараметрыФормы.Вставить("ПользовательскиеНастройки", Новый ПользовательскиеНастройкиКомпоновкиДанных);    
    ОткрытьФорму(ЭтаФорма.ИмяФормы, ПараметрыФормы,,Истина);
КонецФункции    

///////////////////////////////////////////////////////////////////////
&НаКлиенте
Функция РасшифровкаПоРегистратору(Расшифровка)
    ОбъектРасшифровки = Неопределено;
    ЗначенияРасшифровки = ПолучитьДанныеРасшифровки(Расшифровка, ОбъектРасшифровки );
    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("Отбор1", ЗначенияРасшифровки);
    ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
    ПараметрыФормы.Вставить("КлючВарианта", "МойОтчет_Расшифровка1");
    ПараметрыФормы.Вставить("КлючНазначенияИспользования", "МойОтчет_Расшифровка1");
    ПараметрыФормы.Вставить("ПользовательскиеНастройки", Новый ПользовательскиеНастройкиКомпоновкиДанных);    
    ОткрытьФорму(ЭтаФорма.ИмяФормы, ПараметрыФормы,,Истина);
КонецФункции    
8 romix
 
14.12.15
21:31
+(7) - там по двойному щелчку открываются свои нестандартные расшифровки и пункт «Открыть значение», по правому клику - стандартные расшифровки.