Имя: Пароль:
1C
 
Внешняя обработка печатной формы
,
0 AlexeyVM
 
27.06.17
11:46
Добрый день, переделывал печатную форму документа в УНФ во внешнюю обработку. Вроде все получилось, все работает.
Только есть один косяк.
Вот так все работает:
Функция СведенияОВнешнейОбработке() Экспорт

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

Возврат ПараметрыРегистрации;
КонецФункции

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

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")

НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;

КонецПроцедуры


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

Печатная форма открывается, но она пустая, подскажите в чем ошибка, пожалуйста.
1 Ц_У
 
27.06.17
12:13
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
2 AlexeyVM
 
27.06.17
12:18
Поменял на
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыЗаполнениеФормы();
И заработало)
3 Ц_У
 
27.06.17
12:20
Функция СведенияОВнешнейОбработке() Экспорт
        
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
    
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
    ПараметрыРегистрации.Версия = "1.0";
    ПараметрыРегистрации.БезопасныйРежим = Ложь;
    ПараметрыРегистрации.Наименование = "Реестр платежей (внешняя)";
    ПараметрыРегистрации.Назначение.Добавить("Документы.РеестрПлатежей");
    
    НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
    НоваяКоманда.Представление = НСтр("ru = 'Печать реестра платежей'");
    НоваяКоманда.Идентификатор = "ПФ_MXL_РеестрПлатежей";
    НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
    НоваяКоманда.ПоказыватьОповещение = Истина;
    НоваяКоманда.Модификатор = "ПечатьMXL";
    ////////////////////////////////
    Возврат ПараметрыРегистрации;
    
КонецФункции
4 Ц_У
 
27.06.17
12:21
(2) читай что написано
ДобавитьКоманду(ТаблицаКоманд, "Расходная накладная (Тестовая)", "Накладная", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
5 AlexeyVM
 
27.06.17
12:38
(4)
Да вроде и так работает)
6 Ц_У
 
27.06.17
12:39
(5) "и так сойдет!"(с)
давай сразу правильно писать, да?
7 AlexeyVM
 
27.06.17
12:40
(6) Ок, переписал. А не могли бы Вы сказать в чем различие, или ссылку дать?
8 Ц_У
 
27.06.17
12:42
Модуль
ДополнительныеОтчетыИОбработкиКлиентСервер
ищи "Имена типов команд"
9 AlexeyVM
 
27.06.17
12:42
(8) Спасибо
10 Ц_У
 
27.06.17
12:46
? ОткрытиеФормы – открыть форму обработки;

? ВызовКлиентскогоМетода – вызвать клиентскую экспортную процедуру из модуля формы обработки;

? ВызовСерверногоМетода – вызвать серверную экспортную процедуру из модуля объекта обработки;
11 Ц_У
 
27.06.17
12:50
https://its.1c.ru/db/bspdoc#content:200:1:issogl1_использование_при_разработке_конфигурации