[ШАБЛОН] Внешняя печатная форма с отладкой

24.10.22

Учетные задачи - Печатные формы

Шаблон внешней печатной формы с отладкой. Поможет быстро создавать печатные формы, необходимо лишь изменять ключевые параметры, макет и заполнение Табличного документа.

Скачать исходный код

Наименование Файл Версия Размер
[ШАБЛОН] Внешняя печатная форма с отладкой.:
.epf 10,86Kb
26
.epf 0.0.1 10,86Kb 26 Скачать

Внешняя печатная форма прикрепляется к базе как дополнительная обработка через "Дополнительные отчеты и обработки". Для отладки все выведено на форму. 

Все тесты производились на платформе 8.3.20.1914, однако код отработает на любой из 8.2, 8.3. База КА 2.4.

 

Текст модуля объекта

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

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

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

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

		// Получение данных ответсвенных лиц из ДО по связанному документу.
		ПодписантОрганизация = "";
		ПодписантКонтрагент = "";
		ДолжностьПодписантОрганизация = "";
		ДолжностьПодписантКонтрагент = "";
		
		Результат = ИнтеграцияС1СДокументооборотВызовСервера.ДанныеОбъектаДОПоВнешнемуОбъекту(ЗаказКлиента);
		
		Если Результат <> Неопределено Тогда // найден
			Прокси = ИнтеграцияС1СДокументооборотПовтИсп.ПолучитьПрокси();   
			ОбъектXDTO = ИнтеграцияС1СДокументооборот.ПолучитьОбъект(Прокси, Результат.type, Результат.ID);
			Если ОбъектXDTO.objects.Количество() > 0 И ОбъектXDTO.objects[0].partyRows.rows.Количество() > 0 
				И ОбъектXDTO.objects[0].partyRows.rows[0].signedBy <> Неопределено Тогда
				ПодписантОрганизация = ОбъектXDTO.objects[0].partyRows.rows[0].signedBy.name;
			КонецЕсли;
			Если ОбъектXDTO.objects.Количество() > 0 И ОбъектXDTO.objects[0].partyRows.rows.Количество() > 1 
				И ОбъектXDTO.objects[0].partyRows.rows[1].signedBy <> Неопределено Тогда
				ПодписантКонтрагент = ОбъектXDTO.objects[0].partyRows.rows[1].signedBy.name;
				ФИОПодписант = СтрРазделить(ПодписантКонтрагент, " ", Истина);
				Если ФИОПодписант.Количество() = 3 Тогда
					ПодписантКонтрагент = ФИОПодписант[0] + " " + Лев(ФИОПодписант[1], 1) + ". " + Лев(ФИОПодписант[2], 1) + ".";
				КонецЕсли;
				ПодписантXDTO = ИнтеграцияС1СДокументооборот.ПолучитьОбъект(Прокси, ОбъектXDTO.objects[0].partyRows.rows[1].signedBy.objectID.type, ОбъектXDTO.objects[0].partyRows.rows[1].signedBy.objectID.ID);
				Если ПодписантXDTO.objects.Количество() > 0 Тогда
					ДолжностьПодписантКонтрагент = ПодписантXDTO.objects[0].position;
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;   
		
		Если ЗначениеЗаполнено(ПодписантОрганизация) Тогда
			
			Запрос = Новый Запрос;
			Запрос.Текст = 
				"ВЫБРАТЬ
				|	ОтветственныеЛицаОрганизаций.ФизическоеЛицо КАК ФизическоеЛицо,
				|	ОтветственныеЛицаОрганизаций.Должность КАК Должность
				|ИЗ
				|	Справочник.ОтветственныеЛицаОрганизаций КАК ОтветственныеЛицаОрганизаций
				|ГДЕ
				|	ОтветственныеЛицаОрганизаций.ОтветственноеЛицо = ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.Руководитель)
				|	И ОтветственныеЛицаОрганизаций.Владелец = &Владелец
				|	И ОтветственныеЛицаОрганизаций.ДатаНачала <= &Дата
				|	И (ОтветственныеЛицаОрганизаций.ДатаОкончания >= &Дата
				|			ИЛИ ОтветственныеЛицаОрганизаций.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1))
				|	И ОтветственныеЛицаОрганизаций.ФизическоеЛицо.Наименование = &Наименование";  
			
			Запрос.УстановитьПараметр("Владелец", ЗаказКлиента.Организация);
			Запрос.УстановитьПараметр("Дата", ЗаказКлиента.Дата);
			Запрос.УстановитьПараметр("Наименование", ПодписантОрганизация); 
			
			Выборка = Запрос.Выполнить().Выбрать(); 
			Если Выборка.Следующий() Тогда
				ПодписантОрганизация = ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(Выборка.ФизическоеЛицо, ЗаказКлиента.Дата);
				ДолжностьПодписантОрганизация = Выборка.Должность;
			КонецЕсли; 
			
		Иначе                                                        			
			ОтвЛ = ОтветственныеЛицаБП.ОтветственныеЛица(ЗаказКлиента.Организация, ЗаказКлиента.Дата);
			ПодписантОрганизация = ОтвЛ.РуководительПредставление;
			ДолжностьПодписантОрганизация = ОтвЛ.РуководительДолжностьПредставление;   		
		КонецЕсли;
		
		ОбластьПодвал.Параметры.Организация = ЗаказКлиента.Организация.НаименованиеСокращенное;
		ОбластьПодвал.Параметры.Контрагент = ЗаказКлиента.Контрагент.НаименованиеПолное;
		ОбластьПодвал.Параметры.ДолжностьПодписантОрганизация = ?(ЗначениеЗаполнено(ДолжностьПодписантОрганизация), ДолжностьПодписантОрганизация, "Представитель");
		ОбластьПодвал.Параметры.ДолжностьПодписантКонтрагент = ?(ЗначениеЗаполнено(ДолжностьПодписантКонтрагент), ДолжностьПодписантКонтрагент, "Представитель");
		ОбластьПодвал.Параметры.ПодписантОрганизация = ПодписантОрганизация;
		ОбластьПодвал.Параметры.ПодписантКонтрагент = ПодписантКонтрагент; 
		
		// Окрасим незаполненные поля
		Если НЕ ЗначениеЗаполнено(ДолжностьПодписантКонтрагент) Тогда
			ОбластьПодвал.Область(6,3,6,4).ЦветФона = ЦветаСтиля.ПолеСОшибкойФон;
		КонецЕсли;  
		
		ТабличныйДокумент.Вывести(ОбластьПодвал);
		
	КонецЦикла;
	
	УстановитьПривилегированныйРежим(Ложь);
	

	Возврат ТабличныйДокумент;

КонецФункции    

 

Текст формы

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

&НаКлиенте
Процедура ВыполнитьПечать(Команда)
	
	ВыполнитьПечатьНаСервере().Показать(); 
	
КонецПроцедуры

Данный шаблон внешней печатной формы был добавлен для ускорения поиска нужного кода и разработки.

Статья будет дорабатываться, будет добавлен полезный функционал, используемый в ПФ. 


 

Печать ПФ ВнешняяПФ Обработка Шаблон Печатная форма Внешняя печатная отладка

См. также

Infostart PrintWizard - создание и редактирование печатных форм в 1С 8.3

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 руб.

06.10.2023    8438    25    6    

46

Универсальная печать по шаблонам Word (Печать договоров из 1С БП 3, УНФ 1.6, ЗУП 3, УТ 11, КА 2, ERP 2, ДО 3)

Печатные формы Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

Научите вашу 1C печатать из 1С в файл Word (Например: трудовые договоры, договоры с контрагентами, спецификации, дополнительные соглашения, приказы, коммерческие предложения, акты, накладные, карточки партнера или любого справочника и многие другие). Универсальная печать предназначена для формирования печатных форм на основе шаблонов в формате Word из любой конфигурации 1С. С помощью данного инструмента можно самостоятельно заполнить шаблон реквизитами справочника или документа 1С и сформировать печатные формы на основании ссылки на любой объект.

5400 руб.

08.10.2019    43545    147    89    

141

УТ 11, КА 2, ERP 2: Настраиваемые под каждую организацию печать и подпись ответственных лиц в печатных формах (ТОРГ-12, Счёт-фактура, УПД, УКД, Заказ клиента, Акт сверки, М-15 и др.)

Печатные формы Взаиморасчеты Оптовая торговля Производство готовой продукции (работ, услуг) Акт сверки Оперативный учет Управляемые формы 1С:Управление торговлей 11 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Задайте для каждой организации свою печать и для каждого физического лица свою подпись. Выберите в документе печатную форму "... с печатью и подписью" - и автоматически сформируется табличный документ с печатью и подписями той организации и ответственных лиц, которые указаны в документе.

12000 руб.

13.03.2018    56989    185    76    

116

Печатные формы КС-2 и КС-3 в "1С:Бухгалтерия 3.0"

Печатные формы Производство готовой продукции (работ, услуг) Платформа 1С v8.3 Бухгалтерский учет Оперативный учет 1С:Бухгалтерия 3.0 Строительство Россия Бухгалтерский учет Платные (руб)

Откройте для себя заполнение КС-2 и КС-3 в "1С:Бухгалтерия 3.0". Вы получаете удобство, скорость и систему, чтобы заполнить, распечатать и сохранить формы КС-2 и КС-3 из документов "Оказание производственных услуг" или "Реализация товаров услуг". Вы можете заполнить дополнительную информацию о материалах из документов "Требование-накладная" и указать сведения, которые не предусмотрены типовой конфигурацией "1С:Бухгалтерия 3.0". Так же доступно множество настроек для формирования КС-2 и КС-3.

3240 руб.

13.02.2019    88862    394    44    

378

Путевой лист грузового автомобиля в 1С:Бухгалтерия 3.0

Печатные формы Учет рабочего времени Платформа 1С v8.3 Бухгалтерский учет Оперативный учет 1С:Бухгалтерия 3.0 Транспорт, автопарки, такси Россия Бухгалтерский учет Платные (руб)

Путевой лист грузового автомобиля в 1С:Бухгалтерия 3.0 - заполнить, распечатать, сохранить. Вы можете не только внести всю информацию и распечатать путевой лист грузового автомобиля в 1С, но и повторно использовать ранее введенные данные спустя любое время - данные путевого листа сохраняются в "1С:Бухгалтерия 3.0" без каких-либо доработок.

4200 руб.

23.08.2019    53914    161    63    

150

Шаблоны.doc - документы Word из 1С (1С:Совместимо!)

Печатные формы Документооборот и делопроизводство (СЭД) Учет документов Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x Бухгалтерский учет Управленческий учет Платные (руб)

Приложение для быстрого создания макетов печатных документов, заполняемых из 1С:Предприятие, без привлечения программистов и запуска конфигуратора. Шаблон готовится в редакторе MS Word, отлично освоенном офисными служащими. Так, на подготовку нового шаблона договора купли продажи со спецификацией потребуется 25 минут. Приложение будет полезно, если Вы работаете со множеством Word-шаблонов или если Вам надо часто создавать новые шаблоны. Есть сертификат "1С: Совместимо!". Версия ПРОФ доступна в виде расширения.

2000 руб.

05.09.2017    90401    62    82    

96
Оставьте свое сообщение