Программная расшифровка СКД

  1. 8 г. назад

    Хочу сделать выпадающее меню со своими пунктами.
    Вернее, сделал, но теперь хочу добавить (или вернуть, если это я убрал) стандартный пункт "Расшифровать".

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

    Вот если я в массив действий добавляю пункт

    МассивДействий.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Расшифровать);

    То в момент открытия меню расшифровки платформа падает без возможности посмотреть причину.

    Что я делаю не так?

  2. Выудил ошибку:

    Ошибки:
    --------------------------------------------------------------------------------
    31.03.2016 12:09:19
    Ошибка создания источника доступных настроек компоновки данных

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

    ПрименитьНастройки(<ИдентификаторРасшифровки>, <Настройки>)
    Параметры:

    <ИдентификаторРасшифровки> (обязательный)

    Тип: ИдентификаторРасшифровкиКомпоновкиДанных.
    Идентификатор обрабатываемой расшифровки.
    <Настройки> (обязательный)

    Тип: НастройкиКомпоновкиДанных.

    может дело в этом?

    Ответы: (3)
  4. 31.03.2016 14:17:40 отредактировано bvn13

    sf может дело в этом?

    хм... Добавил первым параметром "Расшифровка". Не помогло.
    Да дело и не в этом. Он при выходе из

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

    Валится.
    Вернее, если стоит последний параметр Истина:

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

    То прямо при вызове этого валится. Если поставить там Ложь:

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

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

    Это может быть из-за того, что я из трех таблиц источников данных связи сделал только 1-к-2 и 1-к-3?
    Т.е. 2 и 3 оставил связанные только через 1?
    Источник1 - основная таблица товаров
    Источник2 - срезы последних цен на каждую строку Источник1
    Источник3 - остатки товаров на каждую строку Источник1

    и я не хочу связывать 2 и 3, т.к. оба этих источника должны выполняться с параметрами (при передачи по связи из Источник1).

  5. ставь СтандартнаяОбработка = Ложь; перед всеми условиями. Иначе получается, что ты насильно обрабатываешь стандартную расшифровку, а потом платформа обрабатывает.

    Ответы: (5)
  6. tsr ставь СтандартнаяОбработка = Ложь; перед всеми условиями. Иначе получается, что ты насильно обрабатываешь стандартную расшифровку, а потом платформа обрабатывает.

    Это стоит

    Ответы: (6)
  7. (5) Перед Если .

  8. 31.03.2016 15:02:16 отредактировано sf

    попробуй как тут

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

    Я оттуда и смотрел.
    Только учти, что у меня УФ, а ОбработкаРасшифровки.Выполнить(...) работает только в толстом клиенте.
    А в остальном - у меня ж так же.

    Что именно я должен сделать, как тут?

или зарегистрируйтесь чтобы ответить!