|
Редактирование макета печатной формы | ☑ | ||
---|---|---|---|---|
0
amadeus2010
26.03.13
✎
16:14
|
Добрый вечер, помогите разобраться есть процедура печать документа возврат от покупателей в основе печати котрой положен макет.Проблема в том что при печати не выводится склад на который товар вернулся и не отображается значение процент ручной скидки и сумма скидки в табличной части.Конфигурация УТ 11, управляемые формы
///////////////////////////////////////////////////////////////////// Функция СформироватьПечатнуюФормуВозвратОтКлиента(МассивОбъектов, ОбъектыПечати) // SUN Dmitriy УстановитьПривилегированныйРежим(Истина); КолонкаКодов = ФормированиеПечатныхФорм.ИмяДополнительнойКолонки(); ВыводитьКоды = ЗначениеЗаполнено(КолонкаКодов); Запрос = Новый Запрос(" |//////////////////////////////////////////////////////////////////////////// |// ЗАПРОС ПО ШАПКЕ | |ВЫБРАТЬ | ВозвратТоваровОтКлиента.Ссылка КАК Ссылка, | ВозвратТоваровОтКлиента.Номер КАК Номер, | ВозвратТоваровОтКлиента.Дата КАК Дата, | ВозвратТоваровОтКлиента.Партнер КАК Партнер, | ВозвратТоваровОтКлиента.Контрагент КАК Получатель, | ВозвратТоваровОтКлиента.Организация КАК Организация, | ВозвратТоваровОтКлиента.Склад КАК Склад, | ВозвратТоваровОтКлиента.Организация.Префикс КАК Префикс, | ВозвратТоваровОтКлиента.Валюта КАК Валюта, | ВозвратТоваровОтКлиента.ЦенаВключаетНДС КАК ЦенаВключаетНДС, | ВозвратТоваровОтКлиента.ХозяйственнаяОперация КАК ХозяйственнаяОперация, | ВЫБОР | КОГДА | ВозвратТоваровОтКлиента.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС) | ТОГДА | ИСТИНА | ИНАЧЕ | ЛОЖЬ | КОНЕЦ КАК УчитыватьНДС, | ВозвратТоваровОтКлиента.Склад.ТекущийОтветственный.Наименование КАК ПолучениеПроизвел |ИЗ | Документ.ВозвратТоваровОтКлиента КАК ВозвратТоваровОтКлиента | |ГДЕ | ВозвратТоваровОтКлиента.Ссылка В (&МассивДокументов) | И ВозвратТоваровОтКлиента.Проведен | |УПОРЯДОЧИТЬ ПО | Ссылка |; | |//////////////////////////////////////////////////////////////////////////// |// ЗАПРОС ПО ТАБЛИЧНЫМ ЧАСТЯМ | |ВЫБРАТЬ | ВложенныйЗапрос.Ссылка КАК Ссылка, | ВложенныйЗапрос.Номенклатура КАК Номенклатура, | ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК ТоварНаименованиеПолное, | ВложенныйЗапрос.Номенклатура.Код КАК Код, | ВложенныйЗапрос.Номенклатура.Артикул КАК Артикул, | ВложенныйЗапрос.ЕдиницаИзмерения.Наименование КАК ЕдиницаЦены, | ВложенныйЗапрос.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | ВложенныйЗапрос.Характеристика.НаименованиеПолное КАК Характеристика, | ВЫБОР КОГДА ЕСТЬNULL(ВложенныйЗапрос.Упаковка.Коэффициент, 1) = 1 | ТОГДА НЕОПРЕДЕЛЕНО | ИНАЧЕ ВложенныйЗапрос.Упаковка.Наименование | КОНЕЦ КАК Упаковка, | ВложенныйЗапрос.СтавкаНДС КАК СтавкаНДС, | ВложенныйЗапрос.Цена КАК Цена, | ВложенныйЗапрос.Количество КАК Количество, | ВложенныйЗапрос.Сумма КАК Сумма, | ВложенныйЗапрос.СуммаНДС КАК СуммаНДС, | ВложенныйЗапрос.НомерСтроки КАК НомерСтроки, | Ложь КАК ЭтоВозвратнаяТара |ИЗ ( | ВЫБРАТЬ | ВозвратТоваровОтКлиента.Ссылка КАК Ссылка, | | ВЫБОР КОГДА ВозвратТоваровОтКлиента.Порча ТОГДА | ВозвратТоваровОтКлиента.НоменклатураОприходование | ИНАЧЕ | ВозвратТоваровОтКлиента.Номенклатура | КОНЕЦ КАК Номенклатура, | | ВЫБОР КОГДА ВозвратТоваровОтКлиента.Порча ТОГДА | ВозвратТоваровОтКлиента.ХарактеристикаОприходование | ИНАЧЕ | ВозвратТоваровОтКлиента.Характеристика | КОНЕЦ КАК Характеристика, | | ВозвратТоваровОтКлиента.Упаковка КАК Упаковка, | | ВЫБОР КОГДА ВозвратТоваровОтКлиента.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка) ТОГДА | 1 | ИНАЧЕ | ВозвратТоваровОтКлиента.Упаковка.Коэффициент | КОНЕЦ КАК Коэффициент, | | ВЫБОР КОГДА ВозвратТоваровОтКлиента.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка) ТОГДА | ВозвратТоваровОтКлиента.Номенклатура.ЕдиницаИзмерения | ИНАЧЕ | ВозвратТоваровОтКлиента.Упаковка.ЕдиницаИзмерения | КОНЕЦ КАК ЕдиницаИзмерения, | | ВозвратТоваровОтКлиента.СтавкаНДС КАК СтавкаНДС, | ВозвратТоваровОтКлиента.Цена КАК Цена, | ВозвратТоваровОтКлиента.КоличествоУпаковок КАК Количество, | ВозвратТоваровОтКлиента.Сумма КАК Сумма, | ВозвратТоваровОтКлиента.СуммаНДС КАК СуммаНДС, | ВозвратТоваровОтКлиента.ПроцентРучнойСкидки КАК ПроцентРучнойСкидки, | ВозвратТоваровОтКлиента.СуммаРучнойСкидки КАК СуммаРучнойСкидки, | ВозвратТоваровОтКлиента.НомерСтроки КАК НомерСтроки | ИЗ | Документ.ВозвратТоваровОтКлиента.Товары КАК ВозвратТоваровОтКлиента | ГДЕ | ВозвратТоваровОтКлиента.Ссылка В (&МассивДокументов) | И ВозвратТоваровОтКлиента.Ссылка.Проведен | | ) КАК ВложенныйЗапрос | |УПОРЯДОЧИТЬ ПО | ВложенныйЗапрос.Ссылка, | НомерСтроки | |ИТОГИ ПО | Ссылка |"); Запрос.УстановитьПараметр("МассивДокументов", МассивОбъектов); ТабличныйДокумент = Новый ТабличныйДокумент; ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ВозвратТоваровОтКлиента_Накладная"; ТабличныйДокумент = Новый ТабличныйДокумент; МассивРезультатов = Запрос.ВыполнитьПакет(); ДанныеПечати = МассивРезультатов[0].Выбрать(); ВыборкаПоДокументам = МассивРезультатов[1].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); ПервыйДокумент = Истина; Пока ДанныеПечати.Следующий() Цикл // Найдем в выборке товары по текущему документу СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка); НайденСледующий = ВыборкаПоДокументам.НайтиСледующий(СтруктураПоиска); // Макет необходимо получать для каждого документа, т.к. размеры колонок изменяются динамически Макет = УправлениеПечатью.ПолучитьМакет("Документ.ВозвратТоваровОтКлиента.ПФ_MXL_ВозвратОтКлиента"); ВыборкаПоТоварам = ВыборкаПоДокументам.Выбрать(); Если Не ПервыйДокумент Тогда ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ПервыйДокумент = Ложь; НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1; // Выводим шапку накладной Если ДанныеПечати.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда ОбластьКолонкаТовар = Макет.Область("Товар"); Если Не ВыводитьКоды Тогда ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки * 1.2; КонецЕсли; Иначе ОбластьКолонкаТовар = Макет.Область("ТоварБезСумм"); Если Не ВыводитьКоды Тогда ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки * 1.125; КонецЕсли; КонецЕсли; ОбластьМакета = Макет.ПолучитьОбласть("Заголовок"); ТекстЗаголовка = ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(ДанныеПечати, НСтр("ru='Возврат от клиента'")); ОбластьМакета.Параметры.ТекстЗаголовка = ТекстЗаголовка; ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьМакета, ДанныеПечати.Ссылка); ТабличныйДокумент.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Поставщик"); ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Организация, ДанныеПечати.Дата), "ПолноеНаименование"); ОбластьМакета.Параметры.ПредставлениеПоставщика = ПредставлениеПоставщика; ОбластьМакета.Параметры.Поставщик = ДанныеПечати.Организация; ТабличныйДокумент.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Покупатель"); ПредставлениеПолучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Получатель, ДанныеПечати.Дата), "ПолноеНаименование"); ОбластьМакета.Параметры.ПредставлениеПолучателя = ПредставлениеПолучателя; ОбластьМакета.Параметры.Получатель = ДанныеПечати.Получатель; ТабличныйДокумент.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Склад"); ПредставлениеСклада = ФормированиеПечатныхФорм; ОбластьМакета.Параметры.ПредставлениеСклада = ПредставлениеСклада; ОбластьМакета.Параметры.Склад = ДанныеПечати.Склад; ТабличныйДокумент.Вывести(ОбластьМакета); // Выводим заголовок таблицы Товары Если ДанныеПечати.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки"); ОбластьКодов = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов"); ОбластьТовар = Макет.ПолучитьОбласть("ШапкаТаблицы|Товар"); ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные"); Иначе ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицыБезСумм|НомерСтрокиБезСумм"); ОбластьКодов = Макет.ПолучитьОбласть("ШапкаТаблицыБезСумм|КолонкаКодовБезСумм"); ОбластьТовар = Макет.ПолучитьОбласть("ШапкаТаблицыБезСумм|ТоварБезСумм"); ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицыБезСумм|ДанныеБезСумм"); КонецЕсли; ТабличныйДокумент.Вывести(ОбластьНомера); Если ВыводитьКоды Тогда ОбластьКодов.Параметры.ИмяКолонкиКодов = КолонкаКодов; ТабличныйДокумент.Присоединить(ОбластьКодов); КонецЕсли; ТабличныйДокумент.Присоединить(ОбластьТовар); ТабличныйДокумент.Присоединить(ОбластьДанных); Если ДанныеПечати.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда ОбластьНомера = Макет.ПолучитьОбласть("СтрокаТаблицы|НомерСтроки"); ОбластьКодов = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкаКодов"); ОбластьТовар = Макет.ПолучитьОбласть("СтрокаТаблицы|Товар"); ОбластьДанных = Макет.ПолучитьОбласть("СтрокаТаблицы|Данные"); Иначе ОбластьНомера = Макет.ПолучитьОбласть("СтрокаТаблицыБезСумм|НомерСтрокиБезСумм"); ОбластьКодов = Макет.ПолучитьОбласть("СтрокаТаблицыБезСумм|КолонкаКодовБезСумм"); ОбластьТовар = Макет.ПолучитьОбласть("СтрокаТаблицыБезСумм|ТоварБезСумм"); ОбластьДанных = Макет.ПолучитьОбласть("СтрокаТаблицыБезСумм|ДанныеБезСумм"); КонецЕсли; Сумма = 0; СуммаНДС = 0; НомерСтроки = 0; // Выводим строки таблицы Товары Пока ВыборкаПоТоварам.Следующий() Цикл НомерСтроки = НомерСтроки + 1; ОбластьНомера.Параметры.НомерСтроки = НомерСтроки; ТабличныйДокумент.Вывести(ОбластьНомера); Если ВыводитьКоды Тогда ОбластьКодов.Параметры.Артикул = ВыборкаПоТоварам[КолонкаКодов]; ТабличныйДокумент.Присоединить(ОбластьКодов); КонецЕсли; ОбластьТовар.Параметры.Заполнить(ВыборкаПоТоварам); ОбластьТовар.Параметры.Товар = ФормированиеПечатныхФорм.ПолучитьПредставлениеНоменклатурыДляПечати( ВыборкаПоТоварам.ТоварНаименованиеПолное, ВыборкаПоТоварам.Характеристика ) + ?(ВыборкаПоТоварам.ЭтоВозвратнаяТара, НСтр("ru=' (возвратная тара)'"), ""); ТабличныйДокумент.Присоединить(ОбластьТовар); ОбластьДанных.Параметры.Заполнить(ВыборкаПоТоварам); ТабличныйДокумент.Присоединить(ОбластьДанных); Если ДанныеПечати.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда Сумма = Сумма + ВыборкаПоТоварам.Сумма; СуммаНДС = СуммаНДС + ВыборкаПоТоварам.СуммаНДС; КонецЕсли; КонецЦикла; // Выводим подвал Если ДанныеПечати.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда ОбластьНомера = Макет.ПолучитьОбласть("ПодвалТаблицы|НомерСтроки"); ОбластьКодов = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаКодов"); ОбластьТовар = Макет.ПолучитьОбласть("ПодвалТаблицы|Товар"); ОбластьДанных = Макет.ПолучитьОбласть("ПодвалТаблицы|Данные"); ТабличныйДокумент.Вывести(ОбластьНомера); Если ВыводитьКоды Тогда ТабличныйДокумент.Присоединить(ОбластьКодов); КонецЕсли; ТабличныйДокумент.Присоединить(ОбластьТовар); ОбластьДанных.Параметры.Всего = ФормированиеПечатныхФорм.ФорматСумм(Сумма); ТабличныйДокумент.Присоединить(ОбластьДанных); КонецЕсли; // Выводим ИтогоНДС Если ДанныеПечати.УчитыватьНДС И ДанныеПечати.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда ОбластьНомера = Макет.ПолучитьОбласть("ПодвалТаблицыНДС|НомерСтроки"); ОбластьКодов = Макет.ПолучитьОбласть("ПодвалТаблицыНДС|КолонкаКодов"); ОбластьТовар = Макет.ПолучитьОбласть("ПодвалТаблицыНДС|Товар"); ОбластьДанных = Макет.ПолучитьОбласть("ПодвалТаблицыНДС|Данные"); ТабличныйДокумент.Вывести(ОбластьНомера); Если ВыводитьКоды Тогда ТабличныйДокумент.Присоединить(ОбластьКодов); КонецЕсли; ТабличныйДокумент.Присоединить(ОбластьТовар); ОбластьДанных.Параметры.НДС = ?(ДанныеПечати.ЦенаВключаетНДС, НСтр("ru='В том числе НДС:'"), НСтр("ru='Сумма НДС:'")); ОбластьДанных.Параметры.ВсегоНДС = ФормированиеПечатныхФорм.ФорматСумм(СуммаНДС); ТабличныйДокумент.Присоединить(ОбластьДанных); КонецЕсли; Если ДанныеПечати.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда // Выводим Сумму прописью ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью"); СуммаКПрописи = Сумма + ?(ДанныеПечати.ЦенаВключаетНДС, 0, СуммаНДС); ИтоговаяСтрока = НСтр("ru='Всего наименований %КоличествоНаименований%, на сумму %СуммаДокумента% '"); ИтоговаяСтрока = СтрЗаменить(ИтоговаяСтрока, "%КоличествоНаименований%", ВыборкаПоТоварам.Количество()); ИтоговаяСтрока = СтрЗаменить(ИтоговаяСтрока, "%СуммаДокумента%", ФормированиеПечатныхФорм.ФорматСумм(СуммаКПрописи, ДанныеПечати.Валюта)); ОбластьМакета.Параметры.ИтоговаяСтрока = ИтоговаяСтрока; ОбластьМакета.Параметры.СуммаПрописью = РаботаСКурсамиВалют.СформироватьСуммуПрописью(СуммаКПрописи, ДанныеПечати.Валюта); ТабличныйДокумент.Вывести(ОбластьМакета); Иначе ОбластьМакета = Макет.ПолучитьОбласть("ПодвалТаблицыБезСумм"); ИтоговаяСтрока = НСтр("ru='Всего наименований %КоличествоНаименований%'"); ИтоговаяСтрока = СтрЗаменить(ИтоговаяСтрока, "%КоличествоНаименований%", ВыборкаПоТоварам.Количество()); ОбластьМакета.Параметры.ИтоговаяСтрока = ИтоговаяСтрока; ТабличныйДокумент.Вывести(ОбластьМакета); КонецЕсли; // Выводим подписи ОбластьМакета = Макет.ПолучитьОбласть("Подписи"); Если ЗначениеЗаполнено(ДанныеПечати.ПолучениеПроизвел) Тогда ОбластьМакета.Параметры.ПолучениеПроизвел = ФизическиеЛица.ФамилияИнициалыФизЛица(ДанныеПечати.ПолучениеПроизвел); КонецЕсли; ТабличныйДокумент.Вывести(ОбластьМакета); УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеПечати.Ссылка); КонецЦикла; ТабличныйДокумент.АвтоМасштаб = Истина; Если ПривилегированныйРежим() Тогда УстановитьПривилегированныйРежим(Ложь); КонецЕсли; Возврат ТабличныйДокумент; КонецФункции |
|||
1
Maxus43
26.03.13
✎
16:30
|
ОбластьМакета.Параметры.Склад = ДанныеПечати.Склад;
вот строчка, берётся из шапки, смотри почему там пусто |
|||
2
amadeus2010
26.03.13
✎
16:41
|
ау есть кто-нибудь?
////////////////////////////////////// ОбластьМакета = Макет.ПолучитьОбласть("Склад"); ПредставлениеСклада = ФормированиеПечатныхФорм; ОбластьМакета.Параметры.ПредставлениеСклада = ПредставлениеСклада; ОбластьМакета.Параметры.Склад = ДанныеПечати.Склад; ТабличныйДокумент.Вывести(ОбластьМакета); ///////////////////////////////////////////////////////// в этой части вывода макета не выходит ссылка на склад, можно ли заменить на ///////////////////////////////////////////// ПредставлениеСклада = ОбъектыПечати.Склад; /////////////////////////////// |
|||
3
amadeus2010
26.03.13
✎
16:56
|
заменил проблемную часть на
///////////////////////////////////// ОбластьМакета = Макет.ПолучитьОбласть("Склад"); ОбластьМакета.Параметры.ПредставлениеСклада = ДанныеПечати.Склад; ОбластьМакета.Параметры.Склад = ДанныеПечати.Склад; ТабличныйДокумент.Вывести(ОбластьМакета); ////////////////////////////////////////////////////////// и отобразился склад-наименование |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |