Имя: Пароль:
1C
1С v8
внешняя обработка заполнения табличной части. Не работает для НЕтипового документа
0 altaykniga
 
27.02.19
19:50
Бух ред.3

Доброго времени суток, уважаемые специалисты. Прошу поделиться знаниями, подсказать, где допустил ошибку.

Создал внешнюю обработку заполнения табличной части документа. Для типового документа обработка запускается (вставил "Сообщить" в процедуру заполнения ТЧ - сообщение выходит, когда жму на кнопку "Заполнить"), а для НЕтипового документа кнопка заполнения ТЧ появляется на форме, но при ее нажатии ничего не происходит (даже Сообщить не срабатывает). Куда копать?

1. в код модуля формы НЕтипового документа в процедуру "ПриСозданииНаСервере" добавил следующий код:

    // СтандартныеПодсистемы.ПодключаемыеКоманды
    ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
    // Конец СтандартныеПодсистемы.ПодключаемыеКоманды

2. в ОбщаяКоманда.ПоказатьДвиженияДокумента.ТипПараметраКоманды добавил тип - мой НЕтиповой документ.

Что еще забыл сделать? Заранее благодарю за помощь
1 altaykniga
 
27.02.19
19:55
Функция СведенияОВнешнейОбработке() Экспорт
    
    Назначения = Новый Массив ;
    Назначения.Добавить("Документ.экзАктСверкиКоличество") ;
    
    ПараметрыРегистрации = Новый Структура ;
    ПараметрыРегистрации.Вставить("Вид","ЗаполнениеОбъекта");
    ПараметрыРегистрации.Вставить("Назначение",Назначения);
    ПараметрыРегистрации.Вставить("Наименование","АктСверкиПоКоличеству_ВнешняяОбработкаЗаполненияТабличнойЧасти_ТабНоменклатуры");
    ПараметрыРегистрации.Вставить("Версия","1.0");
    ПараметрыРегистрации.Вставить("Информация","АктСверкиПоКоличеству_ВнешняяОбработкаЗаполненияТабличнойЧасти_ТабНоменклатуры");
    ПараметрыРегистрации.Вставить("БезопасныйРежим",Истина);
    
    Команды = ПолучитьТаблицуКоманд() ;
    ДобавитьКоманду(Команды, "Заполнить1","Заполнить1","ВызовКлиентскогоМетода",Ложь,) ;
    
    ПараметрыРегистрации.Вставить("Команды",Команды) ;
    
    Возврат ПараметрыРегистрации;
    
КонецФункции
2 Мимохожий Однако
 
27.02.19
19:57
Отладчиком посмотри и увидишь
3 altaykniga
 
27.02.19
19:58
(0)

вместо "2. в ОбщаяКоманда.ПоказатьДвиженияДокумента.ТипПараметраКоманды добавил тип - мой НЕтиповой документ. "

следует читать "2. в ОпределяемыйТип.ОбъектСДополнительнымиКомандами.Тип добавил тип - мой НЕтиповой документ. "
4 altaykniga
 
27.02.19
19:59
(2) точка останова не срабатывает на коде модуля формы внешней обработки, когда вызывается эта обработка напрямую с кнопки "заполнить" из формы документа
5 Мимохожий Однако
 
27.02.19
20:03
(4) Ты укажи точку останова до вызова команды заполнения ТЧ и пошагово доберешься до нужного кода.
6 altaykniga
 
27.02.19
20:03
в модуле формы обработки написал (для пробы):

&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
    Для Каждого ДокОбъект ИЗ ОбъектыНазначенияМассив Цикл
        ОбщегоНазначенияКлиентСервер.СообщитьПользователю("1");
    КонецЦикла;
КонецПроцедуры
7 Garykom
 
гуру
27.02.19
20:05
(0) Ты забыл (или скорее не знал) что внутри "ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);" код выполняется в зависимости от типа объекта.

Короче типовой код не знает ничего о твоем нетиповом документе
8 altaykniga
 
28.02.19
12:53
(7) Разобрался. Нужно было добавить в модуль формы НЕтипового документа следующий код:

1. ПриСозданииНаСервере()

    // СтандартныеПодсистемы.ПодключаемыеКоманды
    ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
    // Конец СтандартныеПодсистемы.ПодключаемыеКоманды

2. ПриОткрытии()

    // СтандартныеПодсистемы.ПодключаемыеКоманды
    ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
    // Конец СтандартныеПодсистемы.ПодключаемыеКоманды

3. ПриЧтенииНаСервере()

    // СтандартныеПодсистемы.ПодключаемыеКоманды
    ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
    // Конец СтандартныеПодсистемы.ПодключаемыеКоманды
4. Новые процедуры в модуль формы НЕтипового документа

////////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ БСП

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
    ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры

&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат)
    ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
    ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

Тема закрыта, спасибо за помощь
9 vis_tmp
 
30.05.19
07:38
(8) Спасибо, помог