Внешняя печатная форма выводит пустой макет

1. troshin71 12.08.19 12:05 Сейчас в теме
Сделал внешнюю печатную форму для документа Заказ поставщику, но при выводе на печать она остается пустой. т.е даже нету макета который я скопировал из документа, просто чистый лист показывает.

Перем мВалютаРегламентированногоУчета Экспорт;





Функция Печать () Экспорт
	
	ТабДокумент = Новый ТабличныйДокумент();
	
	
	Возврат ТабДокумент;
	
КонецФункции



// Функция формирует табличный документ с печатной формой заказа или счета,
// разработанного методистами
//
// Возвращаемое значение:
//  Табличный документ - сформированная печатная форма
//

Функция ПечатьСчетаЗаказа(Тип)Экспорт
	
ВидОперации = СсылкаНаОбъект.ВидОперации;	
	
	
Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
	Запрос.Текст =
	"ВЫБРАТЬ
	|	Номер,
	|	Дата,
	|	ДатаПоступления,
	|	ДоговорКонтрагента,
	|	Контрагент КАК Поставщик,
	|	Организация,
	|	СуммаДокумента,
	|	ВалютаДокумента,
	|	УчитыватьНДС,
	|	СуммаВключаетНДС
	|ИЗ
	|	Документ.ЗаказПоставщику КАК ЗаказПоставщику
	|
	|ГДЕ
	|	ЗаказПоставщику.Ссылка = &ТекущийДокумент";
	Шапка = Запрос.Выполнить().Выбрать();
	Шапка.Следующий();

	Запрос = Новый Запрос;

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

	// Определим параметры запроса и табличного документа  
	// в зависимости от необходимости отображения артикула поставщика  
	Если Тип = "ЗаказПоДаннымПоставщика" Тогда

		ВыводитьКоды    = Истина;
		ТекстКодАртикул = "Код";
		Колонка         = "Артикул" + Символы.ПС + "поставщика";
		ОбластьШапки    = Макет.ПолучитьОбласть("ШапкаСКодом");
		ОбластьСтроки   = Макет.ПолучитьОбласть("СтрокаСКодом");

		Запрос.УстановитьПараметр("Контрагент", СсылкаНаОбъект.Контрагент);

		ТекстПоляТовараДляТоваров = "
		|	ВЫБОР КОГДА (ВЫРАЗИТЬ (НаименованиеКонтрагента КАК Строка(1000)) ЕСТЬ NULL ИЛИ ВЫРАЗИТЬ (НаименованиеКонтрагента КАК Строка(1000)) = """") ТОГДА ВЫРАЗИТЬ (ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК Строка(1000)) ИНАЧЕ ВЫРАЗИТЬ (НаименованиеКонтрагента КАК Строка(1000)) КОНЕЦ КАК Товар,";

		ТекстПоляТовараДляУслуг = "
		|	ВЫБОР КОГДА (ВЫРАЗИТЬ (НаименованиеНоменклатурыКонтрагента КАК Строка(1000)) ЕСТЬ NULL ИЛИ ВЫРАЗИТЬ (НаименованиеНоменклатурыКонтрагента КАК Строка(1000)) = """") ТОГДА ВЫРАЗИТЬ (ЗаказПоставщику.Номенклатура.НаименованиеПолное КАК Строка(1000)) ИНАЧЕ ВЫРАЗИТЬ (НаименованиеНоменклатурыКонтрагента КАК Строка(1000)) КОНЕЦ КАК Товар,";

		ТекстПоляАртикула = ",
			|	АртикулКонтрагента";

		ТекстВыборкиАртикула = ", 
			|	АртикулНоменклатурыКонтрагента КАК АртикулКонтрагента";

		ТекстВыборкиНоменклатуры = ", 
			|	ВЫРАЗИТЬ(НаименованиеНоменклатурыКонтрагента КАК Строка(1000)) КАК НаименованиеКонтрагента";

		ТекстИсточникАртикула = "
			|	ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
			|	ПО НоменклатураКонтрагентов.Номенклатура = ЗаказПоставщику.Номенклатура
			|   И НоменклатураКонтрагентов.ХарактеристикаНоменклатуры = ЗаказПоставщику.ХарактеристикаНоменклатуры
			|	И НоменклатураКонтрагентов.Контрагент = &Контрагент";
			
		ТекстИсточникАртикулаБезХарактеристики = "
			|	ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
			|	ПО НоменклатураКонтрагентов.Номенклатура = ЗаказПоставщику.Номенклатура
			|	И НоменклатураКонтрагентов.Контрагент = &Контрагент";

		ТекстГруппировкиАртикулаИНоменклатуры = ", 
			|	АртикулНоменклатурыКонтрагента,
			|	ВЫРАЗИТЬ(НаименованиеНоменклатурыКонтрагента КАК Строка(1000))";

	Иначе

		ТекстПоляТовараДляТоваров = "
		|	ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК Товар,";
		
		СтрокаВыборкиПоляСодержания = ОбработкаТабличныхЧастей.ПолучитьЧастьЗапросаДляВыбораСодержания("ЗаказПоставщику");
		
		ТекстПоляТовараДляУслуг = "
		|	" + СтрокаВыборкиПоляСодержания + " КАК Товар,";

		ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
		Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
			ВыводитьКоды    = Истина;
			Колонка         = "Артикул";
			ТекстКодАртикул = "Артикул";
		ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
			ВыводитьКоды    = Истина;
			Колонка         = "Код";
			ТекстКодАртикул = "Код";
		Иначе
			ВыводитьКоды    = Ложь;
			Колонка         = "";
			ТекстКодАртикул = "Код";
		КонецЕсли;

		Если ВыводитьКоды Тогда
			ОбластьШапки  = Макет.ПолучитьОбласть("ШапкаСКодом");
			ОбластьСтроки = Макет.ПолучитьОбласть("СтрокаСКодом");
		Иначе
			ОбластьШапки  = Макет.ПолучитьОбласть("ШапкаТаблицы");
			ОбластьСтроки = Макет.ПолучитьОбласть("Строка");
		Конецесли;

		ТекстПоляАртикула                     = "";
		ТекстВыборкиАртикула                  = ""; 
		ТекстИсточникАртикула                 = "";
		ТекстГруппировкиАртикулаИНоменклатуры = ""; 

	КонецЕсли;

	Если ВидОперации = Перечисления.ВидыОперацийЗаказПоставщику.Оборудование Тогда
		ОбластьШапки.Параметры.Товар = "Товар / Оборудование";
	ИначеЕсли ВидОперации = Перечисления.ВидыОперацийЗаказПоставщику.Переработка Тогда
		ОбластьШапки.Параметры.Товар = "Продукция";
	Иначе		
		ОбластьШапки.Параметры.Товар = "Товары (работы, услуги)";
	КонецЕсли;
	
	Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
	Запрос.Текст ="
	|ВЫБРАТЬ
	|	ВложенныйЗапрос.Номенклатура," + ТекстПоляТовараДляТоваров + "
	|	ВложенныйЗапрос.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
	|	ВложенныйЗапрос.Количество,
	|	ВложенныйЗапрос.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмерения,
	|	ВложенныйЗапрос.Цена,
	|	ВложенныйЗапрос.Сумма,
	|	ВложенныйЗапрос.СуммаНДС,
	|	ВложенныйЗапрос.Характеристика,
	|   1    КАК НомерТЧ,
	|	ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
	|	NULL КАК Серия" + ТекстПоляАртикула + "
	|ИЗ
	|	(
	|	ВЫБРАТЬ
	|		ЗаказПоставщику.Номенклатура,
	|		ЗаказПоставщику.ЕдиницаИзмерения,
	|		ЗаказПоставщику.Цена                        КАК Цена,
	|       МИНИМУМ(ЗаказПоставщику.НомерСтроки)        КАК НомерСтроки,
	|		СУММА(ЗаказПоставщику.Количество)           КАК Количество,
	|		СУММА(ЗаказПоставщику.Сумма     )           КАК Сумма,
	|		СУММА(ЗаказПоставщику.СуммаНДС  )           КАК СуммаНДС,
	|		ЗаказПоставщику.ХарактеристикаНоменклатуры  КАК Характеристика" + ТекстВыборкиАртикула + ТекстВыборкиНоменклатуры + "
	|	ИЗ
	|		Документ.ЗаказПоставщику.Оборудование КАК ЗаказПоставщику" + ТекстИсточникАртикула + "
	|
	|	ГДЕ
	|		ЗаказПоставщику.Ссылка = &ТекущийДокумент
	|
	|	СГРУППИРОВАТЬ ПО
	|		ЗаказПоставщику.Номенклатура,
	|		ЗаказПоставщику.ЕдиницаИзмерения,
	|		ЗаказПоставщику.Цена,
	|		ЗаказПоставщику.ХарактеристикаНоменклатуры" + ТекстГруппировкиАртикулаИНоменклатуры + "
	|	) КАК ВложенныйЗапрос
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ВложенныйЗапрос.Номенклатура," + ТекстПоляТовараДляТоваров + "
	|	ВложенныйЗапрос.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
	|	ВложенныйЗапрос.Количество,
	|	ВложенныйЗапрос.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмерения,
	|	ВложенныйЗапрос.Цена,
	|	ВложенныйЗапрос.Сумма,
	|	ВложенныйЗапрос.СуммаНДС,
	|	ВложенныйЗапрос.Характеристика,
	|   2    КАК НомерТЧ,
	|	ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
	|	NULL КАК Серия" + ТекстПоляАртикула + "
	|ИЗ
	|	(
	|	ВЫБРАТЬ
	|		ЗаказПоставщику.Номенклатура,
	|		ЗаказПоставщику.ЕдиницаИзмерения,
	|		ЗаказПоставщику.Цена                        КАК Цена,
	|       МИНИМУМ(ЗаказПоставщику.НомерСтроки)        КАК НомерСтроки,	
	|		СУММА(ЗаказПоставщику.Количество)           КАК Количество,
	|		СУММА(ЗаказПоставщику.Сумма     )           КАК Сумма,
	|		СУММА(ЗаказПоставщику.СуммаНДС  )           КАК СуммаНДС,
	|		ЗаказПоставщику.ХарактеристикаНоменклатуры  КАК Характеристика" + ТекстВыборкиАртикула + ТекстВыборкиНоменклатуры + "
	|	ИЗ
	|		Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщику" + ТекстИсточникАртикула + "
	|
	|	ГДЕ
	|		ЗаказПоставщику.Ссылка = &ТекущийДокумент
	|
	|	СГРУППИРОВАТЬ ПО
	|		ЗаказПоставщику.Номенклатура,
	|		ЗаказПоставщику.ЕдиницаИзмерения,
	|		ЗаказПоставщику.Цена,
	|		ЗаказПоставщику.ХарактеристикаНоменклатуры" + ТекстГруппировкиАртикулаИНоменклатуры + "
	|	) КАК ВложенныйЗапрос
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ЗаказПоставщику.Номенклатура," + ТекстПоляТовараДляУслуг + "
	|	ЗаказПоставщику.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
	|	ЗаказПоставщику.Количество,
	|	ЗаказПоставщику.Номенклатура.ЕдиницаХраненияОстатков,
	|	ЗаказПоставщику.Цена,
	|	ЗаказПоставщику.Сумма,
	|	ЗаказПоставщику.СуммаНДС,
	|	NULL,
	|   3    КАК НомерТЧ,
	|   ЗаказПоставщику.НомерСтроки КАК НомерСтроки,	
	|	NULL КАК Серия" + ТекстВыборкиАртикула + "
	|	
	|ИЗ
	|	Документ.ЗаказПоставщику.Услуги КАК ЗаказПоставщику" + ТекстИсточникАртикулаБезХарактеристики + "
	|
	|ГДЕ
	|	ЗаказПоставщику.Ссылка = &ТекущийДокумент
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ВложенныйЗапрос.Номенклатура," + ТекстПоляТовараДляТоваров + "
	|	ВложенныйЗапрос.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
	|	ВложенныйЗапрос.Количество,
	|	ВложенныйЗапрос.Номенклатура.ЕдиницаХраненияОстатков.Представление КАК ЕдиницаИзмерения,
	|	ВложенныйЗапрос.Цена,
	|	ВложенныйЗапрос.Сумма,
	|	ВложенныйЗапрос.СуммаНДС,
	|	NULL,
	|   4    КАК НомерТЧ,
	|	ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
	|	NULL КАК Серия" + ТекстПоляАртикула + "
	|ИЗ
	|	(
	|	ВЫБРАТЬ
	|		ЗаказПоставщику.Номенклатура,
	|		ЗаказПоставщику.Цена                        КАК Цена,
	|       МИНИМУМ(ЗаказПоставщику.НомерСтроки)        КАК НомерСтроки,	
	|		СУММА(ЗаказПоставщику.Количество)           КАК Количество,
	|		СУММА(ЗаказПоставщику.Сумма     )           КАК Сумма,
	|		0           								КАК СуммаНДС" + ТекстВыборкиАртикула + ТекстВыборкиНоменклатуры + "
	|	ИЗ
	|		Документ.ЗаказПоставщику.ВозвратнаяТара КАК ЗаказПоставщику" + ТекстИсточникАртикулаБезХарактеристики + "
	|
	|	ГДЕ
	|		ЗаказПоставщику.Ссылка = &ТекущийДокумент
	|
	|	СГРУППИРОВАТЬ ПО
	|		ЗаказПоставщику.Номенклатура,
	|		ЗаказПоставщику.Цена" + ТекстГруппировкиАртикулаИНоменклатуры + "
	|	) КАК ВложенныйЗапрос
	|
	|УПОРЯДОЧИТЬ ПО НомерТЧ ВОЗР, НомерСтроки ВОЗР
	|";
	
	ЗапросТовары = Запрос.Выполнить().Выгрузить();

	ТабДокумент = Новый ТабличныйДокумент;
	Если Тип = "ЗаказПоДаннымПоставщика" Тогда
		ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПоставщику_СчетЗаказПоДаннымПоставщик­а";
	Иначе
		ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПоставщику_СчетЗаказ";
	КонецЕсли;

	Руководители = РегламентированнаяОтчетность.ОтветственныеЛицаОрганизаций(Шапка.Организация, Шапка.Дата,);
	Руководитель = Руководители.Руководитель;
	Бухгалтер    = Руководители.ГлавныйБухгалтер;

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

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

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

	// Вывести табличную часть
	Если ВыводитьКоды Тогда
		ОбластьШапки.Параметры.Колонка = Колонка;
	КонецЕсли;

	ТабДокумент.Вывести(ОбластьШапки);

	Сумма    = 0;
	СуммаНДС = 0;

	Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл

		Если НЕ ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда
			Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
			Продолжить;
		КонецЕсли;

		ОбластьСтроки.Параметры.Заполнить(ВыборкаСтрокТовары);
		ОбластьСтроки.Параметры.НомерСтроки = ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1;
		ОбластьСтроки.Параметры.Товар = СокрЛП(ВыборкаСтрокТовары.Товар) + ФормированиеПечатныхФорм.ПредставлениеСерий(ВыборкаСтрокТовары)
										+ ?(ВыборкаСтрокТовары.НомерТЧ = 4, " (возвратная тара)", "");

		Если ВыводитьКоды Тогда
			Если Тип = "ЗаказПоДаннымПоставщика" Тогда
				ОбластьСтроки.Параметры.КодАртикул = ВыборкаСтрокТовары.АртикулКонтрагента;
			Иначе
				ОбластьСтроки.Параметры.КодАртикул = ВыборкаСтрокТовары.КодАртикул;
			КонецЕсли;
		КонецЕсли;

		ТабДокумент.Вывести(ОбластьСтроки);

		Сумма    = Сумма    + ВыборкаСтрокТовары.Сумма;
		СуммаНДС = СуммаНДС + ВыборкаСтрокТовары.СуммаНДС;

	КонецЦикла;

	// Вывести Итого
	ОбластьМакета                 = Макет.ПолучитьОбласть("Итого");
	ОбластьМакета.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма);
	ТабДокумент.Вывести(ОбластьМакета);

	// Вывести ИтогоНДС
	Если Шапка.УчитыватьНДС Тогда
		ОбластьМакета                    = Макет.ПолучитьОбласть("ИтогоНДС");
		ОбластьМакета.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(ЗапросТовары.Итог("СуммаНДС"));
		ОбластьМакета.Параметры.НДС      = ?(Шапка.СуммаВключаетНДС, "В том числе НДС:", "Сумма НДС:");
		ТабДокумент.Вывести(ОбластьМакета);
	КонецЕсли;

	// Вывести Сумму прописью
	ОбластьМакета                          = Макет.ПолучитьОбласть("СуммаПрописью");
	СуммаКПрописи                          = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
	ОбластьМакета.Параметры.ИтоговаяСтрока = "Всего наименований " + ЗапросТовары.Количество()
	                                       + ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);
	ОбластьМакета.Параметры.СуммаПрописью  = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);
	ТабДокумент.Вывести(ОбластьМакета);

	// Вывести подписи
	ОбластьМакета                    = Макет.ПолучитьОбласть("Подписи");
	ОбластьМакета.Параметры.Отпустил = "/"+ Руководитель + "/";
	ОбластьМакета.Параметры.Получил  = "/"+ Бухгалтер + "/";
	ТабДокумент.Вывести(ОбластьМакета);

	Возврат ТабДокумент;
КонецФункции // ПечатьСчетаЗаказа()




мВалютаРегламентированногоУчета = глЗначениеПеременной("ВалютаРегламентированногоУчета");
Показать
Прикрепленные файлы:
ВБ_ЗаказПоставщику.epf
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
6. spacecraft 12.08.19 12:35 Сейчас в теме +0.5 $m
(3) смотрите:
Функция ПечатьСчетаЗаказа(Тип)Экспорт
...
Если Тип = "ЗаказПоДаннымПоставщика" Тогда
...
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 12.08.19 12:15 Сейчас в теме
(1) программа честно отрабатывает вот этот код:
Функция Печать () Экспорт 

ТабДокумент = Новый ТабличныйДокумент(); 


Возврат ТабДокумент; 

КонецФункции 
Показать

Соответственно выводит пустой табличный документ.
3. troshin71 12.08.19 12:21 Сейчас в теме
(2) я прописывал ТабДокумент = ПечатьСчетаЗаказа() ;

выдает ошибку не достаточно фактических параметров
4. victorree 19 12.08.19 12:28 Сейчас в теме
(3) Логично. У функции есть параметр "Тип" надо бы его указать.
5. troshin71 12.08.19 12:31 Сейчас в теме
(4)Функция Печать () Экспорт

ТабДокумент = ПечатьСчетаЗаказа(Тип);


Возврат ТабДокумент;

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

{ВнешняяОбработка.ВБ_ЗаказПоставщику.МодульОбъекта(9,34)}: Переменная не определена (Тип)
ТабДокумент = ПечатьСчетаЗаказа(<<?>>Тип); (Проверка: Толстый клиент (обычное приложение))
6. spacecraft 12.08.19 12:35 Сейчас в теме +0.5 $m
(3) смотрите:
Функция ПечатьСчетаЗаказа(Тип)Экспорт
...
Если Тип = "ЗаказПоДаннымПоставщика" Тогда
...
7. troshin71 12.08.19 12:39 Сейчас в теме
8. VKuser384403765 2 26.08.19 14:36 Сейчас в теме
(7) Можешь показать код? Заранее Спасибо.
9. troshin71 26.08.19 15:29 Сейчас в теме
(8) Перем мВалютаРегламентированногоУчета Экспорт;





Функция Печать () Экспорт
Тип = "ЗаказПоставщику";

ТабДокумент = ПечатьСчетаЗаказа(Тип);


Возврат ТабДокумент;

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



// Функция формирует табличный документ с печатной формой заказа или счета,
// разработанного методистами
//
// Возвращаемое значение:
// Табличный документ - сформированная печатная форма
//

Функция ПечатьСчетаЗаказа(Тип)Экспорт

ВидОперации = СсылкаНаОбъект.ВидОперации;


Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос.Текст =
"ВЫБРАТЬ
| Номер,
| Дата,
| ДатаПоступления,
| ДоговорКонтрагента,
| Контрагент КАК Поставщик,
| Организация,
| СуммаДокумента,
| ВалютаДокумента,
| УчитыватьНДС,
| СуммаВключаетНДС
|ИЗ
| Документ.ЗаказПоставщику КАК ЗаказПоставщику
|
|ГДЕ
| ЗаказПоставщику.Ссылка = &ТекущийДокумент";
Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();

Запрос = Новый Запрос;

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

// Определим параметры запроса и табличного документа
// в зависимости от необходимости отображения артикула поставщика
Если Тип = "ЗаказПоДаннымПоставщика" Тогда

ВыводитьКоды = Ложь;
ТекстКодАртикул = "Код";
Колонка = "Артикул" + Символы.ПС + "поставщика";
ОбластьШапки = Макет.ПолучитьОбласть("ШапкаСКодом");
ОбластьСтроки = Макет.ПолучитьОбласть("СтрокаСКодом");

Запрос.УстановитьПараметр("Контрагент", СсылкаНаОбъект.Контрагент);

ТекстПоляТовараДляТоваров = "
| ВЫБОР КОГДА (ВЫРАЗИТЬ (НаименованиеКонтрагента КАК Строка(1000)) ЕСТЬ NULL ИЛИ ВЫРАЗИТЬ (НаименованиеКонтрагента КАК Строка(1000)) = """") ТОГДА ВЫРАЗИТЬ (ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК Строка(1000)) ИНАЧЕ ВЫРАЗИТЬ (НаименованиеКонтрагента КАК Строка(1000)) КОНЕЦ КАК Товар,";

ТекстПоляТовараДляУслуг = "
| ВЫБОР КОГДА (ВЫРАЗИТЬ (НаименованиеНоменклатурыКонтрагента КАК Строка(1000)) ЕСТЬ NULL ИЛИ ВЫРАЗИТЬ (НаименованиеНоменклатурыКонтрагента КАК Строка(1000)) = """") ТОГДА ВЫРАЗИТЬ (ЗаказПоставщику.Номенклатура.НаименованиеПолное КАК Строка(1000)) ИНАЧЕ ВЫРАЗИТЬ (НаименованиеНоменклатурыКонтрагента КАК Строка(1000)) КОНЕЦ КАК Товар,";

ТекстПоляАртикула = ",
| АртикулКонтрагента";

ТекстВыборкиАртикула = ",
| АртикулНоменклатурыКонтрагента КАК АртикулКонтрагента";

ТекстВыборкиНоменклатуры = ",
| ВЫРАЗИТЬ(НаименованиеНоменклатурыКонтрагента КАК Строка(1000)) КАК НаименованиеКонтрагента";

ТекстИсточникАртикула = "
| ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
| ПО НоменклатураКонтрагентов.Номенклатура = ЗаказПоставщику.Номенклатура
| И НоменклатураКонтрагентов.ХарактеристикаНоменклатуры = ЗаказПоставщику.ХарактеристикаНоменклатуры
| И НоменклатураКонтрагентов.Контрагент = &Контрагент";

ТекстИсточникАртикулаБезХарактеристики = "
| ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
| ПО НоменклатураКонтрагентов.Номенклатура = ЗаказПоставщику.Номенклатура
| И НоменклатураКонтрагентов.Контрагент = &Контрагент";

ТекстГруппировкиАртикулаИНоменклатуры = ",
| АртикулНоменклатурыКонтрагента,
| ВЫРАЗИТЬ(НаименованиеНоменклатурыКонтрагента КАК Строка(1000))";

Иначе

ТекстПоляТовараДляТоваров = "
| ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК Товар,";

СтрокаВыборкиПоляСодержания = ОбработкаТабличныхЧастей.ПолучитьЧастьЗапросаДляВыбораСодержания("ЗаказПоставщику");

ТекстПоляТовараДляУслуг = "
| " + СтрокаВыборкиПоляСодержания + " КАК Товар,";

ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
ВыводитьКоды = Истина;
Колонка = "Артикул";
ТекстКодАртикул = "Артикул";
ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
ВыводитьКоды = Истина;
Колонка = "Код";
ТекстКодАртикул = "Код";
Иначе
ВыводитьКоды = Ложь;
Колонка = "";
ТекстКодАртикул = "Код";
КонецЕсли;

Если ВыводитьКоды Тогда
ОбластьШапки = Макет.ПолучитьОбласть("ШапкаСКодом");
ОбластьСтроки = Макет.ПолучитьОбласть("СтрокаСКодом");
Иначе
ОбластьШапки = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьСтроки = Макет.ПолучитьОбласть("Строка");
Конецесли;

ТекстПоляАртикула = "";
ТекстВыборкиАртикула = "";
ТекстИсточникАртикула = "";
ТекстГруппировкиАртикулаИНоменклатуры = "";

КонецЕсли;

Если ВидОперации = Перечисления.ВидыОперацийЗаказПоставщику.Оборудование Тогда
ОбластьШапки.Параметры.Товар = "Товар / Оборудование";
ИначеЕсли ВидОперации = Перечисления.ВидыОперацийЗаказПоставщику.Переработка Тогда
ОбластьШапки.Параметры.Товар = "Продукция";
Иначе
ОбластьШапки.Параметры.Товар = "Товары (работы, услуги)";
КонецЕсли;

Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос.Текст ="
|ВЫБРАТЬ
| ВложенныйЗапрос.Номенклатура," + ТекстПоляТовараДляТоваров + "
| ВложенныйЗапрос.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
| ВложенныйЗапрос.Количество,
| ВложенныйЗапрос.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмерения,
| ВложенныйЗапрос.Цена,
| ВложенныйЗапрос.Сумма,
| ВложенныйЗапрос.СуммаНДС,
| ВложенныйЗапрос.Характеристика,
| 1 КАК НомерТЧ,
| ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
| NULL КАК Серия" + ТекстПоляАртикула + "
|ИЗ
| (
| ВЫБРАТЬ
| ЗаказПоставщику.Номенклатура,
| ЗаказПоставщику.ЕдиницаИзмерения,
| ЗаказПоставщику.Цена КАК Цена,
| МИНИМУМ(ЗаказПоставщику.НомерСтроки) КАК НомерСтроки,
| СУММА(ЗаказПоставщику.Количество) КАК Количество,
| СУММА(ЗаказПоставщику.Сумма ) КАК Сумма,
| СУММА(ЗаказПоставщику.СуммаНДС ) КАК СуммаНДС,
| ЗаказПоставщику.ХарактеристикаНоменклатуры КАК Характеристика" + ТекстВыборкиАртикула + ТекстВыборкиНоменклатуры + "
| ИЗ
| Документ.ЗаказПоставщику.Оборудование КАК ЗаказПоставщику" + ТекстИсточникАртикула + "
|
| ГДЕ
| ЗаказПоставщику.Ссылка = &ТекущийДокумент
|
| СГРУППИРОВАТЬ ПО
| ЗаказПоставщику.Номенклатура,
| ЗаказПоставщику.ЕдиницаИзмерения,
| ЗаказПоставщику.Цена,
| ЗаказПоставщику.ХарактеристикаНоменклатуры" + ТекстГруппировкиАртикулаИНоменклатуры + "
| ) КАК ВложенныйЗапрос
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВложенныйЗапрос.Номенклатура," + ТекстПоляТовараДляТоваров + "
| ВложенныйЗапрос.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
| ВложенныйЗапрос.Количество,
| ВложенныйЗапрос.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмерения,
| ВложенныйЗапрос.Цена,
| ВложенныйЗапрос.Сумма,
| ВложенныйЗапрос.СуммаНДС,
| ВложенныйЗапрос.Характеристика,
| 2 КАК НомерТЧ,
| ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
| NULL КАК Серия" + ТекстПоляАртикула + "
|ИЗ
| (
| ВЫБРАТЬ
| ЗаказПоставщику.Номенклатура,
| ЗаказПоставщику.ЕдиницаИзмерения,
| ЗаказПоставщику.Цена КАК Цена,
| МИНИМУМ(ЗаказПоставщику.НомерСтроки) КАК НомерСтроки,
| СУММА(ЗаказПоставщику.Количество) КАК Количество,
| СУММА(ЗаказПоставщику.Сумма ) КАК Сумма,
| СУММА(ЗаказПоставщику.СуммаНДС ) КАК СуммаНДС,
| ЗаказПоставщику.ХарактеристикаНоменклатуры КАК Характеристика" + ТекстВыборкиАртикула + ТекстВыборкиНоменклатуры + "
| ИЗ
| Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщику" + ТекстИсточникАртикула + "
|
| ГДЕ
| ЗаказПоставщику.Ссылка = &ТекущийДокумент
|
| СГРУППИРОВАТЬ ПО
| ЗаказПоставщику.Номенклатура,
| ЗаказПоставщику.ЕдиницаИзмерения,
| ЗаказПоставщику.Цена,
| ЗаказПоставщику.ХарактеристикаНоменклатуры" + ТекстГруппировкиАртикулаИНоменклатуры + "
| ) КАК ВложенныйЗапрос
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗаказПоставщику.Номенклатура," + ТекстПоляТовараДляУслуг + "
| ЗаказПоставщику.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
| ЗаказПоставщику.Количество,
| ЗаказПоставщику.Номенклатура.ЕдиницаХраненияОстатков,
| ЗаказПоставщику.Цена,
| ЗаказПоставщику.Сумма,
| ЗаказПоставщику.СуммаНДС,
| NULL,
| 3 КАК НомерТЧ,
| ЗаказПоставщику.НомерСтроки КАК НомерСтроки,
| NULL КАК Серия" + ТекстВыборкиАртикула + "
|
|ИЗ
| Документ.ЗаказПоставщику.Услуги КАК ЗаказПоставщику" + ТекстИсточникАртикулаБезХарактеристики + "
|
|ГДЕ
| ЗаказПоставщику.Ссылка = &ТекущийДокумент
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВложенныйЗапрос.Номенклатура," + ТекстПоляТовараДляТоваров + "
| ВложенныйЗапрос.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
| ВложенныйЗапрос.Количество,
| ВложенныйЗапрос.Номенклатура.ЕдиницаХраненияОстатков.Представление КАК ЕдиницаИзмерения,
| ВложенныйЗапрос.Цена,
| ВложенныйЗапрос.Сумма,
| ВложенныйЗапрос.СуммаНДС,
| NULL,
| 4 КАК НомерТЧ,
| ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
| NULL КАК Серия" + ТекстПоляАртикула + "
|ИЗ
| (
| ВЫБРАТЬ
| ЗаказПоставщику.Номенклатура,
| ЗаказПоставщику.Цена КАК Цена,
| МИНИМУМ(ЗаказПоставщику.НомерСтроки) КАК НомерСтроки,
| СУММА(ЗаказПоставщику.Количество) КАК Количество,
| СУММА(ЗаказПоставщику.Сумма ) КАК Сумма,
| 0 КАК СуммаНДС" + ТекстВыборкиАртикула + ТекстВыборкиНоменклатуры + "
| ИЗ
| Документ.ЗаказПоставщику.ВозвратнаяТара КАК ЗаказПоставщику" + ТекстИсточникАртикулаБезХарактеристики + "
|
| ГДЕ
| ЗаказПоставщику.Ссылка = &ТекущийДокумент
|
| СГРУППИРОВАТЬ ПО
| ЗаказПоставщику.Номенклатура,
| ЗаказПоставщику.Цена" + ТекстГруппировкиАртикулаИНоменклатуры + "
| ) КАК ВложенныйЗапрос
|
|УПОРЯДОЧИТЬ ПО НомерТЧ ВОЗР, НомерСтроки ВОЗР
|";

ЗапросТовары = Запрос.Выполнить().Выгрузить();

ТабДокумент = Новый ТабличныйДокумент;
Если Тип = "ЗаказПоДаннымПоставщика" Тогда
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПоставщику_СчетЗаказПоДаннымПоставщик­а";
Иначе
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПоставщику_СчетЗаказ";
КонецЕсли;

Руководители = РегламентированнаяОтчетность.ОтветственныеЛицаОрганизаций(Шапка.Организация, Шапка.Дата,);
Руководитель = Руководители.Руководитель;
Бухгалтер = Руководители.ГлавныйБухгалтер;

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

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

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

// Вывести табличную часть
Если ВыводитьКоды Тогда
ОбластьШапки.Параметры.Колонка = Колонка;
КонецЕсли;

ТабДокумент.Вывести(ОбластьШапки);

Сумма = 0;
СуммаНДС = 0;

Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл

Если НЕ ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда
Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
Продолжить;
КонецЕсли;

ОбластьСтроки.Параметры.Заполнить(ВыборкаСтрокТовары);
ОбластьСтроки.Параметры.НомерСтроки = ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1;
ОбластьСтроки.Параметры.Товар = СокрЛП(ВыборкаСтрокТовары.Товар) + ФормированиеПечатныхФорм.ПредставлениеСерий(ВыборкаСтрокТовары)
+ ?(ВыборкаСтрокТовары.НомерТЧ = 4, " (возвратная тара)", "");

Если ВыводитьКоды Тогда
Если Тип = "ЗаказПоДаннымПоставщика" Тогда
ОбластьСтроки.Параметры.КодАртикул = ВыборкаСтрокТовары.АртикулКонтрагента;
Иначе
ОбластьСтроки.Параметры.КодАртикул = ВыборкаСтрокТовары.КодАртикул;
КонецЕсли;
КонецЕсли;

ТабДокумент.Вывести(ОбластьСтроки);

Сумма = Сумма + ВыборкаСтрокТовары.Сумма;
СуммаНДС = СуммаНДС + ВыборкаСтрокТовары.СуммаНДС;

КонецЦикла;

// Вывести Итого
ОбластьМакета = Макет.ПолучитьОбласть("Итого");
ОбластьМакета.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма);
ТабДокумент.Вывести(ОбластьМакета);

// Вывести ИтогоНДС
Если Шапка.УчитыватьНДС Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ИтогоНДС");
ОбластьМакета.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(ЗапросТовары.Итог("СуммаНДС"));
ОбластьМакета.Параметры.НДС = ?(Шапка.СуммаВключаетНДС, "В том числе НДС:", "Сумма НДС:");
ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;

// Вывести Сумму прописью
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
ОбластьМакета.Параметры.ИтоговаяСтрока = "Всего наименований " + ЗапросТовары.Количество()
+ ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);
ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);
ТабДокумент.Вывести(ОбластьМакета);

// Вывести подписи
ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
//ОбластьМакета.Параметры.Отпустил = "/"+ Руководитель + "/";
//ОбластьМакета.Параметры.Получил = "/"+ Бухгалтер + "/";
ТабДокумент.Вывести(ОбластьМакета);

Возврат ТабДокумент;
КонецФункции // ПечатьСчетаЗаказа()




мВалютаРегламентированногоУчета = глЗначениеПеременной("ВалютаРегламентированногоУчета");
Оставьте свое сообщение

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