Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
11 kB
0
Indexable
Never
Функция ПечатьПеремещениеТоваровВПроизводство(ТабДокумент) Экспорт
	Макет = ПолучитьМакет("ПеремещениеТоваровВПроизводство");
	ВыборкаТабличнойЧасти = ЭтотОбъект.Товары;
	ФорматВыводаКоличества = обПраво("ФорматВыводаКоличества", Права,,ЭтотОбъект);
	
	//Настроим макет отчёта
	//Удаляем колонку "ЯчейкаХранения", если ни в одной из номенклатур этот реквизит не заполнен
	//Увеличиваем за её счёт колонку "Товар"
	ЕстьЯчейкиХранения=Ложь;
	
	Для Каждого СтрокаТЧ Из ВыборкаТабличнойЧасти Цикл
		Если НЕ обЗначениеНеЗаполнено(СтрокаТЧ.Ячейка) Тогда
			ЕстьЯчейкиХранения = Истина;
			Прервать;
		КонецЕсли;
	КонецЦикла;
		
	Если НЕ ЕстьЯчейкиХранения Тогда
		ОбластьТовар = Макет.Область("Товар");
		ОбластьЯчейкаХранения = Макет.Область("ЯчейкаХранения");
		ОбластьТовар.ШиринаКолонки = ОбластьТовар.ШиринаКолонки + ОбластьЯчейкаХранения.ШиринаКолонки;
		Макет.УдалитьОбласть(ОбластьЯчейкаХранения,ТипСмещенияТабличногоДокумента.ПоВертикали);
	КонецЕсли;	
	
	//Настроим макет
	ОбластьШапкаТаблицы = дкПривестиМакетПечатнойФормы(ЭтотОбъект,Макет);
	
	//вывод заголовка документа
	ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
	ОбластьМакета.Параметры.Заполнить(ЭтотОбъект);
	ТекстЗаголовка = дкПолучитьПредставление(ЭтотОбъект);
	
	ДополнительныеПараметры = спСоздатьПараметрыПолученияПредставления();
	ДополнительныеПараметры.Вставить("ИспользоватьКПППодразделения");
	ДополнительныеПараметры.Вставить("ПодразделениеКомпании", ПодразделениеКомпании);
	ОбластьМакета.Параметры.ПредставлениеОрганизации = спПолучитьПредставление(Организация, , ДополнительныеПараметры);
	
	ОбластьМакета.Параметры.ПредставлениеПоставщика = спПолучитьНаименование(ЭтотОбъект.СкладКомпании);
	ОбластьМакета.Параметры.ТекстЗаголовка = ТекстЗаголовка;
	ОбластьМакета.Параметры.ЗаказНарядПредставление=дкПолучитьПредставление(ЭтотОбъект.ДокументОснование);
	ОбластьМакета.Параметры.АвтомобильПредставление=ОтобразитьИнформациюОбАвтомобиле();

	ОбластьМакета.Параметры.ПредставлениеПолучателя = спПолучитьНаименование(ЭтотОбъект.Цех);
	
	//вывод свойств
	СтрокаСвойств = дкПолучитьСтрокуСвойствДокумента(ЭтотОбъект);
	ОбластьМакета.Параметры.СтрокаСвойств = СтрокаСвойств;
	
	ТабДокумент.Вывести(ОбластьМакета);

	НомерСтраницы = 2;
	НомерСтраницыПред = НомерСтраницы;
	
	//теперь выводим шапку
	ТабДокумент.Вывести(ОбластьШапкаТаблицы);
	
	//готовим области строки
	ОбластьМакета = Макет.ПолучитьОбласть("Строка");
	
	ОбластьМакетаИтогоПоСтранице = Макет.ПолучитьОбласть("ИтогоПоСтранице");
	СтруктураИтоговПоСтранице = Новый Структура();
	//заполним параметры шапки таблицы для следующего листа
	ОбластьШапкаТаблицы.Параметры.ТекстЗаголовка = ТекстЗаголовка;
	ОбластьШапкаТаблицы.Параметры.НомерСтраницы = "Страница: " + НомерСтраницы; 
		
	ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
	
	// ++ пп_ПомощникПродаж
	ЕстьКод = обПраво("ВыводитьКодВПечатныхФормах", Права,, ЭтотОбъект);
	// -- пп_ПомощникПродаж
	//перебор строк
	Для каждого СтрокаТабличнойЧасти Из ВыборкаТабличнойЧасти Цикл
		//заполняем данные строки
		СтруктураСтроки = дкПолучитьПредставлениеДанныхТоварнойСтроки(СтрокаТабличнойЧасти,ЭтотОбъект);
		// ++ пп_ПомощникПродаж
		// Если запрещен вывод кода, то для этого документа сделаем исключение
		Если Не ЕстьКод Тогда
			СтруктураСтроки.ТоварНаименование = СтруктураСтроки.Код + " " + СтруктураСтроки.ТоварНаименование;
		КонецЕсли;
		// -- пп_ПомощникПродаж
		//В возвращаемой структуре нет ключа "Ячейка", создадим его
		СтруктураСтроки.Вставить("Ячейка");
		//Если ЯчейкаХранения не определена для данной номенклатуры, то печатаем пробел
		ЯчейкаДляПечати = СокрЛП(СтрокаТабличнойЧасти.Ячейка.Код);
		СтруктураСтроки.Ячейка 	= ?(обЗначениеНеЗаполнено(ЯчейкаДляПечати)," ",ЯчейкаДляПечати);
		ОбластьМакета.Параметры.Заполнить(СтруктураСтроки);
		
		//доп. области
		мсвДопОбластиПодвала = Неопределено;
		Если ВыборкаТабличнойЧасти.Индекс(СтрокаТабличнойЧасти) = ВыборкаТабличнойЧасти.Количество()-1 Тогда
			мсвДопОбластиПодвала = Новый Массив;
			мсвДопОбластиПодвала.Добавить(ОбластьПодвал);
		КонецЕсли;		
		
		//выводим строку, делая проверку попадания на лист
		НомерСтраницы = дкВывестиГоризонтальнуюОбласть(ТабДокумент, ОбластьМакета, ОбластьШапкаТаблицы, ОбластьМакетаИтогоПоСтранице,
			НомерСтраницы, СтруктураИтоговПоСтранице, ЭтотОбъект, мсвДопОбластиПодвала);
		
		//инициализация итогов по странице
		Если НомерСтраницы <> НомерСтраницыПред Тогда
			СтруктураИтоговПоСтранице = Новый Структура();
			НомерСтраницыПред = НомерСтраницы;
			ОбластьШапкаТаблицы.Параметры.НомерСтраницы = "Страница: " + НомерСтраницы; 
		КонецЕсли;
		//добавляем итоги
		дкДобавитьИтогиПоСтранице(СтрокаТабличнойЧасти,СтруктураИтоговПоСтранице);
		
	КонецЦикла;
	
	//Итогов по странице на этой печатной форме нет, но выводим для прорисовки завершающей чёрной линии снизу страницы
	дкВывестиИтогиПоСтранице(ТабДокумент,ОбластьМакетаИтогоПоСтранице,СтруктураИтоговПоСтранице,ЭтотОбъект);
	
	
	//Подвал
	//Выводим общее количество деталей
	ВсегоНаименований 	= Формат(ВыборкаТабличнойЧасти.Количество(), ФорматВыводаКоличества);
	ОбщееКоличество 	= Формат(ВыборкаТабличнойЧасти.Итог("Количество"), ФорматВыводаКоличества);
	ОбластьПодвал.Параметры.Итого = "Всего наименований " + ВсегоНаименований + " в количестве " + ОбщееКоличество;
	// Выводим представления и расшифровки подписей
	Отпустил = дкОтветственноеЛицо(ЭтотОбъект,"Отпустил");
	Отпустил.ОтпустилПредставление = ?(обЗначениеНеЗаполнено(Отпустил.Отпустил),"","/ " + Отпустил.ОтпустилПредставление + " /");
	ОбластьПодвал.Параметры.Заполнить(Отпустил);
	Получил  = дкОтветственноеЛицо(ЭтотОбъект,"Получил");
	Получил.ПолучилПредставление = ?(обЗначениеНеЗаполнено(Получил.Получил),"","/ " + Получил.ПолучилПредставление + " /");
	ОбластьПодвал.Параметры.Заполнить(Получил);
	
	НомерСтраницы = дкВывестиГоризонтальнуюОбласть(ТабДокумент, ОбластьПодвал, , , НомерСтраницы,,ЭтотОбъект);
	
	Возврат ТабДокумент;
КонецФункции //ПечатьПеремещениеТоваровВПроизводство()
Leave a Comment