Как можно добавить команду печати Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт во внешнюю печатную форму?

1. Gok9 16.11.22 08:47 Сейчас в теме
Здравствуйте, как можно добавить команду печати Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт из конфигурации во внешнюю печатную форму чтобы он печатал и со скидками?

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

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

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

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

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

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



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

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

// Данные печати объектов.
// 
// Параметры:
// 	МассивОбъектов  - Массив    - объекты печати.
// 	ПараметрыПечати - Структура - параметры:
// 	  * ОтображатьСкидки - Булево - включить скидки.
// Возвращаемое значение:
// 	Структура - описание:
//    * РезультатПоШапке   - ВыборкаИзРезультатаЗапроса.
//    * РезультатПоТоварам - ВыборкаИзРезультатаЗапроса.
Функция ДанныеДляПечати(МассивОбъектов, ПараметрыПечати)
	
	СтруктураДанныхДляПечати = Неопределено;
	СтандартнаяОбработка = Истина;
	КоммерческиеПредложенияДокументыПереопределяемый.КоммерческоеПредложениеКлиентуПриФормированииСтруктурыДанных­Печати(
		МассивОбъектов,
		СтруктураДанныхДляПечати,
		ПараметрыПечати,
		СтандартнаяОбработка);
		
	Если Не СтандартнаяОбработка Тогда
		Возврат СтруктураДанныхДляПечати;
	КонецЕсли;
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
	
	ОтображатьСкидки = Истина;
	Если ПараметрыПечати.Свойство("ОтображатьСкидки")
		И Не ПараметрыПечати.ОтображатьСкидки Тогда
		ОтображатьСкидки = Ложь;
	КонецЕсли;
	
	Запрос.УстановитьПараметр("ОтображатьСкидки", ОтображатьСкидки);
	
	Запрос.Текст =
	"ВЫБРАТЬ
	|	КоммерческоеПредложениеКлиенту.Ссылка                              КАК Ссылка,
	|	КоммерческоеПредложениеКлиенту.Дата                                КАК Дата,
	|	КоммерческоеПредложениеКлиенту.Номер                               КАК Номер,
	|	КоммерческоеПредложениеКлиенту.Менеджер                            КАК Менеджер,
	|	КоммерческоеПредложениеКлиенту.КонтактноеЛицо                      КАК КонтактноеЛицо,
	|	КоммерческоеПредложениеКлиенту.Организация                         КАК Организация,
	|	КоммерческоеПредложениеКлиенту.СрокДействия                        КАК СрокДействия,
	|	КоммерческоеПредложениеКлиенту.Валюта                              КАК Валюта,
	|	КоммерческоеПредложениеКлиенту.ЦенаВключаетНДС                     КАК ЦенаВключаетНДС,
	|	КоммерческоеПредложениеКлиенту.Налогообложение                     КАК УчитыватьНДС,
	|	КоммерческоеПредложениеКлиенту.УсловияДоставкиТекст                КАК УсловияДоставки,
	|	КоммерческоеПредложениеКлиенту.УсловияОплатыТекст                  КАК УсловияОплаты,
	|	КоммерческоеПредложениеКлиенту.ПрочаяДополнительнаяИнформацияТекст КАК ПрочиеУсловия,
	|	КоммерческоеПредложениеКлиенту.Клиент                              КАК Клиент,
	|	КоммерческоеПредложениеКлиенту.Контрагент                          КАК Контрагент,
	|	КоммерческоеПредложениеКлиенту.ВариантУказанияСрокаПоставки        КАК ВариантУказанияСрокаПоставки,
	|	КоммерческоеПредложениеКлиенту.МожетВыкупатьсяЧастично             КАК МожетВыкупатьсяЧастично
	|ИЗ
	|	Документ.КоммерческоеПредложениеКлиенту КАК КоммерческоеПредложениеКлиенту
	|ГДЕ
	|	КоммерческоеПредложениеКлиенту.Ссылка В(&МассивОбъектов)
	|
	|УПОРЯДОЧИТЬ ПО
	|	Ссылка
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	Товары.Ссылка                                                   КАК Ссылка,
	|	Товары.НомерСтроки                                              КАК НомерСтроки,
	|	Товары.Номенклатура                                             КАК Номенклатура,
	|	Товары.Характеристика                                           КАК Характеристика,
	|	Товары.СуммаРучнойСкидки + Товары.СуммаАвтоматическойСкидки     КАК СуммаСкидки,
	|	Товары.ПроцентРучнойСкидки + Товары.ПроцентАвтоматическойСкидки КАК ПроцентСкидки,
	|	&УсловияЕдиницыИзмерения                                        КАК ЕдиницаИзмерения,
	|	Товары.Количество                                               КАК Количество,
	|ВЫБОР
	|	КОГДА &ОтображатьСкидки
	|		ТОГДА Товары.Цена
	|	ИНАЧЕ ВЫБОР
	|			КОГДА Товары.Количество = 0
	|				ТОГДА 0
	|			ИНАЧЕ Товары.Сумма / Товары.Количество
	|		КОНЕЦ
	|КОНЕЦ                                                              КАК Цена,
	|	Товары.СуммаСНДС                                                КАК СуммаСНДС,
	|	Товары.Сумма                                                    КАК Сумма,
	|	Товары.СуммаНДС                                                 КАК СуммаНДС,
	|	Товары.СрокПоставки                                             КАК СрокПоставки
	|ИЗ
	|	Документ.КоммерческоеПредложениеКлиенту.Товары КАК Товары
	|ГДЕ
	|	Товары.Ссылка В(&МассивОбъектов)
	|
	|УПОРЯДОЧИТЬ ПО
	|	Ссылка,
	|	НомерСтроки";
	
	УсловияЕдиницыИзмерения = "Товары.ЕдиницаИзмерения";
	КоммерческиеПредложенияДокументыПереопределяемый.ПолучитьТекстЗапросаПолученияЕдиницыИзмерения(УсловияЕдиницыИзмерения);
	Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловияЕдиницыИзмерения", УсловияЕдиницыИзмерения);
	
	ПакетРезультатовЗапроса = Запрос.ВыполнитьПакет(); // Массив из ВыборкаИзРезультатаЗапроса
	
	СтруктураДанныхДляПечати = Новый Структура;
	СтруктураДанныхДляПечати.Вставить("РезультатПоШапке",   ПакетРезультатовЗапроса[0]);
	СтруктураДанныхДляПечати.Вставить("РезультатПоТоварам", ПакетРезультатовЗапроса[1]);
	
	Возврат СтруктураДанныхДляПечати;
	
КонецФункции

// Подготовка данных объекта по данным для печати.
// 
// Параметры:
// 	ДанныеШапки - ВыборкаИзРезультатаЗапроса.
// 	ТаблицаТовары - ТаблицаЗначений - товары:
//    * НомерСтроки - Число.
Функция ДанныеОбъектаПоДаннымДляПечати(ДанныеШапки, ТаблицаТовары)

	ДанныеОбъекта = Новый Структура;
	
#Область ДанныеОрганизации
	
	СведенияОрганизации = Новый Структура;
	СведенияОрганизации.Вставить("Наименование");
	СведенияОрганизации.Вставить("ПолноеНаименование");
	СведенияОрганизации.Вставить("Телефоны");
	СведенияОрганизации.Вставить("ЮридическийАдрес");
	СведенияОрганизации.Вставить("ЭлектроннаяПочта");
	
	КоммерческиеПредложенияДокументыПереопределяемый.ЗаполнитьДанныеОрганизации(ДанныеШапки.Организация, СведенияОрганизации);
	
	Если ЗначениеЗаполнено(СведенияОрганизации.ПолноеНаименование) Тогда
		ПредставлениеОрганизации = СведенияОрганизации.ПолноеНаименование;
	Иначе
		ПредставлениеОрганизации = СведенияОрганизации.Наименование;
	КонецЕсли;
	
#КонецОбласти
	
#Область КонтактнаяИнформация
	
	Если ЗначениеЗаполнено(ДанныеШапки.Менеджер) Тогда
		
		МассивСМенеджером = Новый Массив;
		МассивСМенеджером.Добавить(ДанныеШапки.Менеджер);
		
		ТребуемыеТипыКонтактнойИнформации = Новый Массив;
		ТребуемыеТипыКонтактнойИнформации.Добавить(Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
		
		ТаблицаКонтактнойИнформации = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъектов(
		                                   МассивСМенеджером,
		                                   ТребуемыеТипыКонтактнойИнформации,,
		                                   ДанныеШапки.Дата);
		
		АдресЭлектроннойПочтыМенеджера = КоммерческиеПредложенияДокументы.ПредставлениеКонтактнойИнформацииИзТаблицы(
		                                   ТаблицаКонтактнойИнформации,
		                                   Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
		
	Иначе
		ТелефонМенеджера = "";
		АдресЭлектроннойПочтыМенеджера   = "";
	КонецЕсли;
	
#КонецОбласти

#Область Товары

	ЕстьСкидки = Ложь;
	ДанныеОбъекта.Вставить("СуммаВсего", 0);
	ДанныеОбъекта.Вставить("СуммаВсегоНДС", 0);
	ДанныеОбъекта.Вставить("КоличествоТоваров", 0);
	ДанныеОбъекта.Вставить("Товары", Новый Массив);
	
	Для Каждого СтрокаТовары Из ТаблицаТовары Цикл
		
		Если СтрокаТовары.СуммаСкидки <> 0 Тогда
			ЕстьСкидки = Истина;
		КонецЕсли;
		
		ДанныеОбъекта.СуммаВсего        = ДанныеОбъекта.СуммаВсего + СтрокаТовары.Сумма;
		ДанныеОбъекта.СуммаВсегоНДС     = ДанныеОбъекта.СуммаВсегоНДС + СтрокаТовары.СуммаНДС;
		ДанныеОбъекта.КоличествоТоваров = ДанныеОбъекта.КоличествоТоваров + 1;
		
		СтрокаТаблицыТовары = Новый Структура;
		
		НаименованиеТовара = КоммерческиеПредложенияДокументыКлиентСервер.ПредставлениеНоменклатурыДляПечати(СтрокаТовары.Номенклатура, СтрокаТовары.Характеристика);
		
		СтрокаТаблицыТовары.Вставить("НомерСтроки",      СтрокаТовары.НомерСтроки);
		СтрокаТаблицыТовары.Вставить("Номенклатура",     НаименованиеТовара);
		СтрокаТаблицыТовары.Вставить("Количество",       СтрокаТовары.Количество);
		СтрокаТаблицыТовары.Вставить("ЕдиницаИзмерения", СтрокаТовары.ЕдиницаИзмерения);
		СтрокаТаблицыТовары.Вставить("Цена",             Формат(СтрокаТовары.Цена,"ЧДЦ=2; ЧРД=."));
		СтрокаТаблицыТовары.Вставить("СуммаСНДС",        Формат(СтрокаТовары.СуммаСНДС,"ЧДЦ=2; ЧРД=."));
		СтрокаТаблицыТовары.Вставить("СуммаСкидки",      Формат(СтрокаТовары.СуммаСкидки,"ЧДЦ=2; ЧРД=."));
		СтрокаТаблицыТовары.Вставить("СрокПоставки",     КоммерческиеПредложенияДокументыКлиентСервер.СрокПоставкиСтрокой(ДанныеШапки.ВариантУказанияСрокаПоставки, 
		                                                                                                                  СтрокаТовары.СрокПоставки));
		
		КоммерческиеПредложенияДокументыПереопределяемый.ДополнитьДанныеОбъектаДляПечати(СтрокаТаблицыТовары, СтрокаТовары, ДанныеОбъекта);
		
		ДанныеОбъекта.Товары.Добавить(СтрокаТаблицыТовары);
		
	КонецЦикла;

#КонецОбласти

#Область ЗаполнениеДанныхОбъекта 

	ПредставлениеСуммДокумента = КоммерческиеПредложенияДокументы.ПредставлениеСуммДокументаДляПечати(ДанныеШапки,
	                                                                                                  ДанныеОбъекта.СуммаВсего,
	                                                                                                  ДанныеОбъекта.СуммаВсегоНДС,
	                                                                                                  ДанныеОбъекта.КоличествоТоваров);
	
	ДанныеОбъекта.Вставить("Ссылка",                              ДанныеШапки.Ссылка);
	ДанныеОбъекта.Вставить("Организация",                         ДанныеШапки.Организация);
	ДанныеОбъекта.Вставить("ТелефонОрганизации",                  СведенияОрганизации.Телефоны);
	ДанныеОбъекта.Вставить("АдресОрганизации",                    СведенияОрганизации.ЮридическийАдрес);
	ДанныеОбъекта.Вставить("АдресЭлектроннойПочтыОрганизации",    ?(СведенияОрганизации.Свойство("ЭлектроннаяПочта"),СведенияОрганизации.ЭлектроннаяПочта, ""));
	ДанныеОбъекта.Вставить("Клиент",                              ДанныеШапки.Клиент);
	ДанныеОбъекта.Вставить("Контрагент",                          ДанныеШапки.Контрагент);
	ДанныеОбъекта.Вставить("ПредставлениеОрганизации",            ПредставлениеОрганизации);
	ДанныеОбъекта.Вставить("ПредставлениеКлиента",                ПредставлениеКлиента(ДанныеОбъекта.Клиент, ДанныеОбъекта.Контрагент));
	ДанныеОбъекта.Вставить("КонтактноеЛицо",                      ДанныеШапки.КонтактноеЛицо);
	ДанныеОбъекта.Вставить("Менеджер",                            ДанныеШапки.Менеджер);
	ДанныеОбъекта.Вставить("АдресЭлектроннойПочтыМенеджера",      АдресЭлектроннойПочтыМенеджера);
	ДанныеОбъекта.Вставить("ТелефонМенеджера",                    ТелефонМенеджера);
	ДанныеОбъекта.Вставить("Номер",                               ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ДанныеШапки.Номер, Ложь, Истина));
	ДанныеОбъекта.Вставить("Дата",                                Формат(ДанныеШапки.Дата,"ДЛФ=D"));
	ДанныеОбъекта.Вставить("ВариантУказанияСрокаПоставки",        ДанныеШапки.ВариантУказанияСрокаПоставки);
	ДанныеОбъекта.Вставить("УсловияОплаты",                       ДанныеШапки.УсловияОплаты);
	ДанныеОбъекта.Вставить("УсловияДоставки",                     ДанныеШапки.УсловияДоставки);
	ДанныеОбъекта.Вставить("ПрочиеУсловия",                       ДанныеШапки.ПрочиеУсловия);
	ДанныеОбъекта.Вставить("КонтактнаяИнформацияПредложения",     КонтактнаяИнформацияПредложения(ДанныеОбъекта));
	ДанныеОбъекта.Вставить("ИтоговаяСтрока",                      ПредставлениеСуммДокумента.ИтоговаяСтрока);
	ДанныеОбъекта.Вставить("СуммаПрописью",                       ПредставлениеСуммДокумента.СуммаПрописью);
	ДанныеОбъекта.Вставить("ЕстьСкидки",                          ЕстьСкидки);
	ДанныеОбъекта.Вставить("ПредставлениеСрокаДействия",          КоммерческиеПредложенияДокументы.ПредставлениеСрокаДействияДляПечати(ЕстьСкидки, ДанныеШапки.СрокДействия));
	ДанныеОбъекта.Вставить("ПредставлениеЧастичногоВыкупа",       КоммерческиеПредложенияДокументы.ПредставлениеЧастичногоВыкупаДляПечати(ДанныеШапки.МожетВыкупатьсяЧастично));
	ДанныеОбъекта.Вставить("УсловияПоставкиПредставление",        КоммерческиеПредложенияДокументы.ПредставлениеУсловийПоставкиДляПечати(ДанныеОбъекта.УсловияОплаты, 
	                                                                                                                                     ДанныеОбъекта.УсловияДоставки, 
	                                                                                                                                     ДанныеОбъекта.ПрочиеУсловия));
	
#КонецОбласти
	
	Возврат ДанныеОбъекта;
	
КонецФункции

Функция ПредставлениеКлиента(Клиент, Контрагент)
	
	Возврат КоммерческиеПредложенияДокументы.ПредставлениеПартнераКонтрагента(Клиент, Контрагент);
	
КонецФункции


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




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


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


С этим кодом показывает только "Коммерческое предложение клиенту внешняя доработка"

Код процедуры "Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт "с менеджера документа КоммерческоеПредложениеКлиенту ниже
// Заполняет список команд печати.
// 
// Параметры:
//   КомандыПечати - см. УправлениеПечатью.СоздатьКоллекциюКомандПечати
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
	
	НастройкиУчета = КоммерческиеПредложенияДокументы.НастройкиУчета();
	
	Если НастройкиУчета.НеВыводитьСкидкиВДокументахПродажи Тогда
		
		КомандаПечати = КомандыПечати.Добавить();
		КомандаПечати.МенеджерПечати                 = "Документ.КоммерческоеПредложениеКлиенту";
		КомандаПечати.Идентификатор                  = "КоммерческоеПредложениеКлиенту";
		КомандаПечати.Представление                  = НСтр("ru = 'Коммерческое предложение клиенту';
															|en = 'Sales quotation for customer'");
		КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
		ДополнительныеПараметры = Новый Структура;
		ДополнительныеПараметры.Вставить("ОтображатьСкидки", Ложь);
		КомандаПечати.ДополнительныеПараметры = ДополнительныеПараметры;
	
	ИначеЕсли НастройкиУчета.ВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи Тогда
		
		КомандаПечати = КомандыПечати.Добавить();
		КомандаПечати.МенеджерПечати                 = "Документ.КоммерческоеПредложениеКлиенту";
		КомандаПечати.Идентификатор                  = "КоммерческоеПредложениеКлиенту";
		КомандаПечати.Представление                  = НСтр("ru = 'Коммерческое предложение клиенту (со скидками)';
															|en = 'Sales quotation for customer (with discount)'");
		КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
		ДополнительныеПараметры = Новый Структура;
		ДополнительныеПараметры.Вставить("ОтображатьСкидки", Истина);
		КомандаПечати.ДополнительныеПараметры = ДополнительныеПараметры;
		
		КомандаПечати = КомандыПечати.Добавить();
		КомандаПечати.МенеджерПечати                 = "Документ.КоммерческоеПредложениеКлиенту";
		КомандаПечати.Идентификатор                  = "КоммерческоеПредложениеКлиенту";
		КомандаПечати.Представление                  = НСтр("ru = 'Коммерческое предложение клиенту (без скидок)';
															|en = 'Sales quotation for customer (without discount)'");
		КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
		ДополнительныеПараметры = Новый Структура;
		ДополнительныеПараметры.Вставить("ОтображатьСкидки", Ложь);
		КомандаПечати.ДополнительныеПараметры = ДополнительныеПараметры;
		
	Иначе
		
		// Коммерческое предложение
		КомандаПечати = КомандыПечати.Добавить();
		КомандаПечати.МенеджерПечати = "Документ.КоммерческоеПредложениеКлиенту";
		КомандаПечати.Идентификатор = "КоммерческоеПредложениеКлиенту";
		КомандаПечати.Представление = НСтр("ru = 'Коммерческое предложение клиенту';
											|en = 'Sales quotation for customer'");
		КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
		ДополнительныеПараметры = Новый Структура;
		ДополнительныеПараметры.Вставить("ОтображатьСкидки", Истина);
		КомандаПечати.ДополнительныеПараметры = ДополнительныеПараметры;
		
	КонецЕсли;
	
КонецПроцедуры
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1831019 16.11.22 09:02 Сейчас в теме
Шо? Эта процедура предназначена для модуля менеджера конкретного объекта метаданных.
3. Gok9 16.11.22 09:16 Сейчас в теме
(2) А можно ли как-то добавить код этой процедуры с условиями в ВПФ просто я не знаю куда впихнуть этот код, чтобы при печати пользователь мог выбрать печать со скидкой, печать без скидки как в самой конфигурации, можете подсказать где можно разместить этот код?
   НастройкиУчета = КоммерческиеПредложенияДокументы.НастройкиУчета();
    
    Если НастройкиУчета.НеВыводитьСкидкиВДокументахПродажи Тогда
        
        КомандаПечати = КомандыПечати.Добавить();
        КомандаПечати.МенеджерПечати                 = "Документ.КоммерческоеПредложениеКлиенту";
        КомандаПечати.Идентификатор                  = "КоммерческоеПредложениеКлиенту";
        КомандаПечати.Представление                  = НСтр("ru = 'Коммерческое предложение клиенту';
                                                            |en = 'Sales quotation for customer'");
        КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
        ДополнительныеПараметры = Новый Структура;
        ДополнительныеПараметры.Вставить("ОтображатьСкидки", Ложь);
        КомандаПечати.ДополнительныеПараметры = ДополнительныеПараметры;
    
    ИначеЕсли НастройкиУчета.ВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи Тогда
        
        КомандаПечати = КомандыПечати.Добавить();
        КомандаПечати.МенеджерПечати                 = "Документ.КоммерческоеПредложениеКлиенту";
        КомандаПечати.Идентификатор                  = "КоммерческоеПредложениеКлиенту";
        КомандаПечати.Представление                  = НСтр("ru = 'Коммерческое предложение клиенту (со скидками)';
                                                            |en = 'Sales quotation for customer (with discount)'");
        КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
        ДополнительныеПараметры = Новый Структура;
        ДополнительныеПараметры.Вставить("ОтображатьСкидки", Истина);
        КомандаПечати.ДополнительныеПараметры = ДополнительныеПараметры;
        
        КомандаПечати = КомандыПечати.Добавить();
        КомандаПечати.МенеджерПечати                 = "Документ.КоммерческоеПредложениеКлиенту";
        КомандаПечати.Идентификатор                  = "КоммерческоеПредложениеКлиенту";
        КомандаПечати.Представление                  = НСтр("ru = 'Коммерческое предложение клиенту (без скидок)';
                                                            |en = 'Sales quotation for customer (without discount)'");
        КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
        ДополнительныеПараметры = Новый Структура;
        ДополнительныеПараметры.Вставить("ОтображатьСкидки", Ложь);
        КомандаПечати.ДополнительныеПараметры = ДополнительныеПараметры;
        
    Иначе
        
        // Коммерческое предложение
        КомандаПечати = КомандыПечати.Добавить();
        КомандаПечати.МенеджерПечати = "Документ.КоммерческоеПредложениеКлиенту";
        КомандаПечати.Идентификатор = "КоммерческоеПредложениеКлиенту";
        КомандаПечати.Представление = НСтр("ru = 'Коммерческое предложение клиенту';
                                            |en = 'Sales quotation for customer'");
        КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
        ДополнительныеПараметры = Новый Структура;
        ДополнительныеПараметры.Вставить("ОтображатьСкидки", Истина);
        КомандаПечати.ДополнительныеПараметры = ДополнительныеПараметры;
        
    КонецЕсли;
Показать
Прикрепленные файлы:
Оставьте свое сообщение

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