Добавить еще одну команду для ПФ

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

	Возврат ПараметрыРегистрации;

КонецФункции // СведенияОВнешнейОбработке()()

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

Возврат Команды;
КонецФункции

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

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

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

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "СчетНаОплатуВРТУ", "Счет договор", СформироватьПечатнуюФорму(МассивОбъектов[0], ОбъектыПечати));

КонецПроцедуры // Печать()
Показать


Не догоняю как правильно сделать чтобы печатная форма запускалась с двух команд ( одна с факсимиле, другая без) как добавить еще одну команду?
По теме из базы знаний
Найденные решения
23. Ditron 185 29.05.20 11:49 Сейчас в теме
Короче те-же грабли, прочитайте комментарии в модуле! И ничего не меняйте!
Прикрепленные файлы:
СчетДоговорФаксимиле.epf
user1302499; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Ditron 185 28.05.20 13:25 Сейчас в теме
Ну во первых следует использовать БСП:
Функция СведенияОВнешнейОбработке() Экспорт

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

КонецФункции
Показать
4. user1302499 28.05.20 14:18 Сейчас в теме
(2) А зачем форма 1 форма 2 у меня одна и та же форма, просто в одной не будет выводится факсимиле
5. Ditron 185 28.05.20 14:19 Сейчас в теме
(4)это уже ваше дело, но команды как минимум две и идентификаторов два, а в процедуре печать можно вызывать одну и туже функцию формирования с доп параметром ЕстьФаксимиле
6. Ditron 185 28.05.20 14:21 Сейчас в теме
(4)интересно а как пользователь должен понять какую ему печатать? или вы хотите вопрос чтоб задавался, так не получится все происходит на сервере!
3. Ditron 185 28.05.20 13:29 Сейчас в теме
Во вторых, добавляем команду:
Код
   НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
   НоваяКоманда.Представление = НСтр("ru='Форма 2''");
   НоваяКоманда.Идентификатор = "ПечатнаяФорма2";
   НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Показать полностью

в третьих процедуру "печать" нужно оформить должным образом
Код
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

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

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

Показать полностью
7. user1302499 28.05.20 14:23 Сейчас в теме
В списке при выборе печати будет (ДоговорФаксимиле или просто Договор)
8. Ditron 185 28.05.20 14:26 Сейчас в теме
9. Ditron 185 28.05.20 14:26 Сейчас в теме
(7)ну так (ДоговорФаксимиле или просто Договор) и есть Форма1 и Форма2, разве нет ))
10. Ditron 185 28.05.20 14:28 Сейчас в теме
(7)
(ДоговорФаксимиле или просто Договор)
вам остается заменить идентификаторы и представления на свои, и функцию формирования таб документа свою указать...
11. user1302499 28.05.20 14:30 Сейчас в теме
(10) я думал форма 1 и форма 2 это печатные формы
12. Ditron 185 28.05.20 14:34 Сейчас в теме
(11) блин, ну разве по коду непонятно, что Форма1 это идентификатор команды а "Форма 1" это ее представление, команды 2? как вы сделаете в процедуре "Печать" выбирать вам можно вызывать одну и туже функция формирования таб документ только добавить в нее 4 параметр "ЕстьФаксимиле(булево)" и внутри уже в зависимости от значения выводить его или нет
 Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ФормаСФаксимиле") Тогда
      УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ФормаСФаксимиле", "Печатная форма 1", СформироватьПечатнаяФорма(МассивОбъектов, ОбъектыПечати, КодЯзыкаПечать, Истина));
   КонецЕсли;
   Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ФормаБезФаксимиле") Тогда
      УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ФормаБезФаксимиле", "Печатная форма 2", СформироватьПечатнаяФорма(МассивОбъектов, ОбъектыПечати, КодЯзыкаПечать, Ложь));
   КонецЕсли;
13. user1302499 28.05.20 14:35 Сейчас в теме
(12) спасибо, буду пробовать
14. user1302499 28.05.20 15:31 Сейчас в теме
(12)Не получается( Не появляется команда

Можете сравнить с моим кодом? Я что-то явно не так делаю

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

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

КонецФункции // СведенияОВнешнейОбработке()()

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

Возврат Команды;
КонецФункции

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

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

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

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

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

	
	
//УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "СчетНаОплатуВРТУ", "Счет договор", СформироватьПечатнуюФорму(МассивОбъектов[0], ОбъектыПечати));

КонецПроцедуры // Печать()

Функция СформироватьПечатнуюФорму(СсылкаНаДокумент, ОбъектыПечати, СФаксимиле)
Показать
15. Ditron 185 28.05.20 15:35 Сейчас в теме
я же вам дал краткий код процедуры "СведенияОВнешнейОбработке" использующий вызовы БСП, во вторых идентификатор команды у вас одинаковый! "СчетНаОплатуВРТУ" и я сомневаюсь что он придуман вами должнобыть два разных "я_ДоговорСчет" и "я_ДоговорСчетФаксимиле"
16. Ditron 185 28.05.20 15:36 Сейчас в теме
а в процедуре печати так вообще все перепутано
17. Ditron 185 28.05.20 15:36 Сейчас в теме
вам следует почитать статью по подключению внешних обработок и печ форм, здесь есть...
18. Ditron 185 28.05.20 15:40 Сейчас в теме
Функция СведенияОВнешнейОбработке() Экспорт

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

КонецФункции
Показать

это раз
19. Ditron 185 28.05.20 15:42 Сейчас в теме
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт


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


КонецПроцедуры
Показать


Это два!
20. user1302499 29.05.20 09:13 Сейчас в теме
(19)
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт



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

КонецПроцедуры
Показать


Все равно не работает, нет двух команд, так и осталась только одна и ошибку выдает почему-то
Прикрепленные файлы:
21. Ditron 185 29.05.20 09:39 Сейчас в теме
(20)скинь обработку сюда
user1302499; +1 Ответить
22. user1302499 29.05.20 10:07 Сейчас в теме
23. Ditron 185 29.05.20 11:49 Сейчас в теме
Короче те-же грабли, прочитайте комментарии в модуле! И ничего не меняйте!
Прикрепленные файлы:
СчетДоговорФаксимиле.epf
user1302499; +1 Ответить
24. user1302499 29.05.20 12:04 Сейчас в теме
(23) Спасибо, появились команды, теперь понял в чем ошибка была)
25. Ditron 185 29.05.20 12:05 Сейчас в теме
(24) практика хорошее дело, но мат часть никто не отменял ))
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот