Внешние печатные формы в восьмерке II (дополнительные параметры)

Программирование - Практика программирования

С выходом платформы 8.1 появились новые редакции типовых конфигураций (УТ 10.3 и БП 1.6), а с ними и новые возможности в создании внешних печатных форм.

Статья является продолжением цикла статей и разработок:
Внешние печатные формы в восьмерке http://infostart.ru/blogs/157
Обработка для тестирования внешних печатных форм в восьмерке http://infostart.ru/projects/833/
Использование встроенного почтового клиента - http://infostart.ru/blogs/161/
Документ с печатью и подписью - http://infostart.ru/blogs/162/
Внешние печатные формы в восьмерке II - http://infostart.ru/blogs/324/
Заполнение табличных частей документов в восьмерке (внешние обработки) http://infostart.ru/blogs/345/
Обработка для тестирования внешних обработок изменения табличных частей http://infostart.ru/projects/1749/
Использование свойств объектов при доработке типовых конфигураций http://infostart.ru/blogs/692/
В конфигурациях под 8.1 появилась возможность передавать параметры во внешнюю обработку. Для того чтобы воспользоваться новой технологией у обработки должен быть реквизит ДополнительныеПараметры типа «Произвольный». Если для вызова обработки предусмотрены параметры, то они будут в указанном реквизите. Параметры передаются в виде структуры.
Например, в типовой конфигурации в документе «РеализацияТоваровУслуг» предусмотрена печать накладной, как в валюте, так и в рублях. Реализуется это с помощью параметра, передаваемого в функцию Функция ПечатьДокумента(СуммыВРублях = Ложь).
Аналогично можно передать параметр во внешнюю печатную форму через реквизит «ДополнительныеПараметры». Для приема параметра можно воспользоваться кодом:
СуммыВРублях = Ложь;
Если ТипЗнч(ДополнительныеПараметры) = Тип("Структура") Тогда
	Если ДополнительныеПараметры.Свойство("СуммыВРублях") Тогда
		СуммыВРублях = ДополнительныеПараметры.СуммыВРублях;
	КонецЕсли;
КонецЕсли; 

Теперь осталось настроить передачу параметра внешней печатной форме в конфигурации. Для этого создаем новый элемент справочника «Внешние обработки» и заполняем его, как показано на рисунке.
В результате, мы получаем две печатные формы в одной внешней обработке.

См. также

Комментарии
1. ineoosaki (ineoosaki) 04.02.08 12:47 Сейчас в теме
2 poppy
Скоро появиться продолжение от м-ра Евгена ;)
2. Аркадий Кучер (Abadonna) 3676 04.02.08 14:53 Сейчас в теме
(1) Жаль что этому мистеру по интернету не получится кое-что почистить
3. Poppy (poppy) 3304 05.02.08 11:51 Сейчас в теме
4. Юра (Yra_bes) 27.08.08 20:04 Сейчас в теме
5. ineoosaki (ineoosaki) 15.01.09 05:03 Сейчас в теме
даду еще ссылку на статью о печатных формах в восьмерке.
http://uit.kiev.ua/ru/company/articles/index.php?ELEMENT_ID=3055
6. Алекс Маслюков (Alex_1066) 16.09.09 17:27 Сейчас в теме
...очень хотел посмотреть реализацию, но в бухгалтерии этого не нашёл :(
7. Poppy (poppy) 3304 16.09.09 19:13 Сейчас в теме
(6) Чего не нашел?

Описанный механизм в типовой БП поддерживается. В качестве примера можешь посмотреть эту http://infostart.ru/projects/4355/ обработку.
8. Алекс Маслюков (Alex_1066) 16.09.09 20:24 Сейчас в теме
спасибки... обязательно посмотрю
9. Виталий Глазунов (Altez) 251 08.11.09 23:57 Сейчас в теме
(4) хароший умный дэвушка,)
списиб
10. Сергей Корнев (Jako) 46 05.01.10 10:40 Сейчас в теме
За обработку тестирования табличных частей особ спасиб!!!
11. Анатолий Кримчак (h_vitya) 20.09.11 17:03 Сейчас в теме
ineoosaki пишет:

даду еще ссылку на статью о печатных формах в восьмерке.
http://uit.kiev.ua/ru/company/article...NT_ID=3055


Спасибо! То что надо =)
12. Пуд (Пуд) 14.12.11 14:55 Сейчас в теме
Спасибо!Как-то этот момент от меня ускользнул.
13. Maratimus Arslan (maratimus) 21 15.12.11 12:43 Сейчас в теме
очень помогла , спасибо разбогатею пришлю деньги, да для тех кто не знает, для отладки нужно поставить брейк на строку ТабДокумент = ВнешняяОбработка.Печать(); , а потом нажать F11.
Maximysis; perforator; +2 Ответить
14. Olga Gabuza (OLga_gab) 02.02.12 02:16 Сейчас в теме
За ссылочку на статью о печатных формах в восьмерке.
http://uit.kiev.ua/ru/company/article...NT_ID=3055
спасибо = очень классно написано
15. Mikle Kaletin (Shickom) 29.02.12 07:46 Сейчас в теме
Хотелось бы аналогичной статьи для 8.2 управляемого приложения
16. Роман Хусяинов (rom-x) 152 25.10.12 17:40 Сейчас в теме
Есть внешняя обработка, в которой 2 макета, в процедуре Печать() код:
Если ТипЗнч(ДополнительныеПараметры) = Тип("Структура") Тогда
    	Если ДополнительныеПараметры.Свойство("ИмяМакета") Тогда
    		ИмяМакета = ДополнительныеПараметры.ИмяМакета;
    	КонецЕсли;
    КонецЕсли;    
...Показать Скрыть


При регистрации указываю 2 строки, в первой Параметр ИмяМакета = Макет, во второй ИмяМакета = Макет1, выходит всегда только одна печатная форма, если первую строчку указываю Макет, то выходит Макет, соответственно если узказать Макет1 а во второй Макет, то выходит Макет1, что не так делаю?
17. Николай . (Kolunya) 7 26.02.13 14:10 Сейчас в теме
Спасибо за инфу!!!
создал обработку, при регистрации сделал несколько строк с разными доп.параметрами (указал разные ИмяМакета)
все супер!, но ...
в списке печФорм при нажатии на кн.Печать - одно и тоже наименование из регистрации ПФ "Комплект документов покупателя" и "Комплект документов покупателя(2)", "Комплект документов покупателя(3)"..(((
как можно задать разные названия? типа "Комплект - Торг12", "Комплект Спецификация"
Вариант с регистрацией еще одной печформы не предлагать, хочу вот так красиво попробовать реализовать..;-)
возможно такое?
18. msv23 Иванов (msv23) 03.04.14 13:37 Сейчас в теме
19. Дмитрий Иванов (MasterIt) 09.12.14 16:18 Сейчас в теме
Хороший материал, мне как новичку очень пригодился, спасибо!
20. г. Казань Рустем Гумеров (Rustig) 794 06.08.15 19:12 Сейчас в теме
для всех остальных:
для использования ДополнительныхПараметров приходится указывать ЗаменяемыеПечатныеФормы... то есть они должны быть изначально....
а если печатная форма создается как новая, а не как заменяемая?... тогда обходимся без дополнительных параметров..... просто создаем столько печатных форм, сколько разных значений параметра.
кстати, дополнительные параметры могут принимать только значения примитивных типов: строка, булево, дата, число.
21. Евгений Гордеев (Mehanik1977) 30.04.17 20:07 Сейчас в теме
Подскажите пожалуйста, совсем новичок. Делал внешнюю печатную форму для документа ОС_Инвентаризация. Перенес в нее функцию из модуля документа
Функция ПолучитьЛокальнуюПеременную(ИмяПеременной) Экспорт
	Результат = "";
	Если НЕ ДополнительныеСвойства.Свойство(ИмяПеременной,Результат) Тогда
		Если ИмяПеременной = "Счет101" Тогда
			Результат = ПланыСчетов.ЕПСБУ.ОС;
		ИначеЕсли ИмяПеременной = "Счет102" Тогда
			Результат = ПланыСчетов.ЕПСБУ.НМА;
		ИначеЕсли ИмяПеременной = "Счет103" Тогда
			Результат = ПланыСчетов.ЕПСБУ.НПА;
		ИначеЕсли ИмяПеременной = "МассивКВД" Тогда
			Результат = Новый Массив;
			Результат.Добавить(Перечисления.КВД.Бюджет);
			Результат.Добавить(Перечисления.КВД.Внебюджет);
			Результат.Добавить(Перечисления.КВД.СубсидииНаГосзадание);
			Результат.Добавить(Перечисления.КВД.СубсидииНаИныеЦели);
			Результат.Добавить(Перечисления.КВД.БюджетныеИнвестиции);
			Результат.Добавить(Перечисления.КВД.СредстваОМС);
		ИначеЕсли ИмяПеременной = "МассивВидовНФА" Тогда
			Результат = Новый Массив;
			Результат.Добавить(Перечисления.ВидыНФА.ОС);
			Результат.Добавить(Перечисления.ВидыНФА.НМА);
			Результат.Добавить(Перечисления.ВидыНФА.НПА);
		ИначеЕсли ИмяПеременной = "МассивИсключаемыхСостояний" Тогда
			Результат = Новый Массив;
			Результат.Добавить(Перечисления.СостоянияОС.ПустаяСсылка());
			Результат.Добавить(Перечисления.СостоянияОС.СнятоСУчета);
		ИначеЕсли ИмяПеременной = "СписокБалансов" Тогда
			Результат = УправлениеМатериальнымиЗапасами.СформироватьСписокБалансовДляВыбора();
		ИначеЕсли ИмяПеременной = "СчетБибл" Тогда
			Результат = Новый Массив;
			Результат.Добавить(ПланыСчетов.ЕПСБУ.ОС_ОЦДИ_БиблиотечныйФонд);
			Результат.Добавить(ПланыСчетов.ЕПСБУ.ОС_ИДИ_БиблиотечныйФонд);
			Результат.Добавить(ПланыСчетов.ЕПСБУ.ОС_ПЛ_БиблиотечныйФонд);
		КонецЕсли;
		ДополнительныеСвойства.Вставить(ИмяПеременной,Результат);
	КонецЕсли;
	
	Возврат Результат;
КонецФункции
...Показать Скрыть


При проверке синтаксиса пишет что переменная ДополнительныеСвойства не определена. Я не понимаю откуда она должна браться? В модуле документа тоже не понял как посмотреть где она определяется и что это такое вообще. Подскажите пожалуйста, в инете не нашел что почитать про это(
Оставьте свое сообщение