Расходная накладная внешняя печатная форма УТ 11.4.13.103

1. koshman-86@rambler.ru 18.02.21 09:45 Сейчас в теме
Доброго дня! Подскажите, пожалуйста по внешней печатной форме - расходная накладная. Я(новичок в 1с) ее сделал из встроенной, только присоединил цены и скидки. Но проблема заключается в следующем:
Если реализация с нескольких складов, то сумма в накладных просчитывается (складывается по всем складам), как сделать чтобы, так чтобы каждая накладная была со своей суммой.
Накладную прикрепил.
Код:
Функция СформироватьПечатнуюФормуРасходнаяНакладнаяСРазбивкойПоСкладам(МассивОбъектов, ОбъектыПечати)
	
	УстановитьПривилегированныйРежим(Истина);
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_РасходнаяНакладнаяС­РазбивкойПоСкладам";
	
	КолонкаКодов = ФормированиеПечатныхФорм.ИмяДополнительнойКолонки();
	ВыводитьКоды = ЗначениеЗаполнено(КолонкаКодов);
	
	ИспользоватьРучныеСкидки         = ПолучитьФункциональнуюОпцию("ИспользоватьРучныеСкидкиВПродажах");
	ИспользоватьАвтоматическиеСкидки = ПолучитьФункциональнуюОпцию("ИспользоватьАвтоматическиеСкидкиВПродажах");
	ИспользоватьУпаковки             = ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиНоменклатуры");
	
	ЗапросПоСкладам = Новый Запрос;
	ЗапросПоСкладам.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
	                        |	РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
	                        |	РеализацияТоваровУслугТовары.Склад КАК Склад,
	                        |	РеализацияТоваровУслугТовары.Склад.ИспользоватьСерииНоменклатуры КАК ИспользоватьСерииНоменклатуры
	                        |ИЗ
	                        |	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
	                        |ГДЕ
	                        |	РеализацияТоваровУслугТовары.Ссылка В(&МассивОбъектов)
	                        |	И РеализацияТоваровУслугТовары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
	                        |ИТОГИ ПО
	                        |	ИспользоватьСерииНоменклатуры";
	
	ЗапросПоСкладам.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
	
	// Создание массива для проверки: какие из докуметов не попали в выборку
	МассивПроверки = Новый Массив;
	Для Каждого Ссылка Из МассивОбъектов Цикл
		МассивПроверки.Добавить(Ссылка);
	КонецЦикла;
	
	ДеревоОбъектов = ЗапросПоСкладам.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
	
	Для Каждого ИспользованиеСерий Из ДеревоОбъектов.Строки Цикл
		
		ЗапросПоТоварам = Новый Запрос;
		ЗапросПоТоварам.УстановитьПараметр("МассивОбъектов", ИспользованиеСерий.Строки.ВыгрузитьКолонку("Ссылка"));
		ЗапросПоТоварам.УстановитьПараметр("МассивСкладов",  ИспользованиеСерий.Строки.ВыгрузитьКолонку("Склад"));
		
		Если ИспользованиеСерий.ИспользоватьСерииНоменклатуры Тогда
			
			ТекстЗапросаПоТоварам = 
			"ВЫБРАТЬ
			|	РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
			|	РеализацияТоваровУслугТовары.Склад КАК Склад,
			|	РеализацияТоваровУслугТовары.КоличествоУпаковок КАК КоличествоУпаковок,
			|	РеализацияТоваровУслугТовары.Количество КАК Количество,
			|	РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
			|	РеализацияТоваровУслугТовары.Характеристика КАК Характеристика,
			|	РеализацияТоваровУслугТовары.Упаковка КАК Упаковка,
			|	"""" КАК Серия
			|ПОМЕСТИТЬ ТаблицаТоваров
			|ИЗ
			|	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
			|ГДЕ
			|	РеализацияТоваровУслугТовары.Ссылка В(&МассивОбъектов)
			|	И РеализацияТоваровУслугТовары.Склад В(&МассивСкладов)
			|	И НЕ(РеализацияТоваровУслугТовары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
			|				И РеализацияТоваровУслугТовары.СтатусУказанияСерий В (2, 4, 6, 8))
			|
			|ОБЪЕДИНИТЬ ВСЕ
			|
			|ВЫБРАТЬ
			|	РеализацияТоваровУслугСерии.Ссылка,
			|	РеализацияТоваровУслугСерии.Склад,
			|	РеализацияТоваровУслугСерии.Количество,
			|	РеализацияТоваровУслугСерии.Количество,
			|	РеализацияТоваровУслугСерии.Номенклатура,
			|	РеализацияТоваровУслугСерии.Характеристика,
			|	ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка),
			|	РеализацияТоваровУслугСерии.Серия
			|ИЗ
			|	Документ.РеализацияТоваровУслуг.Серии КАК РеализацияТоваровУслугСерии
			|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК ТаблицаТовары
			|		ПО РеализацияТоваровУслугСерии.Ссылка = ТаблицаТовары.Ссылка
			|			И РеализацияТоваровУслугСерии.Номенклатура = ТаблицаТовары.Номенклатура
			|			И РеализацияТоваровУслугСерии.Характеристика = ТаблицаТовары.Характеристика
			|			И РеализацияТоваровУслугСерии.Склад = ТаблицаТовары.Склад
			|ГДЕ
			|	РеализацияТоваровУслугСерии.Ссылка В(&МассивОбъектов)
			|	И РеализацияТоваровУслугСерии.Склад В(&МассивСкладов)
			|	И РеализацияТоваровУслугСерии.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
			|
			|СГРУППИРОВАТЬ ПО
			|	РеализацияТоваровУслугСерии.Ссылка,
			|	РеализацияТоваровУслугСерии.Склад,
			|	РеализацияТоваровУслугСерии.Номенклатура,
			|	РеализацияТоваровУслугСерии.Характеристика,
			|	РеализацияТоваровУслугСерии.Серия,
			|	РеализацияТоваровУслугСерии.Количество,
			|	РеализацияТоваровУслугСерии.Количество
			|
			|ИМЕЮЩИЕ
			|	МАКСИМУМ(ТаблицаТовары.СтатусУказанияСерий) В (2, 4, 6, 8, 10)
			|;
			|
			|////////////////////////////////////////////////////////////­////////////////////
			|ВЫБРАТЬ
			|	ТаблицаТоваров.Ссылка,
			|	ТаблицаТоваров.Склад,
			|	СУММА(ТаблицаТоваров.КоличествоУпаковок) КАК КоличествоУпаковок,
			|	СУММА(ТаблицаТоваров.Количество) КАК Количество,
			|	ТаблицаТоваров.Номенклатура,
			|	ТаблицаТоваров.Характеристика,
			|	ТаблицаТоваров.Упаковка,
			|	ВЫБОР
			|		КОГДА ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = ЗНАЧЕНИЕ(Перечисление.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара)
			|			ТОГДА NULL
			|		ИНАЧЕ ТаблицаТоваров.Серия
			|	КОНЕЦ КАК Серия
			|ПОМЕСТИТЬ СуммированнаяТаблицаТоваров
			|ИЗ
			|	ТаблицаТоваров КАК ТаблицаТоваров
			|
			|СГРУППИРОВАТЬ ПО
			|	ТаблицаТоваров.Ссылка,
			|	ТаблицаТоваров.Склад,
			|	ТаблицаТоваров.Номенклатура,
			|	ТаблицаТоваров.Характеристика,
			|	ТаблицаТоваров.Упаковка,
			|	ВЫБОР
			|		КОГДА ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = ЗНАЧЕНИЕ(Перечисление.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара)
			|			ТОГДА NULL
			|		ИНАЧЕ ТаблицаТоваров.Серия
			|	КОНЕЦ
			|;
			|
			|////////////////////////////////////////////////////////////­////////////////////
			|ВЫБРАТЬ
			|	ТаблицаТоваров.Ссылка КАК Ссылка,
			|	ТаблицаТоваров.Ссылка.Организация КАК Организация,
			|	ТаблицаТоваров.Ссылка.Контрагент КАК Контрагент,
			|	ТаблицаТоваров.Ссылка.Номер КАК Номер,
			|	ТаблицаТоваров.Ссылка.Дата КАК Дата,
			|	ТаблицаТоваров.Ссылка.Организация.Префикс КАК Префикс,
			|	ТаблицаТоваров.Склад КАК Склад,
			|	&ТекстЗапросаНаименованиеЕдиницыИзмерения КАК ПредставлениеЕдининицыИзмеренияУпаковки,
			|	ПРЕДСТАВЛЕНИЕ(ТаблицаТоваров.Номенклатура.ЕдиницаИзмерения) КАК ПредставлениеБазовойЕдиницыИзмерения,
			|	ТаблицаТоваров.КоличествоУпаковок КАК КоличествоУпаковок,
			|	ТаблицаТоваров.Количество КАК Количество,
			|	ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий КАК НастройкаИспользованияСерий,
			|	ТаблицаТоваров.Номенклатура.Код КАК Код,
			|	ТаблицаТоваров.Номенклатура.Артикул КАК Артикул,
			|	ТаблицаТоваров.Номенклатура.НаименованиеПолное КАК ПредставлениеНоменклатуры,
			|	ТаблицаТоваров.Характеристика.НаименованиеПолное КАК ПредставлениеХарактеристики,
			|	ТаблицаТоваров.Номенклатура КАК Номенклатура,
			|	ТаблицаТоваров.Характеристика КАК Характеристика,
			|	ВЫБОР
			|		КОГДА ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) = 1
			|			ТОГДА НЕОПРЕДЕЛЕНО
			|		ИНАЧЕ ТаблицаТоваров.Упаковка.Наименование
			|	КОНЕЦ КАК Упаковка,
			|	ТаблицаТоваров.Серия.Наименование КАК ПредставлениеСерии,
			|	ВЫБОР
			|		КОГДА ТаблицаТоваров.Ссылка.ВернутьМногооборотнуюТару
			|				И ТаблицаТоваров.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
			|			ТОГДА ИСТИНА
			|		ИНАЧЕ ЛОЖЬ
			|	КОНЕЦ КАК ЭтоВозвратнаяТара
			|ИЗ
			|	СуммированнаяТаблицаТоваров КАК ТаблицаТоваров
			|
			|ИТОГИ ПО
			|	Ссылка,
			|	Склад,
			|	Номенклатура,
			|	Характеристика
			|;
			|
			|////////////////////////////////////////////////////////////­////////////////////
			|ВЫБРАТЬ
			|	ТаблицаТоваров.Ссылка КАК Ссылка,
			|	ТаблицаТоваров.Склад КАК Склад,
			|	ТаблицаТоваров.Номенклатура КАК Номенклатура,
			|	ТаблицаТоваров.Характеристика КАК Характеристика,
			|	ТаблицаТоваров.Серия.Наименование КАК ПредставлениеСерии
			|ИЗ
			|	ТаблицаТоваров КАК ТаблицаТоваров
			|ГДЕ
			|	ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = ЗНАЧЕНИЕ(Перечисление.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара)
			|	И НЕ ТаблицаТоваров.Серия ЕСТЬ NULL 
			|";
			
			ТекстЗапросаПоТоварам = СтрЗаменить(ТекстЗапросаПоТоварам, "&ТекстЗапросаКоэффициентУпаковки",
			Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
			"ТаблицаТоваров.Упаковка",
			"ТаблицаТоваров.Номенклатура"));
			
			ТекстЗапросаПоТоварам = СтрЗаменить(ТекстЗапросаПоТоварам, "&ТекстЗапросаНаименованиеЕдиницыИзмерения",
			Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаЗначениеРеквизитаЕдиницыИзмерения(
			"Наименование",
			"ТаблицаТоваров.Упаковка",
			"ТаблицаТоваров.Номенклатура"));
			
			ЗапросПоТоварам.Текст	 = ТекстЗапросаПоТоварам;
			РезультатЗапроса		 = ЗапросПоТоварам.ВыполнитьПакет();
			ДанныеПечати			 = РезультатЗапроса[2].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
			ВыборкаПоСериям 		 = РезультатЗапроса[3].Выбрать();
			
		Иначе
			
			ТекстЗапросаПоТоварам = 
			"ВЫБРАТЬ
			|	РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
			|	РеализацияТоваровУслугТовары.Ссылка.Организация КАК Организация,
			|	РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
			|	РеализацияТоваровУслугТовары.Ссылка.Номер КАК Номер,
			|	РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата,
			|	РеализацияТоваровУслугТовары.Ссылка.Организация.Префикс КАК Префикс,
			|	РеализацияТоваровУслугТовары.Склад КАК Склад,
			|	&ТекстЗапросаНаименованиеЕдиницыИзмерения КАК ПредставлениеЕдининицыИзмеренияУпаковки,
			|	ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Номенклатура.ЕдиницаИзмерения) КАК ПредставлениеБазовойЕдиницыИзмерения,
			|	РеализацияТоваровУслугТовары.КоличествоУпаковок КАК КоличествоУпаковок,
			|	РеализацияТоваровУслугТовары.Количество КАК Количество,
			|	РеализацияТоваровУслугТовары.Номенклатура.Код КАК Код,
			|	РеализацияТоваровУслугТовары.Номенклатура.Артикул КАК Артикул,
			|	РеализацияТоваровУслугТовары.Номенклатура.НаименованиеПолное КАК ПредставлениеНоменклатуры,
			|	РеализацияТоваровУслугТовары.Характеристика.НаименованиеПолное КАК ПредставлениеХарактеристики,
			|	"""" КАК ПредставлениеСерии,
			|	ВЫБОР
			|		КОГДА ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) = 1
			|			ТОГДА НЕОПРЕДЕЛЕНО
			|		ИНАЧЕ РеализацияТоваровУслугТовары.Упаковка.Наименование
			|	КОНЕЦ КАК Упаковка,
			|	ВЫБОР
			|		КОГДА РеализацияТоваровУслугТовары.Ссылка.ВернутьМногооборотнуюТару
			|				И РеализацияТоваровУслугТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
			|			ТОГДА ИСТИНА
			|		ИНАЧЕ ЛОЖЬ
			|	КОНЕЦ КАК ЭтоВозвратнаяТара,
			|	NULL КАК НастройкаИспользованияСерий,
			|	РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
			|	РеализацияТоваровУслугТовары.Характеристика КАК Характеристика,
			|	РеализацияТоваровУслугТовары.Цена КАК Цена,
			|	РеализацияТоваровУслугТовары.СуммаРучнойСкидки КАК СуммаРучнойСкидки,
			|	РеализацияТоваровУслугТовары.СуммаАвтоматическойСкидки КАК СуммаАвтоматическойСкидки,
			|	РеализацияТоваровУслугТовары.ПроцентРучнойСкидки КАК ПроцентРучнойСкидки,
			|	РеализацияТоваровУслугТовары.ПроцентАвтоматическойСкидки КАК ПроцентАвтоматическойСкидки,
			|	РеализацияТоваровУслугТовары.Сумма КАК Сумма
			|ИЗ
			|	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
			|ГДЕ
			|	РеализацияТоваровУслугТовары.Ссылка В(&МассивОбъектов)
			|	И РеализацияТоваровУслугТовары.Склад В(&МассивСкладов)
			|	И РеализацияТоваровУслугТовары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
			|ИТОГИ ПО
			|	Ссылка,
			|	Склад,
			|	Номенклатура,
			|	Характеристика";
			
			ТекстЗапросаПоТоварам = СтрЗаменить(ТекстЗапросаПоТоварам, "&ТекстЗапросаКоэффициентУпаковки",
			Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
			"РеализацияТоваровУслугТовары.Упаковка",
			"РеализацияТоваровУслугТовары.Номенклатура"));
			
			ТекстЗапросаПоТоварам = СтрЗаменить(ТекстЗапросаПоТоварам, "&ТекстЗапросаНаименованиеЕдиницыИзмерения",
			Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаЗначениеРеквизитаЕдиницыИзмерения(
			"Наименование",
			"РеализацияТоваровУслугТовары.Упаковка",
			"РеализацияТоваровУслугТовары.Номенклатура"));
			
			ЗапросПоТоварам.Текст = ТекстЗапросаПоТоварам;
			ДанныеПечати = ЗапросПоТоварам.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
			
		КонецЕсли;
		
				
		ПервыйДокумент = Истина;
		
		Макет = ПолучитьМакет("ПФ_MXL_РасходнаяНакладнаяСРазбивкойПоСкладам");
		
		
		ИтогБезСкидки = 0;
		ИтогСкидка = 0;
		ИтогСумма = 0;
		
		ШиринаОтсутствующихОбластей = 0;
		Если НЕ ВыводитьКоды Тогда
			ШиринаОтсутствующихОбластей = Макет.Область("КолонкаКодов").ШиринаКолонки;
		КонецЕсли;
		
		Если Не ИспользоватьУпаковки Тогда
			
			ШиринаОтсутствующихОбластей = ШиринаОтсутствующихОбластей + Макет.Область("КолонкаКоличестваУпаковок").ШиринаКолонки;
			ШиринаОтсутствующихОбластей = ШиринаОтсутствующихОбластей + Макет.Область("КолонкаПредставленияУпаковок").ШиринаКолонки;
			
		КонецЕсли;
		
		// Раздвинуть колонку "КолонкаТоваров" на ширину отсутствующих областей
		Макет.Область("КолонкаТоваров").ШиринаКолонки = Макет.Область("КолонкаТоваров").ШиринаКолонки + ШиринаОтсутствующихОбластей;
		
		РеквизитыДокумента = Новый Структура("Номер, Дата, Префикс, Представление");
		
		Пока ДанныеПечати.Следующий() Цикл
			
			ИндексМассиваПроверки = МассивПроверки.Найти(ДанныеПечати.Ссылка);
			Если ИндексМассиваПроверки <> Неопределено Тогда
				МассивПроверки.Удалить(ИндексМассиваПроверки);
			КонецЕсли;
			
			НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
			
			ЗаполнитьЗначенияСвойств(РеквизитыДокумента, ДанныеПечати);
			
			ВыборкаПоСкладам = ДанныеПечати.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
			Пока ВыборкаПоСкладам.Следующий() Цикл
				
				Если Не ПервыйДокумент Тогда
					ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
				КонецЕсли;
				
				ПервыйДокумент = Ложь;
				
				СтруктураДанныхЗаголовок = Новый Структура;
				
				
				
				Область = Макет.ПолучитьОбласть("Заголовок");
				СтруктураДанныхЗаголовок.Вставить("ТекстЗаголовка", ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(РеквизитыДокумента, НСтр("ru = 'Накладная';
				|en = 'Goods sales'")));
				
				
				Область.Параметры.Заполнить(СтруктураДанныхЗаголовок);
				ТабличныйДокумент.Вывести(Область);
				
				
				
				Область = Макет.ПолучитьОбласть("Шапка");
				СтруктураДанныхШапка = Новый Структура;
				
				СтруктураДанныхШапка.Вставить("ПредставлениеСклада", ВыборкаПоСкладам.Склад);
				СтруктураДанныхШапка.Вставить("Склад", ВыборкаПоСкладам.Склад);
				Область.Параметры.Заполнить(СтруктураДанныхШапка);
				ТабличныйДокумент.Вывести(Область);
				
				Область = Макет.ПолучитьОбласть("Поставщик");
				СтруктураДанныхПоставщик = Новый Структура;
				Область.Параметры.Заполнить(СтруктураДанныхПоставщик);
				ТабличныйДокумент.Вывести(Область);
				
				Область = Макет.ПолучитьОбласть("Покупатель");
				СтруктураДанныхПокупатель = Новый Структура;
				СтруктураДанныхПоставщик.Вставить("ПредставлениеПартнера", 
				ФормированиеПечатныхФорм.ОписаниеОрганизации(ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ВыборкаПоСкладам.Контрагент, ВыборкаПоСкладам.Дата),
				"ПолноеНаименование"));
				СтруктураДанныхПоставщик.Вставить("Контрагент", ВыборкаПоСкладам.Контрагент);
				Область.Параметры.Заполнить(СтруктураДанныхПоставщик);
				ТабличныйДокумент.Вывести(Область);
				
				Область = Макет.ПолучитьОбласть("ШапкаТаблицы|НачалоСтроки");
				ТабличныйДокумент.Вывести(Область);
				Если ВыводитьКоды Тогда
					Область = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
					СтруктураДанныхКоды = Новый Структура("ИмяКолонкиКодов", КолонкаКодов);
					Область.Параметры.Заполнить(СтруктураДанныхКоды);
					ТабличныйДокумент.Присоединить(Область);
				КонецЕсли;
				Область = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаТоваров");
				ТабличныйДокумент.Присоединить(Область);
				Область = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкиКоличества");
				ТабличныйДокумент.Присоединить(Область);
				
				ОбластьЦены = Макет.ПолучитьОбласть("ШапкаТаблицы|Цена");
				ТабличныйДокумент.Присоединить(ОбластьЦены);
				
				Область = Макет.ПолучитьОбласть("ШапкаТаблицы|СуммаБезСкидки");
				ТабличныйДокумент.Присоединить(Область);
				Область = Макет.ПолучитьОбласть("ШапкаТаблицы|Скидка");
				ТабличныйДокумент.Присоединить(Область);
				
				Область = Макет.ПолучитьОбласть("ШапкаТаблицы|Процент");
				ТабличныйДокумент.Присоединить(Область);
				
								
				Область = Макет.ПолучитьОбласть("ШапкаТаблицы|Сумма");
				ТабличныйДокумент.Присоединить(Область);
				
				 				
				ОбластьНачалоСтроки		 = Макет.ПолучитьОбласть("СтрокаТаблицы|НачалоСтроки");
				ОбластьКолонкаКодов		 = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкаКодов");
				ОбластьКолонкаТоваров	 = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкаТоваров");
				
				ОбластьКолонкаКоличества = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкиКоличества");
				ОбластьЦена = Макет.ПолучитьОбласть("СтрокаТаблицы|Цена");
				ОбластьСуммаБезСкидки = Макет.ПолучитьОбласть("СтрокаТаблицы|СуммаБезСкидки");
				ОбластьСкидка = Макет.ПолучитьОбласть("СтрокаТаблицы|Скидка");
				ОбластьПроцент = Макет.ПолучитьОбласть("СтрокаТаблицы|Процент");
				ОбластьСумма = Макет.ПолучитьОбласть("СтрокаТаблицы|Сумма");
							 				
				
				СчетСтрок = 1;				
				
				ВыборкаПоСсылкамТЧ = ВыборкаПоСкладам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
				
				Пока ВыборкаПоСсылкамТЧ.Следующий() Цикл
					
					ВыборкаПоНоменклатуреТЧ = ВыборкаПоСсылкамТЧ.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
					
					Пока ВыборкаПоНоменклатуреТЧ.Следующий() Цикл
						
						ВыборкаПоСтрокамТЧ = ВыборкаПоНоменклатуреТЧ.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
						
						ПерваяСтрока = Истина;
						СтрокаУпаковок = "";
						СтрокаКоличесткаУпаковок = "";
						СтрокаЕдиницИзмерений = "";
						СтрокаКоличества = "";
						
						
						
						
						Пока ВыборкаПоСтрокамТЧ.Следующий() Цикл
							
							Если ВыборкаПоСтрокамТЧ.НастройкаИспользованияСерий = Перечисления.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара Тогда
								
								Если ПерваяСтрока Тогда
									
									СтруктураДанныхНомерСтроки = Новый Структура("НомерСтроки", СчетСтрок);
									ОбластьНачалоСтроки.Параметры.Заполнить(СтруктураДанныхНомерСтроки);
									СчетСтрок = СчетСтрок + 1;
									ТабличныйДокумент.Вывести(ОбластьНачалоСтроки);
									Если ВыводитьКоды Тогда
										СтруктураДанныхКоды = Новый Структура("ЗначениеКода", ВыборкаПоСтрокамТЧ[КолонкаКодов]);
										ОбластьКолонкаКодов.Параметры.Заполнить(СтруктураДанныхКоды);
										ТабличныйДокумент.Присоединить(ОбластьКолонкаКодов);
									КонецЕсли;
									
									СтруктураПоиска = Новый Структура;
									СтруктураПоиска.Вставить("Ссылка", ВыборкаПоСтрокамТЧ.Ссылка);
									СтруктураПоиска.Вставить("Склад", ВыборкаПоСтрокамТЧ.Склад);
									СтруктураПоиска.Вставить("Номенклатура", ВыборкаПоСтрокамТЧ.Номенклатура);
									СтруктураПоиска.Вставить("Характеристика", ВыборкаПоСтрокамТЧ.Характеристика);
									
									СтрокаСерий = "";
									Пока ВыборкаПоСериям.НайтиСледующий(СтруктураПоиска) Цикл
										СтрокаСерий = СтрокаСерий + ВыборкаПоСериям.ПредставлениеСерии + ", ";
									КонецЦикла;
									
									Если СтрДлина(СтрокаСерий) <> 0 Тогда
										СтрокаСерий = Лев(СтрокаСерий, СтрДлина(СтрокаСерий) - 2);
									КонецЕсли;
									
									ДополнительныеПараметрыПолученияНаименованияДляПечати = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
									ДополнительныеПараметрыПолученияНаименованияДляПечати.ВозвратнаяТара = ВыборкаПоСтрокамТЧ.ЭтоВозвратнаяТара;
									
									Товар = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
									ВыборкаПоСтрокамТЧ.ПредставлениеНоменклатуры,
									ВыборкаПоСтрокамТЧ.ПредставлениеХарактеристики,
									,
									СтрокаСерий,
									ДополнительныеПараметрыПолученияНаименованияДляПечати);
									
									СтруктураДанныхТовар = Новый Структура("Товар", Товар);
									ОбластьКолонкаТоваров.Параметры.Заполнить(СтруктураДанныхТовар);
									
									ТабличныйДокумент.Присоединить(ОбластьКолонкаТоваров);
									
									
									
									
									ПерваяСтрока = Ложь;
									
								КонецЕсли;
								
								Если ИспользоватьУпаковки Тогда
									СтрокаУпаковок = СтрокаУпаковок + ВыборкаПоСтрокамТЧ.ПредставлениеЕдининицыИзмеренияУпаковки + Символы.ПС;
									СтрокаКоличесткаУпаковок = СтрокаКоличесткаУпаковок + ВыборкаПоСтрокамТЧ.КоличествоУпаковок + Символы.ПС;
								КонецЕсли;
								
								СтрокаЕдиницИзмерений = СтрокаЕдиницИзмерений + ВыборкаПоСтрокамТЧ.ПредставлениеБазовойЕдиницыИзмерения + Символы.ПС;
								СтрокаКоличества = СтрокаКоличества + ВыборкаПоСтрокамТЧ.Количество + Символы.ПС;
								
								ТоварССериейЭкземпляром = Истина;
								
							Иначе			
								
								СтруктураДанныхНомерСтроки = Новый Структура("НомерСтроки", СчетСтрок);
								ОбластьНачалоСтроки.Параметры.Заполнить(СтруктураДанныхНомерСтроки);
								СчетСтрок = СчетСтрок + 1;
								ТабличныйДокумент.Вывести(ОбластьНачалоСтроки);
								
								Если ВыводитьКоды Тогда
									СтруктураДанныхКоды = Новый Структура("ЗначениеКода", ВыборкаПоСтрокамТЧ[КолонкаКодов]);
									ОбластьКолонкаКодов.Параметры.Заполнить(СтруктураДанныхКоды);
									ТабличныйДокумент.Присоединить(ОбластьКолонкаКодов);
								КонецЕсли;
								
								 								
								
								ДополнительныеПараметрыПолученияНаименованияДляПечати = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
								ДополнительныеПараметрыПолученияНаименованияДляПечати.ВозвратнаяТара = ВыборкаПоСтрокамТЧ.ЭтоВозвратнаяТара;
								
								Товар = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
								ВыборкаПоСтрокамТЧ.ПредставлениеНоменклатуры,
								ВыборкаПоСтрокамТЧ.ПредставлениеХарактеристики,
								,
								ВыборкаПоСтрокамТЧ.ПредставлениеСерии,
								ДополнительныеПараметрыПолученияНаименованияДляПечати);
								
								СтруктураДанныхТовар = Новый Структура("Товар", Товар);
								ОбластьКолонкаТоваров.Параметры.Заполнить(СтруктураДанныхТовар);
								
								ТабличныйДокумент.Присоединить(ОбластьКолонкаТоваров);
								
								
								ОбластьКолонкаКоличества.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
								ТабличныйДокумент.Присоединить(ОбластьКолонкаКоличества);
								
								 								
								ОбластьЦена.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
								ТабличныйДокумент.Присоединить(ОбластьЦена);
								
								СуммаБезСкидки = ВыборкаПоСтрокамТЧ.Цена * ВыборкаПоСтрокамТЧ.Количество;
								
								ОбластьСуммаБезСкидки.Параметры.СуммаБезСкидки = Формат(СуммаБезСкидки,"ЧДЦ=2;ЧРД=,");;
								ТабличныйДокумент.Присоединить(ОбластьСуммаБезСкидки);
								Скидка = ВыборкаПоСтрокамТЧ.СуммаАвтоматическойСкидки + ВыборкаПоСтрокамТЧ.СуммаРучнойСкидки;
								ОбластьСкидка.Параметры.Скидка = Формат(Скидка,"ЧДЦ=2;ЧРД=,");;
								ТабличныйДокумент.Присоединить(ОбластьСкидка);
								Процент = ВыборкаПоСтрокамТЧ.ПроцентАвтоматическойСкидки + ВыборкаПоСтрокамТЧ.ПроцентРучнойСкидки;
								ОбластьПроцент.Параметры.Процент = Формат(Процент,"ЧДЦ=2;ЧРД=,");;
								ТабличныйДокумент.Присоединить(ОбластьПроцент);
								ОбластьСумма.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
								ТабличныйДокумент.Присоединить(ОбластьСумма);
								ИтогБезСкидки = ИтогБезСкидки + СуммаБезСкидки;
								ИтогСкидка = ИтогСкидка + Скидка;
								ИтогСумма = ИтогСумма + ВыборкаПоСтрокамТЧ.Сумма;
																
																
								
								ТоварССериейЭкземпляром = Ложь;
								
							КонецЕсли;
							
						КонецЦикла;
						
						
						
					КонецЦикла;
					
				КонецЦикла;
				
								
				Область = Макет.ПолучитьОбласть("ПодвалТаблицы|НачалоСтроки");
				ТабличныйДокумент.Вывести(Область);
				Если ВыводитьКоды Тогда
					Область = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаКодов");
					ТабличныйДокумент.Присоединить(Область);
				КонецЕсли;
				Область = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаТоваров");
				ТабличныйДокумент.Присоединить(Область);
				
				Область = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкиКоличества");
				ТабличныйДокумент.Присоединить(Область);
				Область = Макет.ПолучитьОбласть("ПодвалТаблицы|Цена");
				ТабличныйДокумент.Присоединить(Область);
				Область = Макет.ПолучитьОбласть("ПодвалТаблицы|СуммаБезСкидки");
				Область.Параметры.ИтогБезСкидки = Формат(ИтогБезСкидки,"ЧДЦ=2;ЧРД=,");
				ТабличныйДокумент.Присоединить(Область);
				Область = Макет.ПолучитьОбласть("ПодвалТаблицы|Скидка");
				Область.Параметры.ИтогСкидка = Формат(ИтогСкидка,"ЧДЦ=2;ЧРД=,");
				ТабличныйДокумент.Присоединить(Область);
				Область = Макет.ПолучитьОбласть("ПодвалТаблицы|Процент");
				ТабличныйДокумент.Присоединить(Область);
				Область = Макет.ПолучитьОбласть("ПодвалТаблицы|Сумма");
				Область.Параметры.ИтогСумма = Формат(ИтогСумма,"ЧДЦ=2;ЧРД=,");
				ТабличныйДокумент.Присоединить(Область);
				
								
				Область = Макет.ПолучитьОбласть("Подписи");
				
				ТекстИтоговойСтроки = НСтр("ru = 'Всего наименований %ВсегоНаименований%';
				|en = 'Total items %ВсегоНаименований%'");
				ТекстИтоговойСтроки = СтрЗаменить(ТекстИтоговойСтроки,"%ВсегоНаименований%", СчетСтрок-1);
				СтруктураДанныхИтоговаяСтрока = Новый Структура;
				СтруктураДанныхЗаголовок.Вставить("ИтоговаяСтрока", ТекстИтоговойСтроки);
				Область.Параметры.Заполнить(СтруктураДанныхЗаголовок);
				ТабличныйДокумент.Вывести(Область);
				
				
				
				
				
				
			КонецЦикла;
			
			УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеПечати.Ссылка);
			
		КонецЦикла;
		
	КонецЦикла;
	
	Для Каждого Ссылка Из МассивПроверки Цикл
		Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
		НСтр("ru = 'В документе %1 отсутствуют товары. Печать расходной накладной не требуется.';
		|en = 'Goods are missing in document %1. Printing of a sales invoice is not required.'"),
		Ссылка);
		
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
		Текст,
		Ссылка);
	КонецЦикла;
	
	
	
	
	
	
	
	
	
	
	
	ТабличныйДокумент.АвтоМасштаб = Истина;
	
	Если ПривилегированныйРежим() Тогда
		УстановитьПривилегированныйРежим(Ложь);
	КонецЕсли;
	
	Возврат ТабличныйДокумент;
	
КонецФункции
Показать
Прикрепленные файлы:
РасходнаяНакладнаяСРазбивкойПоСкладам № ЦБ-501 от 27.01.2021.pdf
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. N0t_F0und 10 18.02.21 11:06 Сейчас в теме
Вы же пишите, что это печатная форма, значит, все ваши цены должны быть в самом документе. Там и берите
3. koshman-86@rambler.ru 18.02.21 11:20 Сейчас в теме
(2)Как это сделать? (Я же совсем тупенький. :-) )
4. user633533_encantado 11 18.02.21 11:45 Сейчас в теме
(3) Т.е. хотите чтобы кто-то за вас сделал ?
5. koshman-86@rambler.ru 19.02.21 04:07 Сейчас в теме
(4)Нет конечно. Форма уже готова, зачем ее делать, мне нужно чтоб показали куда копать.
6. koshman-86@rambler.ru 19.02.21 04:17 Сейчас в теме
(2)Цены уже взяты с накладной. Проблема не в этом. В печатной форме идет разбивка по складам, т.е если реализация товаров проходит по нескольким складам. Цены проставляются, но итого в подвале считается со всей реализации, а нужно чтобы расчет шел конкретно по складу.
Оставьте свое сообщение

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