Доп форма перед печатью

1. user2109808 17.03.25 14:12 Сейчас в теме
делаю в расширении.
в расходной накладной добавляю новую печатку ТОРГ12 , процедуру печать и добавить команду все это через директиву &после добавляю.
так вот нужно, перед печатью ТОРГ12 Валютный открыть маленькую форму, где пользователь выбирает валюту и Сам ставит курс, по этому курсу дальше будет идти пересчет всех итогов сумм документа и замена копеек на центы или наоборот , в зависимости от курса. так у меня случился ступор, в форме документа росход наклд, процедура
&НаКлиенте
&После("Подключаемый_ВыполнитьКоманду")
Процедура Расш1_Подключаемый_ВыполнитьКоманду(Команда)
	
	// TODO: Пересмотреть нестандартное внедрение в пользу стандартного.
	//УправлениеПечатьюКлиент.ВыполнитьПодключаемуюКомандуПечати(Команда, ЭтотОбъект, Объект);
	//// УНФ
	//СтатистикаИспользованияФормКлиент.ДобавитьСтатистикуКомандПечати(ЭтотОбъект, Команда);
	//// Конец УНФ
	
	
	Если Команда.Имя = "ПодменюПечатьОбычное_ТОРГ12Валютный" Тогда  
		ОткрытьФорму("Документ.РасходнаяНакладная.Форма.Расш2_ФормаВыбораКурса");
	КонецЕсли; 
	//ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
Показать

открываем форму, в открытой форме
&НаКлиенте
Процедура Ок(Команда)
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("ВалютаВыбора", ВалютаВыбора);
	ПараметрыФормы.Вставить("КурсВалюты", КурсВалюты); 
	Закрыть(ПараметрыФормы);
КонецПроцедуры
Показать

а как дальше передавать курс и валюту чтобы сделать пересчет?

модуль менеджера документа
&После("Печать")
Процедура Расш1_Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода)
	Перем Ошибки;
	
//	#Вставка 
		ВозможныеВарианты = Обработки.ПечатьТОРГ12Валютный.МатрицаВозможныхВариантов();
		Для каждого СтрокаТаблицы Из ВозможныеВарианты Цикл
			
			ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, Обработки.ПечатьТОРГ12Валютный.ИдентификаторПечатнойФормы(СтрокаТаблицы.ВключаяУслуги, СтрокаТаблицы.ИспользоватьФаксимиле));
			Если ПечатнаяФорма <> Неопределено Тогда
							
				ПечатнаяФорма.ТабличныйДокумент = Новый ТабличныйДокумент;
				ПечатнаяФорма.ТабличныйДокумент.КлючПараметровПечати = Обработки.ПечатьТОРГ12Валютный.КлючПараметровПечати();
				ПечатнаяФорма.ПолныйПутьКМакету = Обработки.ПечатьТОРГ12Валютный.ПолныйПутьКМакету();
				ПечатнаяФорма.СинонимМакета = Обработки.ПечатьТОРГ12Валютный.ПредставлениеПФ(СтрокаТаблицы.ВключаяУслуги, СтрокаТаблицы.ИспользоватьФаксимиле);
				
				ДанныеОбъектовПечати = ДанныеДокументовРегУчет(МассивОбъектов, СтрокаТаблицы.ИспользоватьФаксимиле, Истина, Ошибки);
				Обработки.ПечатьТОРГ12Валютный.СформироватьПФ(ПечатнаяФорма, ДанныеОбъектовПечати, ОбъектыПечати, СтрокаТаблицы.ВключаяУслуги);
				
			КонецЕсли;
			
		КонецЦикла;

//	#КонецВставки	
...
КонецПроцедуры

&После("ДобавитьКомандыПечати")
Процедура Расш1_ДобавитьКомандыПечати(КомандыПечати)
	ЗначениеИдентификатора = "АктОбОказанииУслуг,ТОРГ12,ТОРГ12СУслугами,ТОРГ12Валютный,Обработка.ПечатьСчетФактура.СчетФактура,%1,Обработка.ПечатьСчетФактура.УниверсальныйПередаточныйДокумент,М15,ТТН,Накладная,НакладнаяСУслугами,СчетНаОплату,ГарантийныйТалон,БланкТоварногоНаполнения";
	ЗначениеИдентификатора = СтрШаблон(ЗначениеИдентификатора, Обработки.ПечатьАктПередачиПрав.ИдентификаторПечатнойФормы());
	Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьСерийныеНомера") Тогда
		
		ЗначениеИдентификатора = СтрЗаменить(ЗначениеИдентификатора, ",ГарантийныйТалон", "");
		
	КонецЕсли;
		
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Идентификатор = ЗначениеИдентификатора;
	КомандаПечати.Представление = ПечатьДокументовУНФ.ПредставлениеКомплектаДокументов();
	КомандаПечати.ПроверкаПроведенияПередПечатью = Ложь;
	КомандаПечати.ДополнитьКомплектВнешнимиПечатнымиФормами = Истина;
	КомандаПечати.Порядок = 1;

		
	ВозможныеВарианты = Обработки.ПечатьТОРГ12.МатрицаВозможныхВариантов();
	Для каждого СтрокаТаблицы Из ВозможныеВарианты Цикл
		
		КомандаПечати = КомандыПечати.Добавить();
		КомандаПечати.Идентификатор = Обработки.ПечатьТОРГ12.ИдентификаторПечатнойФормы(СтрокаТаблицы.ВключаяУслуги, СтрокаТаблицы.ИспользоватьФаксимиле);
		КомандаПечати.Представление = Обработки.ПечатьТОРГ12.ПредставлениеПФ(СтрокаТаблицы.ВключаяУслуги, СтрокаТаблицы.ИспользоватьФаксимиле);
		КомандаПечати.ПроверкаПроведенияПередПечатью = Ложь;
		КомандаПечати.Порядок = 10;
		
		Если СтрокаТаблицы.ИспользоватьФаксимиле Тогда
			
			КомандаПечати.МестоРазмещения = "ПодменюПечатьФаксимиле";
			КомандаПечати.Порядок = КомандаПечати.Порядок + 1;
			
		КонецЕсли;
		
	КонецЦикла;      
	
//	#Вставить
		ВозможныеВарианты = Обработки.ПечатьТОРГ12Валютный.МатрицаВозможныхВариантов();
		Для каждого СтрокаТаблицы Из ВозможныеВарианты Цикл
			
			КомандаПечати = КомандыПечати.Добавить();
			КомандаПечати.Идентификатор = Обработки.ПечатьТОРГ12Валютный.ИдентификаторПечатнойФормы(СтрокаТаблицы.ВключаяУслуги, СтрокаТаблицы.ИспользоватьФаксимиле);
			КомандаПечати.Представление = Обработки.ПечатьТОРГ12Валютный.ПредставлениеПФ(СтрокаТаблицы.ВключаяУслуги, СтрокаТаблицы.ИспользоватьФаксимиле);
			КомандаПечати.ПроверкаПроведенияПередПечатью = Ложь;
			КомандаПечати.Порядок = 11;
			
			Если СтрокаТаблицы.ИспользоватьФаксимиле Тогда
				
				КомандаПечати.МестоРазмещения = "ПодменюПечатьФаксимиле";
				КомандаПечати.Порядок = КомандаПечати.Порядок + 1;
				
			КонецЕсли;
			
		КонецЦикла;
//	#КонецВставить
	
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Идентификатор = "М15";
	КомандаПечати.Представление = НСтр("ru = 'М15 (Накладная на отпуск материалов)'");
	КомандаПечати.ПроверкаПроведенияПередПечатью = Ложь;
	КомандаПечати.Порядок = 17;
КонецПроцедуры
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Sashares 33 17.03.25 17:46 Сейчас в теме
(1) Учитывай, что команда печати еще и в форме списка будет.
И может быть в других списках/журналах с этим документом.
user2109808; +1 Ответить
4. user2109808 18.03.25 07:20 Сейчас в теме
(2)
(3) учел в первую очередь
2. Snoocker 17.03.25 17:06 Сейчас в теме
Форму документа вообще трогать не надо, ищи "УправлениеПечатью.СоздатьКоллекциюКомандПечати" и там смотри какие колонки есть у таблицы "КомандыПечати", например "Обработчик", где ты, например, можешь указать процедуру общего модуля, в которой будешь открывать свою форму и уже из своей формы передавать параметры дальше куда тебе надо
5. user2109808 18.03.25 07:26 Сейчас в теме
(2)
(2)
общего модуля, в которой будешь открывать свою форму

а как эт, из общего модуля можно открыть форму ????
Прикрепленные файлы:
6. user2107191 18.03.25 07:38 Сейчас в теме
(5) Почему бы и не открыть форму из общего модуля?
7. user2109808 18.03.25 08:28 Сейчас в теме
(6)
(6) окей , а как мне из новой формы документа "расходной" передать в общий модуль передать значения выбранной валюты и курса?
8. user2109808 18.03.25 14:31 Сейчас в теме
я решил сделать через объект конфигуратора - добавить в команды новую. но она не хочет отображаться на форме почему-то. видимости поставлены везде.
почему?
Прикрепленные файлы:
10. Sashares 33 18.03.25 15:05 Сейчас в теме
(8) Если права на команду в роли расширения дал, и роль назначена пользователям, то видимо косяк платформы. Встречал такое.
11. user2109808 18.03.25 17:22 Сейчас в теме
(10) это где их настраивать?
12. Sashares 33 19.03.25 10:11 Сейчас в теме
(11) Если у расширения есть роли, то в роли расширения надо дать права на просмотр команды.
А роли назначать пользователям в пользовательском режиме.
Администрирование - Настройки пользователей и прав.
13. user2109808 19.03.25 10:45 Сейчас в теме
(12)
(12) оооо да, разобрался уже с этим. сказали можно через впф сделать. сижу пытаюсь данные передать в печатную форму чтобы пересчет по курсу произвести
9. user2109808 18.03.25 14:32 Сейчас в теме
прописываю в обработке команды

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

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