Имя: Пароль:
1C
1С v8
Редактирование макета печатной формы
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
заменил проблемную часть на
/////////////////////////////////////
ОбластьМакета                                   = Макет.ПолучитьОбласть("Склад");
       ОбластьМакета.Параметры.ПредставлениеСклада     = ДанныеПечати.Склад;
       ОбластьМакета.Параметры.Склад                   = ДанныеПечати.Склад;
       ТабличныйДокумент.Вывести(ОбластьМакета);
//////////////////////////////////////////////////////////
и отобразился склад-наименование