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

24.10.22

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

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
(только для физ. лиц)
[ШАБЛОН] Внешняя печатная форма с отладкой.:
.epf 10,86Kb ver:0.0.1
33 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

Все тесты производились на платформе 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).ЦветФона = ЦветаСтиля.ПолеСОшибкойФон;
		КонецЕсли;  
		
		ТабличныйДокумент.Вывести(ОбластьПодвал);
		
	КонецЦикла;
	
	УстановитьПривилегированныйРежим(Ложь);
	

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

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

 

Текст формы

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

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

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

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


 

Вступайте в нашу телеграмм-группу Инфостарт

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

См. также

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

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    24741    65    28    

93

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

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

14400 руб.

13.03.2018    64786    232    79    

121

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

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

6000 руб.

18.02.2019    68282    246    15    

197

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

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

6000 руб.

23.08.2019    61614    195    65    

189

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

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

5040 руб.

13.02.2019    106543    469    46    

461

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

Акт КС-2 и справка КС-3 в 1С:УНФ. Это дополнительная печатная для заполнения акта КС-2 и справки КС-3 в "1С:УНФ". Подключив обработку в "1С:Управление нашей фирмой" Вы можете заполнить, распечатать и сохранить формы КС-2 и КС-3 из документа "Акт выполненных работ" и/или "Расходная накладная". Может работать совместно с решением "Сметы в 1С:УНФ"

5160 руб.

03.12.2020    30837    86    8    

70

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

Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с соответствующими именами, при выводе на печать в размещённые картинки будут выводиться факсимиле из прикреплённых рисунков. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

3500 руб.

07.02.2023    9611    99    17    

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