Имя: Пароль:
 
1C
 
1c печатная форма
0 KukenKvaken
 
18.09.18
14:12
Добрый день.
имею такую задачу доработать печатную форму.
вроде все сделал правильно но получается такая фигня.
скрины:
1) что получилось
[url=http://ipic.su/img/img7/fs/Bezymyannyj.1537267829.jpg][img]http://ipic.su/img/img7/tn/Bezymyannyj.1537267829.jpg[/img][/url]
2) скрин макета печатной формы
[url=http://ipic.su/img/img7/fs/2.1537267921.jpg][img]http://ipic.su/img/img7/tn/2.1537267921.jpg[/img][/url]

код:

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

                    Если Турист.НомерСтроки = Объект.Туристы.Количество() Тогда
                        ОблСтрока.Параметры.Сумма = Окр(Объект.СуммаДокумента - СуммаИтого, 2);
                        СуммаИтого = СуммаИтого + Окр(Объект.СуммаДокумента - СуммаИтого, 2);
                    Иначе
                        ОблСтрока.Параметры.Сумма = Окр(Турист.Сумма - Турист.Сумма * Объект.ПроцентСкидки / 100, 2);
                        СуммаИтого = СуммаИтого + Окр(Турист.Сумма - Турист.Сумма * Объект.ПроцентСкидки / 100, 2);
                    КонецЕсли;
                Иначе     
                КонецЕсли;
            Иначе  
                Если Объект.УказыватьСтоимостьЗаЧеловека Тогда
                    СуммаИтого = СуммаИтого + Турист.Сумма;
                Иначе
                    ОблСтрока.Параметры.Сумма = 0;
                       СуммаИтого = Объект.СуммаДокумента;    
                КонецЕсли;
            КонецЕсли;
            
            ТабДокумент.Вывести(ОблСтрока);
            
        КонецЦикла;
        
        // sh+
        ОблИтого.Параметры.СуммаИтого = Объект.СуммаДокумента;
        // sh+
        
        // sh-
        // ОблИтого.Параметры.СуммаИтого  = СуммаИтого;
        // sh-
        ТабДокумент.Вывести(ОблИтого);
        
        Если Объект.Услуги.Количество() <> 0 Тогда
            
            Взрослый = Объект.СтатусыТуристов.Найти(Справочники.ТА_СтатусТуриста.Взрослый, "СтатусТуриста");
            КолВзрослых = 0;
            Если Взрослый <> Неопределено Тогда
                КолВзрослых = Взрослый.Количество;
            КонецЕсли;
            КолДетей = Объект.СтатусыТуристов.Итог("Количество") - КолВзрослых;
            
            ШапкаУслуг.Параметры.Услуги = ?(Объект.ВыбратьПакетныйТур, "Дополнительные услуги", "В т.ч. услуги");
            ТабДокумент.Вывести(ШапкаУслуг);
            Для каждого Услуга Из Объект.Услуги Цикл
                Если Услуга.Услуга = Справочники.ТА_ДополнительныеУслуги.СтоимостьТура Тогда
                    Продолжить;
                КонецЕсли;
                СтрокаУслуг.Параметры.Заполнить(Услуга);
                ТабДокумент.Вывести(СтрокаУслуг);
            КонецЦикла;
            Если Объект.ВыбратьПакетныйТур Тогда
                СтрокаИтогоУслуг.Параметры.СуммаИтогоДляВзрослых = Объект.Услуги.Итог("СуммаДляВзрослого");
                СтрокаИтогоУслуг.Параметры.СуммаИтогоДляДетей = Объект.Услуги.Итог("СуммаДляРебенка");
            КонецЕсли;
            ТабДокумент.Вывести(СтрокаИтогоУслуг);
        КонецЕсли;
        
        ОблПодвал.Параметры.СуммаПрописью = "Итого " + УправлениеНебольшойФирмойСервер.СформироватьСуммуПрописью(Объект.СуммаДокумента, Объект.ВалютаДокумента) + ?(Объект.ВыбратьПакетныйТур И Объект.Услуги.Количество() <> 0, ", в т.ч. услуги на сумму " + УправлениеНебольшойФирмойСервер.СформироватьСуммуПрописью(Объект.СуммаУслуг, Объект.ВалютаДокумента), "");
        ОблПодвал.Параметры.Комментарий = Объект.Комментарий;
        ОблПодвал.Параметры.Менеджер    = Объект.Ответственный;
        ОблПодвал.Параметры.Контрагент  = Объект.Контрагент;
        
        ТабДокумент.Вывести(ОблПодвал);
        ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();

//        
        ОблПодвал.Параметры.Заполнить(Объект);
        ОблПодвал.Параметры.Валюта = Объект.ВалютаДокумента;
        СведенияОбОрганизации    = УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(Объект.Организация, Объект.Дата);
        
        ФактическийАдрес = УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(СведенияОбОрганизации, "ФактическийАдрес");
        Город = "г.";
        Для ИндК = 1 По 2 Цикл
            ФактическийАдрес = Прав(ФактическийАдрес, СтрДлина(ФактическийАдрес)-Найти(ФактическийАдрес, ","));
        КонецЦикла;

//        
//        
        ОблПодвал.Параметры.ДатаВыезда = Формат(Объект.ДатаВыезда, "ДЛФ=D") ;
        ОблПодвал.Параметры.ДатаВозврата = Формат(Объект.ДатаВозврата, "ДЛФ=D");
//        
        ОблПодвал.Параметры.КПеречислению = Объект.СуммаТуроператору;
        ОблПодвал.Параметры.Комиссия = (Объект.СуммаДокумента - Объект.СуммаТуроператору);

//        
//
        ТабДокумент.Вывести(ОблПодвал);
        ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        
        УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, Объект.Ссылка);
//
        
    КонецЦикла;
    
    ТабДокумент.АвтоМасштаб = Истина;
    
    Возврат ТабДокумент;
    

КонецФункции // ПечатнаяФорма()
1 KukenKvaken
 
18.09.18
14:14
новая ссылка на макет
http://ipic.su/7yBmwB.jpg
новая ссылка на результат
http://ipic.su/7yBmz2.jpg
2 ПегийЛунь
 
18.09.18
14:26
Так вот же....
ОблПодвал.Параметры.Контрагент  = Объект.Контрагент;
        
ТабДокумент.Вывести(ОблПодвал);
        ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();

и потом еще раз

ОблПодвал.Параметры.Комиссия = (Объект.СуммаДокумента - Объект.СуммаТуроператору);

//        

//
        ТабДокумент.Вывести(ОблПодвал);
        ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
3 KukenKvaken
 
18.09.18
14:30
(2) Спасибо.
а слона то я и не заметил..
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан