Имя: Пароль:
1C
1С v8
ДополнительныеОбработки: Вызов клиентского метода не работает, или...
0 smartem
 
08.12.15
12:09
Добрый день!

Подскажите, пожалуйста, 3 часа уже бьюсь - понять не могу:

Созданию внешнюю обработку (Заполнение табличной части документа)  с обязательным предварительным выводом формы обработки. настройки набора заполнения и последующим самим заполнением...
Использую БСП:
В модуле обработки создаю функцию

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


Далее создаю Форму и в модуле формы - единственная процедура:



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



Подключаю внешнюю обработку. В параметры "Показывать" ставлю галочки "В списках", "В формах элементов справочников и документов".

Дальше, поведение интересное: Если я вызываю эту обработку, когда нахожусь в списках документов "Списание затрат на выпуск", то команда "Заполнить материалы" отрабатывает (вызывается метод "Выполнить команду"), если ту же самую команду пытаюсь вызвать из формы открытого документа (нового или ранее созданного) - то ничего не происходит по нажатию на "Заполнить" - "Заполнить материалы".

В чем может быть дело? Прошу помощи!
1 smartem
 
09.12.15
07:07
Нашел, в чем проблема.
Это "ошибка" (или особенность) конфигурации.
По "счастливой случайности" в модуле формы именно этого документа (СписаниеЗатратНаВыпуск) отсутствует процедура
Подключаемый_ВыполнитьНазначаемуюКоманду
в которой как раз и определяется использование вызова команд подключаемой обработки.
Добавил эту возможность через расширение конфигурации - команда стала выполнятся.
Может кому будет интересно: http://its.1c.ru/db/bspdoc#content:427:1:issogl2_настройка_назначаемых_дополнительных_отчетов_и_обраб­оток