Имя: Пароль:
1C
1С v8
УпрФормы. Внешняя обработк по заполнению таб.частей
0 elevika
 
04.06.20
14:40
Уважаемы, нужна помощь. С упр.формами я на "Вы". Нужна обработка по заполнению табл. части документов. Пытаюсь сделать "рыбу". Использую вызов Клиентского метода, т.к. надо будет запросить у пользователя некоторые данные. Поэтому добавила управляемую форму
В модуле обработки
Функция СведенияОВнешнейОбработке() Экспорт
    
    ИмяОбработки = ЭтотОбъект.Метаданные().Синоним;
    ПараметрыРегистрации = Новый Структура;
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
    
    ПараметрыРегистрации.Вставить("Вид","ЗаполнениеТабличныхЧастей"); //Перечисления.ВидыДополнительныхВнешнихОбработок.ЗаполнениеТабличныхЧастей);
    ПараметрыРегистрации.Вставить("Версия", "1.0");
    ПараметрыРегистрации.Вставить("Наименование", "ТЕСТ");
    ПараметрыРегистрации.Вставить("Информация", "Внешняя обработка заполнения табличной части");
    
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);

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

Функция ПолучитьТаблицуКоманд()
    
    Команды = Новый ТаблицаЗначений;
    
    Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
    Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
    Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
    Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
    Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
    Команды.Колонки.Добавить("ЗаменяемыеКоманды", Новый ОписаниеТипов("Строка"));
    
    Возврат Команды;
    
КонецФункции

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


Регистрация формы в Доп. отчетах проходит нормально. В документе при нажатии <Заполнить> появляется команда <Тест>. Но при выборе этой команды ничего не происходит.
Если открываю обработку через меню "Файл", то при нажатии на кнопку процедура отрабатывается. Уже голову сломала. ПОМОГИТЕ!!!
1 Franchiser
 
гуру
04.06.20
14:44
Назначения = Новый Массив ;
    Назначения.Добавить("Документ.ТребованиеНакладная") ;
    
    ПараметрыРегистрации = Новый Структура ;
    ПараметрыРегистрации.Вставить("Вид","ЗаполнениеОбъекта");
    ПараметрыРегистрации.Вставить("Назначение",Назначения);
    ПараметрыРегистрации.Вставить("Наименование","Заполнить Документ");
    ПараметрыРегистрации.Вставить("Версия","1.0");
    ПараметрыРегистрации.Вставить("Информация","Дополнительная обработка табличной части требования");
    ПараметрыРегистрации.Вставить("БезопасныйРежим",Ложь);
    
    Команды = ПолучитьТаблицуКоманд() ;
    ДобавитьКоманду(Команды, "Заполнить документ","ЗаполнитьДокумент","ВызовКлиентскогоМетода",Ложь,) ;
    
    ПараметрыРегистрации.Вставить("Команды",Команды) ;
2 elevika
 
04.06.20
14:51
(1) Спасибо. А чем принципиально это отличается от моего варианта? Я не вижу, что мне надо исправить
3 Franchiser
 
гуру
04.06.20
14:54
(2) ПараметрыРегистрации.Вставить("Вид","ЗаполнениеОбъекта");
4 elevika
 
04.06.20
14:59
(3) В моей конфе это не работает - при регистрации ошибку выдает, т.к. в Перечисления.ВидыДополнительныхВнешнихОбработок.ЗаполнениеТабличныхЧастей идентификатор "ЗаполнениеТабличныхЧастей".
Если пишу так, то регистрирует без проблем
5 elevika
 
04.06.20
16:56
Может, где-то в свойствах Конфигурации или ещё где-то надо галочку какую-то поставить? Почему не запускается процедура  ВыполнитьКоманду()?
6 hhhh
 
04.06.20
23:28
(5) что-то какой-то вообще у вас старинный кусок кода. Наверно, вы в интернете что-то древнее скачали. Вот в современных конфах и не работает. Посмотрите примеры как делается в базе БСП последних релизов. Что касается Функция СведенияОВнешнейОбработке() Экспорт.
7 Franchiser
 
гуру
05.06.20
01:15
(5) параметр версии бсп попробуй указать в сведениях обработки
8 elevika
 
05.06.20
11:10
Вот я тупешка!! Только сегодня заметила, что в упр. формах в документе две кнопки <Загрузить>. Одна - над табличной частью, как в обычных формах. По этой кнопке не работает обработка, хотя там присутствует. А вторая - в командной строке формы документа. Вот там обработка запускается )))
ВОПРОС: возможно, такой же тупой, но тем не менее, как убрать из кнопки <Загрузить>, которая над табличной частью? Чтобы не смущать пользователей