Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

УпрФормы. Внешняя обработк по заполнению таб.частей

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

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

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

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


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

Список тем форума
Рекламное место пустует  Рекламное место пустует
2 + 2 = 3.9999999999999999999999999999999...
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.