Вывод колонки в печатную форму

1. user1943597 02.05.23 15:46 Сейчас в теме
Добрый день. Не получается вывести стандартный реквизит "Вес" из карточки номенклатуры в печатную форму. Выводит пустое значение
Из-за чего может быть ошибка?

Функция СтрокаПредставленияВес(ПараметрыНоменклатуры) Экспорт
	
    Если ПараметрыНоменклатуры.Свойство("Вес") Тогда
        ВесЗначение = ПараметрыНоменклатуры.Вес;

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

    КонецЕсли;

    Возврат Вес;

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



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

		ПечатьДокументовУНФ.ПередНачаломФормированияДокумента(ТабличныйДокумент, ПервыйДокумент, НомерСтрокиНачало,
			ДанныеПечати);
		
		//::: Заголовок
		ОбластьЗаголовок = ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет, "Заголовок", "", Ошибки);
		Если ОбластьЗаголовок <> Неопределено Тогда

			НомерДокумента = ПечатьДокументовУНФ.ПолучитьНомерНаПечатьСУчетомДатыДокумента(Шапка.ДатаДокумента,
				Шапка.Номер, Шапка.Префикс);
			ДатаДокумента = Формат(Шапка.ДатаДокумента, "ДЛФ=DD");
			ПредставлениеДокумента = СтрШаблон(НСтр("ru ='Заказ поставщику № %1 от %2'"), НомерДокумента, ДатаДокумента);
			ДанныеПечати.Вставить("ТекстЗаголовка", ПредставлениеДокумента);

			ОбластьЗаголовок.Параметры.Заполнить(ДанныеПечати);
			ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьЗаголовок,
				Шапка.Ссылка);
			ТабличныйДокумент.Вывести(ОбластьЗаголовок);

		КонецЕсли;
		
		// ::: Поставщик, покупатель
		СведенияОбОрганизации = ПечатьДокументовУНФ.СведенияОЮрФизЛице(Шапка.Организация,
			Шапка.ДатаДокумента, , );
		СведенияОбКонтрагенте = ПечатьДокументовУНФ.СведенияОЮрФизЛице(Шапка.Контрагент,
			Шапка.ДатаДокумента, , );

		ОбластьПокупатель = ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет, "Покупатель", "", Ошибки);
		Если ОбластьПокупатель <> Неопределено Тогда

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

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

		КонецЕсли;

		ОбластьПоставщик = ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет, "Поставщик", "", Ошибки);
		Если ОбластьПоставщик <> Неопределено Тогда

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

			ОбластьПоставщик.Параметры.Заполнить(ДанныеПечати);
			ТабличныйДокумент.Вывести(ОбластьПоставщик);

		КонецЕсли;
		
		// ::: Табличная часть
		ТаблицаЗапасы = Шапка.ТаблицаЗапасы.Выгрузить();

		Итоги = Новый Структура;
		Итоги.Вставить("НомерСтраницы", 1);
		Итоги.Вставить("ЕстьСкидки", (ТаблицаЗапасы.Итог("ЕстьСкидка") <> 0));
		Итоги.Вставить("КоличествоСтрок", 0);
		Итоги.Вставить("ОбработаноСтрок", 0);
		Итоги.Вставить("Количество", 0);
		Итоги.Вставить("КоличествоНаСтранице", 0);
		Итоги.Вставить("Сумма", 0);
		Итоги.Вставить("СуммаНаСтранице", 0);
		Итоги.Вставить("СуммаНДС", 0);
		Итоги.Вставить("Всего", 0);
		Итоги.Вставить("СкидкаПоСтроке", 0);
		Итоги.Вставить("СкидкаПоДокументу", 0);
		Итоги.Вставить("ПредставлениеСкидки", Константы.ПредставлениеСкидкиВПечатнойФорме.Получить());
		Итоги.Вставить("ПредставлениеДокумента", ПредставлениеДокумента);
		Итоги.Вставить("ЕстьСтавкаНольПроцентов", Ложь);

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

		ИмяОбласти = ?(Итоги.ЕстьСкидки, "СтрокаСоСкидкой", "Строка");
		ОбластиМакета.Вставить("ОбластьМакетаСтрокаТаблицы", ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет,
			ИмяОбласти, НСтр("ru ='Строка таблицы'"), Ошибки));

		ИмяОбласти = ?(Итоги.ЕстьСкидки, "ИтогоПоСтраницеСоСкидкой", "ИтогоПоСтранице");
		ОбластиМакета.Вставить("ОбластьМакетаИтогоПоСтранице", ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет,
			ИмяОбласти, НСтр("ru ='Итого по странице'"), Ошибки));

		ОбластиМакета.Вставить("ОбластьМакетаНомерСтраницы", ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет,
			"НомерСтраницы", НСтр("ru ='Номер страницы'"), Ошибки));
		ОбластиМакета.Вставить("ОбластьМакетаИтогоПоДокументу", ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет,
			"Итого", "", Ошибки));
		ОбластиМакета.Вставить("ОбластьМакетаИтогоСкидка", ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет,
			"ИтогоСкидка", "", Ошибки));
		ОбластиМакета.Вставить("ОбластьМакетаИтогоКОплате", ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет,
			"ИтогоКОплате", НСтр("ru ='Итого к оплате'"), Ошибки));
		ОбластиМакета.Вставить("ОбластьМакетаСуммаПрописью", ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет,
			"СуммаПрописью", НСтр("ru ='Сумма прописью'"), Ошибки));
		ОбластиМакета.Вставить("ОбластьМакетаПодписи", ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет, "Подписи",
			"", Ошибки));

		Если ОбластиМакета.ОбластьМакетаШапкаТаблицы <> Неопределено Тогда

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

		КонецЕсли;

		Если ОбластиМакета.ОбластьМакетаСтрокаТаблицы <> Неопределено Тогда

			Итоги.КоличествоСтрок = ТаблицаЗапасы.Количество();

			ПараметрыНоменклатуры = Новый Структура;

			Для Каждого СтрокаТабличнойЧасти Из ТаблицаЗапасы Цикл

				Если Итоги.КоличествоСтрок <> 0 И СтрокаКорректноРазмещаетсяНаСтранице(ТабличныйДокумент,
					ОбластиМакета, Итоги) = Ложь Тогда

					ДобавитьНовуюСтраницуДокумента(ТабличныйДокумент, ОбластиМакета, Итоги);

				КонецЕсли;

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

				ПараметрыНоменклатуры.Очистить();
				ПараметрыНоменклатуры.Вставить("Содержание", СтрокаТабличнойЧасти.Содержание);
				ПараметрыНоменклатуры.Вставить("ПредставлениеНоменклатуры",
					СтрокаТабличнойЧасти.ПредставлениеНоменклатуры);
				ПараметрыНоменклатуры.Вставить("ПредставлениеХарактеристики", СтрокаТабличнойЧасти.Характеристика);
				ПараметрыНоменклатуры.Вставить("ПредставлениеАртикула", СтрокаТабличнойЧасти.Артикул); 
			//	ПараметрыНоменклатуры.Вставить("Объем", СтрокаПредставленияОбъема(ПараметрыНоменклатуры));
				ПараметрыНоменклатуры.Вставить("НеобходимоВыделитьКакСоставНабора",
					СтрокаТабличнойЧасти.НеобходимоВыделитьКакСоставНабора);

				ДанныеПечати.Вставить("ПредставлениеНоменклатуры", ПечатьДокументовУНФ.ПредставлениеНоменклатуры(
					ПараметрыНоменклатуры));
				ДанныеПечати.Вставить("ПредставлениеКодаНоменклатуры",
					ПечатьДокументовУНФ.ПредставлениеКодаНоменклатуры(СтрокаТабличнойЧасти)); 
					
					
					
				ДанныеПечати.Вставить("Вес", СтрокаПредставленияВес(ПараметрыНоменклатуры));        
	

				ДанныеПечати.Вставить("Количество", СтрокаТабличнойЧасти.Количество);
				ДанныеПечати.Вставить("ЕдиницаИзмерения", СтрокаТабличнойЧасти.ЕдиницаИзмерения);
				ДанныеПечати.Вставить("Цена", СтрокаТабличнойЧасти.Цена);

				Если Итоги.ЕстьСкидки Тогда

					ДанныеПечати.Вставить("ПредставлениеСкидки", ПечатьДокументовУНФ.ПредставлениеСкидки(
						СтрокаТабличнойЧасти, Итоги));

				КонецЕсли;

				ДанныеПечати.Вставить("Сумма", СтрокаТабличнойЧасти.Сумма);

				Если Итоги.ЕстьСтавкаНольПроцентов = Ложь // Нет смысла проверять каждую строку, если уже нашли...

					И СтрокаТабличнойЧасти.Владелец().Колонки.Найти("СтавкаНДС") <> Неопределено
					И СтрокаТабличнойЧасти.СтавкаНДС = УправлениеНебольшойФирмойПовтИсп.ПолучитьСтавкуНДСНоль() Тогда

					Итоги.ЕстьСтавкаНольПроцентов = Истина;

				КонецЕсли;

				ОбластиМакета.ОбластьМакетаСтрокаТаблицы.Параметры.Заполнить(ДанныеПечати);
				ТабличныйДокумент.Вывести(ОбластиМакета.ОбластьМакетаСтрокаТаблицы);

				Итоги.КоличествоНаСтранице= Итоги.КоличествоНаСтранице + СтрокаТабличнойЧасти.Количество;
				Итоги.Сумма				= Итоги.Сумма + СтрокаТабличнойЧасти.Сумма;
				Итоги.СуммаНаСтранице		= Итоги.СуммаНаСтранице + СтрокаТабличнойЧасти.Сумма;
				Итоги.СуммаНДС			= Итоги.СуммаНДС + СтрокаТабличнойЧасти.СуммаНДС;
				Итоги.Всего				= Итоги.Всего + СтрокаТабличнойЧасти.Всего;
				Итоги.СкидкаПоДокументу	= Итоги.СкидкаПоДокументу + Итоги.СкидкаПоСтроке;

			КонецЦикла;

		КонецЕсли;
		
		// :::Итоги по посл. странице
		Если ОбластиМакета.ОбластьМакетаИтогоПоСтранице <> Неопределено Тогда

			ОбластиМакета.ОбластьМакетаИтогоПоСтранице.Параметры.Заполнить(Итоги);
			ТабличныйДокумент.Вывести(ОбластиМакета.ОбластьМакетаИтогоПоСтранице);

		КонецЕсли;
		
		//::: Итого
		Если ОбластиМакета.ОбластьМакетаИтогоПоДокументу <> Неопределено Тогда

			ДанныеПечати.Очистить();
			ДанныеПечати.Вставить("Всего", ПечатьДокументовУНФ.ФорматСумм(Итоги.Сумма));

			ДанныеПечати.Вставить("ЗаголовокНДС", ПечатьДокументовУНФ.ПредставлениеЗаголовкаНДС(Итоги.СуммаНДС,
				Шапка.СуммаВключаетНДС, Ложь, Итоги.ЕстьСтавкаНольПроцентов));
			ДанныеПечати.Вставить("ВсегоНДС", ?(Итоги.СуммаНДС = 0 И Не Итоги.ЕстьСтавкаНольПроцентов, "-",
				ПечатьДокументовУНФ.ФорматСумм(Итоги.СуммаНДС, , "0,00")));

			ОбластиМакета.ОбластьМакетаИтогоПоДокументу.Параметры.Заполнить(ДанныеПечати);
			ТабличныйДокумент.Вывести(ОбластиМакета.ОбластьМакетаИтогоПоДокументу);

		КонецЕсли;
		
		//::: Скидка
		Если Итоги.ЕстьСкидки Тогда

			Если ОбластиМакета.ОбластьМакетаИтогоСкидка <> Неопределено Тогда

				ОбластиМакета.ОбластьМакетаИтогоСкидка.Параметры.Заполнить(Итоги);
				ТабличныйДокумент.Вывести(ОбластиМакета.ОбластьМакетаИтогоСкидка);

			КонецЕсли;

		КонецЕсли;
		
		// ::: Итого к оплате
		Если ОбластиМакета.ОбластьМакетаИтогоКОплате <> Неопределено Тогда

			Если Итоги.ЕстьСкидки Тогда
				ЗаголовокВсегоКОплате = НСтр("ru ='Всего к оплате (с учетом скидки):'");
			Иначе
				ЗаголовокВсегоКОплате = НСтр("ru ='Всего к оплате:'");
			КонецЕсли;
			ДанныеПечати.Вставить("ЗаголовокВсегоКОплате", ЗаголовокВсегоКОплате);
			ДанныеПечати.Вставить("ИтогоКОплате", ПечатьДокументовУНФ.ФорматСумм(Итоги.Всего));

			ОбластиМакета.ОбластьМакетаИтогоКОплате.Параметры.Заполнить(ДанныеПечати);
			ТабличныйДокумент.Вывести(ОбластиМакета.ОбластьМакетаИтогоКОплате);

		КонецЕсли;
		
		// ::: Сумма прописью
		Если ОбластиМакета.ОбластьМакетаСуммаПрописью <> Неопределено Тогда

			ШаблонСтроки = НСтр("ru ='Всего наименований %1, на сумму %2'");
			ФорматированнаяСумма = ПечатьДокументовУНФ.ФорматСумм(Итоги.Всего, Шапка.ВалютаДокумента);

			ДанныеПечати.Вставить("ИтоговаяСтрока", СтрШаблон(ШаблонСтроки, Строка(Итоги.КоличествоСтрок),
				ФорматированнаяСумма));
			ДанныеПечати.Вставить("СуммаПрописью", РаботаСКурсамиВалют.СформироватьСуммуПрописью(Итоги.Всего,
				Шапка.ВалютаДокумента));

			ОбластиМакета.ОбластьМакетаСуммаПрописью.Параметры.Заполнить(ДанныеПечати);
			ТабличныйДокумент.Вывести(ОбластиМакета.ОбластьМакетаСуммаПрописью);

		КонецЕсли;
		
		//::: Подписи
		Если ОбластиМакета.ОбластьМакетаПодписи <> Неопределено Тогда

			ДанныеПечати.Вставить("ОтветственныйПредставление", Шапка.ОтветственныйПредставление);

			ОбластиМакета.ОбластьМакетаПодписи.Параметры.Заполнить(ДанныеПечати);
			ТабличныйДокумент.Вывести(ОбластиМакета.ОбластьМакетаПодписи);

		КонецЕсли;

		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати,
			Шапка.Ссылка);

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

Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user5300 1059 02.05.23 16:01 Сейчас в теме
(1)
Из-за чего может быть ошибка?


Структура "ПараметрыНоменклатуры" не содержит свойство "Вес"
3. user1943597 02.05.23 18:18 Сейчас в теме
(2)Как можно правильно прописать?
4. user5300 1059 03.05.23 07:55 Сейчас в теме
(3)
 ПараметрыНоменклатуры.Вставить("Вес", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СтрокаТабличнойЧасти.Номенклатура, "Вес")) /// либо
///ПараметрыНоменклатуры.Вставить("Вес", СтрокаТабличнойЧасти.Номенклатура);  
5. starjevschik 03.05.23 08:45 Сейчас в теме
Если ПараметрыНоменклатуры.Свойство("Вес") Тогда
        ВесЗначение = ПараметрыНоменклатуры.Вес;

Если ТипЗнч(ВесЗначение) = Тип("СправочникСсылка.Номенклатура") Тогда

а за это еще и платят?
ВесЗначение = ПараметрыНоменклатуры.Вес;
ТипЗнч(ВесЗначение) = Тип("СправочникСсылка.Номенклатура")
Оставьте свое сообщение

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