Добрый день. Не получается вывести стандартный реквизит "Вес" из карточки номенклатуры в печатную форму. Выводит пустое значение
Из-за чего может быть ошибка?
Из-за чего может быть ошибка?
Функция СтрокаПредставленияВес(ПараметрыНоменклатуры) Экспорт
Если ПараметрыНоменклатуры.Свойство("Вес") Тогда
ВесЗначение = ПараметрыНоменклатуры.Вес;
Если ТипЗнч(ВесЗначение) = Тип("СправочникСсылка.Номенклатура") Тогда
Если НЕ ЗначениеЗаполнено(ВесЗначение) Тогда
Вес = "";
Иначе
Вес = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВесЗначение, "Вес");
КонецЕсли;
Иначе
Вес = СокрЛП(ВесЗначение);
КонецЕсли;
КонецЕсли;
Возврат Вес;
КонецФункции
Показать
Функция СформироватьЗаказПоставщику(ОписаниеПечатнойФормы, МассивОбъектов, ОбъектыПечати)
Перем ПервыйДокумент, НомерСтрокиНачало, Ошибки;
ТабличныйДокумент = ОписаниеПечатнойФормы.ТабличныйДокумент;
Макет = ЭтотОбъект.ПолучитьМакет(ОписаниеПечатнойФормы.ПолныйПутьКМакету);
ОбластиМакета = Новый Структура;
ДанныеПечати = Новый Структура;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказПоставщику.Ссылка КАК Ссылка,
| ЗаказПоставщику.Номер КАК Номер,
| ЗаказПоставщику.Дата КАК ДатаДокумента,
| ЗаказПоставщику.Организация КАК Организация,
| ЗаказПоставщику.Контрагент КАК Контрагент,
| ЗаказПоставщику.СуммаВключаетНДС КАК СуммаВключаетНДС,
| ЗаказПоставщику.ВалютаДокумента КАК ВалютаДокумента,
| ВЫБОР
| КОГДА ФИОФизЛицСрезПоследних.ФизЛицо ЕСТЬ 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'");
ФорматированнаяСумма = ПечатьДокументовУНФ.ФорматСумм(Итоги.Всего, Шапка.ВалютаДокумента);
ДанныеПечати.Вставить("ИтоговаяСтрока", СтрШаблон(ШаблонСтроки, Строка(Итоги.КоличествоСтрок),
ФорматированнаяСумма));
ДанныеПечати.Вставить("СуммаПрописью", РаботаСКурсамиВалют.СформироватьСуммуПрописью(Итоги.Всего,
Шапка.ВалютаДокумента));
ОбластиМакета.ОбластьМакетаСуммаПрописью.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластиМакета.ОбластьМакетаСуммаПрописью);
КонецЕсли;
//::: Подписи
Если ОбластиМакета.ОбластьМакетаПодписи <> Неопределено Тогда
ДанныеПечати.Вставить("ОтветственныйПредставление", Шапка.ОтветственныйПредставление);
ОбластиМакета.ОбластьМакетаПодписи.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластиМакета.ОбластьМакетаПодписи);
КонецЕсли;
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати,
Шапка.Ссылка);
КонецЦикла;
Возврат ТабличныйДокумент;
КонецФункции
ПоказатьПо теме из базы знаний
- Две печатные формы на одном листе - технология на примере печатных форм "Расходного ордера на товары" и "Задания на отбор"
- Конструктор печатных форм (PrintWizard). Часть 1: Печатные формы. А что, собственно, не так?
- Печатная форма Реализация товаров, с картинками (фотографиями), для УТ 11
- Печатные формы УПД, УКД (по постановлению 1096) для УТ 10.3
- Печатные формы Счет-фактура (+корректировочный) в редакции 1096 для УТ 10.3
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот