Внешняя печатная форма

1. user1200515 07.08.20 11:04 Сейчас в теме
Добрый день, делаю внешнюю печатную форму для документа Поступление из переработки
Создала внешнюю обработку, создала макет, прописала параметры, в модуле внешней обработки написала такой код, при загрузке в систему размещение не определено и нужный документ нельзя выбрать в списке
&НаСервере
Функция СведенияОВнешнейОбработке() Экспорт
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
	ПараметрыРегистрации.Версия = "1.1";
	ПараметрыРегистрации.Назначение.Добавить("Документы.КДЛ_ПоступлениеИзПереработки");
	
	ПараметрыРегистрации.Вставить("Команды", ПолучитьТаблицуКоманд());
	
	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
	НоваяКоманда.Представление = НСтр("ru = 'Печатная форма'");  	
	НоваяКоманда.Идентификатор = "ПечатнаяФорма";
	НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
	НоваяКоманда.ПоказыватьОповещение = Истина;
	НоваяКоманда.Модификатор = "ПечатьMXL";
	
	Возврат ПараметрыРегистрации;
КонецФункции

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

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

    Макет = ПолучитьМакет("Макет");

	//ОбластьШапки   = Макет.ПолучитьОбласть("Шапка");
	//ОбластьДанные  = Макет.ПолучитьОбласть("Данные");
	//ОбластьПодвал  = Макет.ПолучитьОбласть("Подвал");

    Запрос = новый запрос;
    Запрос.УстановитьПараметр("МассивОбъектов",МассивОбъектов);
    Запрос.Текст =  "ВЫБРАТЬ
                    |	КДЛ_ПоступлениеИзПереработки.Дата КАК Дата,
                    |	КДЛ_ПоступлениеИзПереработки.КДЛ_Контрагент КАК КДЛ_Контрагент,
                    |	КДЛ_ПоступлениеИзПереработки.Продукция.(
                    |		Номенклатура КАК Номенклатура,
                    |		Количество КАК Количество,
                    |		Партия КАК Партия
                    |	) КАК Продукция,
                    |	КДЛ_ПоступлениеИзПереработки.ИспользованныеМатериалы.(
                    |		Номенклатура КАК НоменклатураИМ,
                    |		Характеристика КАК ХарактеристикаИМ,
                    |		Количество КАК КоличествоИМ,
                    |		Партия КАК ПартияИМ
                    |	) КАК ИспользованныеМатериалы
                    |ИЗ
                    |	Документ.КДЛ_ПоступлениеИзПереработки КАК КДЛ_ПоступлениеИзПереработки
                    |ГДЕ
                    |	КДЛ_ПоступлениеИзПереработки.Ссылка В(&МассивОбъектов)" ;
	Результат = Запрос.Выполнить();
	Если Результат.Пустой() Тогда
		Возврат Новый ТабличныйДокумент;
	КонецЕсли;
	
	ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
	ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПоступлениеИзПереработки";
	ТабДок.ПолеСверху = 0;
	ТабДок.ПолеСлева = 0;
	ТабДок.ПолеСнизу = 0;
	ТабДок.ПолеСправа = 0;
	ТабДок.РазмерКолонтитулаСверху = 0;
	ТабДок.РазмерКолонтитулаСнизу = 0;
	ТабДок.АвтоМасштаб = Истина;
	
	Шапка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	Пока Шапка.Следующий() Цикл
		Если ТабДок.ВысотаТаблицы > 0 Тогда
			ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;
		
		НомерСтрокиНачало = ТабДок.ВысотаТаблицы + 1;
						
		Выборка = Шапка.Выбрать();
		Пока Выборка.Следующий() Цикл
		
		ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("Шапка");
		
		Если ЗначениеЗаполнено(Выборка.Дата) Тогда
				ОбластьШапкаТаблицы.Параметры.период = Дата(Выборка.Дата);
			КонецЕсли;
			
			Если ЗначениеЗаполнено(Выборка.Завод) Тогда
				ОбластьШапкаТаблицы.Параметры.ЗаводНаименование = Выборка.Завод;
			КонецЕсли;
		
		ТабДок.Вывести(ОбластьШапкаТаблицы);
		
				ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Данные");
			
			Если ЗначениеЗаполнено(Выборка.Продукция) Тогда
				ОбластьДетальныхЗаписей.Параметры.НаименованиеСырье = Выборка.НоменклатураИМ;
				ОбластьДетальныхЗаписей.Параметры.ХарактеристикаСырье = Выборка.ХарактеристикаИМ;
				ОбластьДетальныхЗаписей.Параметры.КоличествоСырье = Выборка.КоличествоИМ;
				ОбластьДетальныхЗаписей.Параметры.ПартияСырье = Выборка.ПартияИМ;
				ОбластьДетальныхЗаписей.Параметры.ИтогоСырье = ОбластьДетальныхЗаписей.Параметры.ИтогоСырье + Выборка.КоличествоИМ;
			КонецЕсли;
			Если ЗначениеЗаполнено(Выборка.ИспользованныеМатериалы) Тогда
				ОбластьДетальныхЗаписей.Параметры.НаименованиеНефтепродукты = Выборка.ИспользованныеМатериалы.Номенклатура;
				ОбластьДетальныхЗаписей.Параметры.КоличествоНефтепродукты = Выборка.ИспользованныеМатериалы.Количество;
				ОбластьДетальныхЗаписей.Параметры.ПартияНефтепродукты = Выборка.ИспользованныеМатериалы.Партия;
				ОбластьДетальныхЗаписей.Параметры.ИтогоНефтепродукты = ОбластьДетальныхЗаписей.Параметры.ИтогоПолуфабрикаты + Выборка.ИспользованныеМатериалы.Количество;
			КонецЕсли;
	
			ТабДок.Вывести(ОбластьДетальныхЗаписей);
			
		ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("Подвал");
		
		ТабДок.Вывести(ОбластьПодвалТаблицы);
		
	
		КонецЦикла;
		
		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДок, НомерСтрокиНачало, ОбъектыПечати, Шапка.Ссылка);
	КонецЦикла;
	
	Возврат ТабДок;
	
КонецФункции
				   
Показать
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
8. andy_zhav 197 07.08.20 17:09 Сейчас в теме
Без кода регистрации внешних печатных форм в документе к нему не получится подключить внешнюю форму. Или делайте встроенную или прописывайте код для регистрации. Другими словами - без изменения конфигурации не обойтись
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. EVKash 14 07.08.20 11:24 Сейчас в теме
(1) Конфигурация какая?
Смотрите общий модуль УправлениеПечатьюПереопределяемый.ПриОпределенииОбъектовСКомандамиПечати
В УТ - дальше идет УправлениеПечатьюУТСервер.ОпределитьОбъектыСКомандамиПечати
а там для всех документов к которым доступны внешние печатные формы
СписокОбъектов.Добавить(Справочники.Контрагенты);
Вот туда вам нужно свой документ добавить.
3. user1200515 07.08.20 11:48 Сейчас в теме
5. RustamZz 07.08.20 11:55 Сейчас в теме
(1) Не "Документы.", а "Документ."
6. user1200515 07.08.20 12:11 Сейчас в теме
4. alex_bob 246 07.08.20 11:53 Сейчас в теме
Судя по всему документ самописный. Есть ли у него в модуле формы код для регистрации внешних печатных форм? И если документ не из типовой конфигурации, почему бы не добавить печатную форму непосредственно в документ?
andy_zhav; +1 Ответить
7. user1200515 07.08.20 12:12 Сейчас в теме
(4) Да, документ самописный и в модуле нет кода для регистрации. Сказали сделать внешнюю...
8. andy_zhav 197 07.08.20 17:09 Сейчас в теме
Без кода регистрации внешних печатных форм в документе к нему не получится подключить внешнюю форму. Или делайте встроенную или прописывайте код для регистрации. Другими словами - без изменения конфигурации не обойтись
Оставьте свое сообщение

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