![]() |
![]() |
![]() |
|
Распечатать 2 макета в одной печатной форме. | ☑ | ||
---|---|---|---|---|
0
Iskatel
11.05.16
✎
08:43
|
Здравствуйте! Необходимо создать внешнюю печатную форму , которая должна распечатывать сразу СчетФактуру и 2 Акта выполненных работ. Созданы два макета. Какое условие нужно создать чтобы распечаталось эти три документа сразу.
Если Документ.Дата<Дата(2015,07,13) Тогда Макет = ПолучитьМакет("Акт"); Иначе Макет = ПолучитьМакет("Акт13072015"); КонецЕсли; Это условие печатает только 1 акт. |
|||
1
Iskatel
11.05.16
✎
08:45
|
Куда нужно вставить еще макет счет фактуры?
|
|||
2
Serg_1960
11.05.16
✎
09:00
|
Наводящий вопрос: макет ты получаешь в "Макет", а куда его выводишь? :)
|
|||
3
Iskatel
11.05.16
✎
09:05
|
// Задать параметры макета.
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_АКТ_СДАЧИ_ПРИЕМКИ"; ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет; ТабДокумент.ИмяПринтера = ПринтерПоУмолчанию(); ТабДокумент.АвтоМасштаб = Истина; Если НЕ Документ.ВидРеализации = Справочники.ВидыРеализации.НайтиПоКоду(28) Тогда Если Документ.Дата<Дата(2015,07,13) Тогда Макет = ПолучитьМакет("Акт"); Иначе Макет = ПолучитьМакет("Акт13072015"); КонецЕсли; Иначе Макет = ПолучитьМакет("АктЛицензирование"); КонецЕсли; Корректировка = ДОкумент.ПризнакКорректировки; Аренда = ?(Документ.ВидРеализации = Справочники.ВидыРеализации.НайтиПоКоду(5),Истина,Ложь); Если Корректировка Тогда кСумма = Документ.Суммы[0].КорректируемыйДокумент.СуммаДокумента; кСуммаНДС = Документ.Суммы[0].КорректируемыйДокумент.СуммаНДС; кДата = Документ.Суммы[0].КорректируемыйДокумент.Дата; кНомер = Документ.Суммы[0].КорректируемыйДокумент.Номер; КонецЕсли; ЗапросСтрок = Новый Запрос; ЗапросСтрок.УстановитьПараметр("ТекущийДокумент", Документ.Ссылка); ЗапросСтрок.Текст = "ВЫБРАТЬ | РеализацияТоваровИУслугСуммы.Ссылка, | РеализацияТоваровИУслугСуммы.Номенклатура КАК Номенклатура, | РеализацияТоваровИУслугСуммы.Номенклатура.ЕдиницаИзмерения КАК ЕдИзм, | РеализацияТоваровИУслугСуммы.Количество КАК Количество, | РеализацияТоваровИУслугСуммы.Цена, | РеализацияТоваровИУслугСуммы.СуммаНДС КАК СуммаНДС, | РеализацияТоваровИУслугСуммы.Сумма КАК Сумма, | РеализацияТоваровИУслугСуммы.Сумма - РеализацияТоваровИУслугСуммы.СуммаНДС КАК СуммаБезНДС |ИЗ | Документ.РеализацияМатериальныхАктивов.Суммы КАК РеализацияТоваровИУслугСуммы |ГДЕ | РеализацияТоваровИУслугСуммы.Ссылка = &ТекущийДокумент //| И (НЕ РеализацияТоваровИУслугСуммы.Номенклатура = &НоменклатураШапкаДляАкта) |ИТОГИ | СУММА(Количество), | СУММА(СуммаНДС), | СУММА(Сумма), | СУММА(СуммаБезНДС) |ПО | ОБЩИЕ"; ДанныеСтрок = ЗапросСтрок.Выполнить().Выбрать(); Если НЕ ДанныеСтрок.Следующий() Тогда Сообщить("Нет данных для печати."); // Есть данные для печати. Иначе Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущийДокумент", Документ.Ссылка); Запрос.Текст = " |ВЫБРАТЬ | РеализацияТоваровИУслуг.Дата КАК ДатаДок, | РеализацияТоваровИУслуг.Контрагент.Ссылка КАК КонтрагентСсылка, | РеализацияТоваровИУслуг.Контрагент.ПолноеНаименование КАК Контрагент, | РеализацияТоваровИУслуг.Договор.Договор КАК Договор, | РеализацияТоваровИУслуг.Контрагент.ОсновнойАдрес КАК КонтрагентАдрес, | РеализацияТоваровИУслуг.Контрагент.ОсновнойАдрес.Индекс КАК КонтрагентИндекс, | РеализацияТоваровИУслуг.ПрефиксНомера КАК ПрефиксДок, | РеализацияТоваровИУслуг.ПостфиксНомера КАК ПостфиксДок, | РеализацияТоваровИУслуг.Номер КАК НомерДок, | КомментарииОбъектов.Комментарий КАК Комментарий |ИЗ | Документ.РеализацияМатериальныхАктивов КАК РеализацияТоваровИУслуг | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КомментарииОбъектов КАК КомментарииОбъектов | ПО РеализацияТоваровИУслуг.Ссылка = КомментарииОбъектов.Объект |ГДЕ | РеализацияТоваровИУслуг.Ссылка = &ТекущийДокумент"; Данные = Запрос.Выполнить().Выбрать(); Данные.Следующий(); // Вывести шапку. ОбластьМакета = Макет.ПолучитьОбласть("Шапка"); ОбластьМакета.Параметры.НомерДок = Данные.НомерДок; ОбластьМакета.Параметры.ДатаДок = Данные.ДатаДок; //получать наименование от даты (мой кусочек кода) НашаОрганизация = Справочники.Контрагенты.НашаОрганизация; ДатаАктуальности = Дата(2015,07,08); ЗапросНаименование = Новый Запрос; ЗапросНаименование.Текст = "ВЫБРАТЬ | ПараметрыКонтрагента.Значение КАК ПолноеНаименование |ИЗ | РегистрСведений.ПараметрыКонтрагента КАК ПараметрыКонтрагента |ГДЕ | ПараметрыКонтрагента.Идентификатор = ""ПолноеНаименование"" | И ПараметрыКонтрагента.Период = &ДатаАктуальности | И ПараметрыКонтрагента.Контрагент = &Контрагент"; ЗапросНаименование.УстановитьПараметр("Контрагент",НашаОрганизация); Если Документ.Дата>=ДатаАктуальности Тогда ЗапросНаименование.УстановитьПараметр("ДатаАктуальности",ДатаАктуальности); Иначе ЗапросНаименование.УстановитьПараметр("ДатаАктуальности",Дата(2011,01,01)); КонецЕсли; ВыборкаНаименование = ЗапросНаименование.Выполнить().Выбрать(); Если ВыборкаНаименование.Следующий() Тогда ОбластьМакета.Параметры.ПредставлениеОрганизации = ВыборкаНаименование.ПолноеНаименование; КонецЕсли; // Конец (мой кусочек кода) //ОбластьМакета.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФорм.ПолноеНаименование(НашаОрганизация); Если НашаОрганизация.ОсновнойАдрес = "" Тогда ОбластьМакета.Параметры.НашАдрес = ""; Иначе ОбластьМакета.Параметры.НашАдрес = "" + НашаОрганизация.ОсновнойАдрес.Индекс + " " + НашаОрганизация.ОсновнойАдрес; КонецЕсли; // Определить контрагента. ОтборПолноеНаименование = Новый Структура; ОтборПолноеНаименование.Вставить("Контрагент", Данные.КонтрагентСсылка); ОтборПолноеНаименование.Вставить("Идентификатор", "ПолноеНаименование"); Попытка тз = РегистрыСведений.ПараметрыКонтрагента.СрезПоследних(Данные.ДатаДок,ОтборПолноеНаименование); ОбластьМакета.Параметры.Контрагент = тз[0].Значение; //ОбластьМакета.Параметры.Контрагент = Данные.Контрагент; Исключение Сообщить("Не заполнено полное наименование контаргента!", СтатусСообщения.Важное); КонецПопытки; Если Данные.КонтрагентАдрес = NULL Тогда ОбластьМакета.Параметры.АдресКонтрагента = ""; Иначе ОбластьМакета.Параметры.АдресКонтрагента = "" + Данные.КонтрагентИндекс + " " + Данные.КонтрагентАдрес; КонецЕсли; ОбластьМакета.Параметры.НомерДоговора = Данные.Договор; ТабДокумент.Вывести(ОбластьМакета); // Вывести заголовок. ОбластьЗаголовка = Макет.ПолучитьОбласть("Заголовок"); ТабДокумент.Вывести(ОбластьЗаголовка); // Вывести строки. ОбластьМакета = Макет.ПолучитьОбласть("Строка"); ИтогКоличество = ДанныеСтрок.Количество; ИтогБезНДС = ДанныеСтрок.СуммаБезНДС; ИтогНДС = ДанныеСтрок.СуммаНДС; ИтогСумма = ДанныеСтрок.Сумма; // Определить переменные для использования в ШАБЛОНЕ элемента справочника "Номенклатура". НомерДокумента = СокрЛП(Строка(Данные.НомерДок)); ДатаДокумента = Данные.ДатаДок; Комментарий = СокрЛП(Данные.Комментарий); ВидДокумента = "РеализацияТоваровИУслуг"; ДоговорДокумента = Данные.Договор; Ном = 1; Пока ДанныеСтрок.Следующий() Цикл Если глПустоеЗначение(ДанныеСтрок.Номенклатура) Тогда Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное); Продолжить; КонецЕсли; Если Ном = 1 и ДанныеСтрок.Сумма = 0 Тогда //информационная строка ОбластьМакета.Параметры.Заполнить(ДанныеСтрок); Если НЕ глПустоеЗначение(ДанныеСтрок.Номенклатура.Шаблон) Тогда Попытка ОбластьМакета.Параметры.Номенклатура = Вычислить(ДанныеСтрок.Номенклатура.Шаблон); Исключение Сообщить("Ошибка вычисления шаблона '" + ДанныеСтрок.Номенклатура.Шаблон + "' " + ОписаниеОшибки()); КонецПопытки; КонецЕсли; ТабДокумент.Вывести(ОбластьМакета); Продолжить; КонецЕсли; ОбластьМакета.Параметры.Ном = Ном; ОбластьМакета.Параметры.Заполнить(ДанныеСтрок); Если НЕ глПустоеЗначение(ДанныеСтрок.Номенклатура.Шаблон) Тогда Попытка ОбластьМакета.Параметры.Номенклатура = Вычислить(ДанныеСтрок.Номенклатура.Шаблон); Исключение Сообщить("Ошибка вычисления шаблона '" + ДанныеСтрок.Номенклатура.Шаблон + "' " + ОписаниеОшибки()); КонецПопытки; КонецЕсли; Если Корректировка И Аренда И ном = 1 Тогда ОбластьМакета.Параметры.Номенклатура = "Аренда газопроводов за "+Формат(кДата, "ДФ = ММММ")+" "+Формат(кДата, "ДФ = гггг")+ "г. по договору №"+СокрЛП(Документ.Договор.Наименование)+" от "+Формат(ДОкумент.Договор.Договор.ДатаДоговора,"ДФ=dd.MM.yyyy")+"г."; ОбластьМакета.Параметры.Сумма = ДанныеСтрок.Сумма+кСумма; ОбластьМакета.Параметры.СуммаНДС = ДанныеСтрок.СуммаНДС+кСуммаНДС; ОбластьМакета.Параметры.СуммаБезНДС = (ДанныеСтрок.Сумма+кСумма)- (ДанныеСтрок.СуммаНДС+кСуммаНДС); ОбластьМакета.Параметры.Цена = (ДанныеСтрок.Сумма+кСумма)- (ДанныеСтрок.СуммаНДС+кСуммаНДС); ИтогНДС = ДанныеСтрок.СуммаНДС+кСуммаНДС; ИтогБезНДС = (ДанныеСтрок.Сумма+кСумма)- (ДанныеСтрок.СуммаНДС+кСуммаНДС); ИтогСумма = ДанныеСтрок.Сумма+кСумма; КонецЕсли; Если Число(ОбластьМакета.Параметры.СуммаНДС) = 0 Тогда ОбластьМакета.Параметры.СуммаНДС = "Без НДС"; КонецЕсли; ТабДокумент.Вывести(ОбластьМакета); Ном = Ном+1; КонецЦикла; // Вывести подвал. ОбластьМакета = Макет.ПолучитьОбласть("Подвал"); ОбластьМакета.Параметры.ИтогКоличество = ИтогКоличество; ОбластьМакета.Параметры.ИтогБезНДС = ИтогБезНДС; ОбластьМакета.Параметры.ИтогНДС = ИтогНДС; ОбластьМакета.Параметры.ИтогСумма = ИтогСумма; ОбластьМакета.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФорм.ПолноеНаименование(НашаОрганизация); ОбластьМакета.Параметры.Контрагент = Данные.Контрагент; ОбластьМакета.Параметры.ИтогСуммаПрописью = ФормированиеПечатныхФорм.СуммаПрописью(ИтогСумма); ОбластьМакета.Параметры.ИтогСуммаНДС = "" + Цел(ИтогНДС) + " руб. " + ((ИтогНДС- Цел(ИтогНДС))*100) + " коп."; Если Число(ОбластьМакета.Параметры.ИтогНДС) = 0 Тогда ОбластьМакета.Параметры.ИтогСуммаНДС = " НДС не облагается на основании пп.26 п.2 ст.149 НК РФ"; КонецЕсли; ОбластьМакета.Параметры.Комментарий = ОбщиеПроцедуры.ПолучитьКомментарийОбъекта(Документ.Ссылка); ОбластьМакета.Параметры.НомерДоговора = Данные.Договор; Руководитель = ФормированиеПечатныхФорм.ОтветственныеЛица(КонецДня(Документ.Дата)); ФормированиеПечатныхФорм.УстановитьЗначениеПараметраОбластиМакета(ОбластьМакета,"ФИОРуководителя",КадровыйУчет.ФамилияИнициалыФизЛица(Руководитель.Руководитель, "Фамилия ИО" , Документ.Дата)); ФормированиеПечатныхФорм.УстановитьЗначениеПараметраОбластиМакета(ОбластьМакета,"ДолжностьРуководителя", СокрЛП(Руководитель.РуководительДолжность)); Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ ПЕРВЫЕ 1 | КонтактныеЛица.Должность.Представление КАК Должность, | КонтактныеЛица.ОснованиеДеятельности КАК Документ, | КонтактныеЛица.ФИО КАК ФИО, | КонтактныеЛица.Владелец КАК Владелец |ИЗ | Справочник.КонтактныеЛица КАК КонтактныеЛица |ГДЕ | КонтактныеЛица.РолиКонтактногоЛица.Роль.Ссылка = &ПредопределенныйРуководитель | И КонтактныеЛица.ПометкаУдаления = ЛОЖЬ | И &Контрагент = КонтактныеЛица.Владелец"; Запрос.УстановитьПараметр("ПредопределенныйРуководитель", Справочники.РолиКонтактногоЛица.Руководитель); Запрос.УстановитьПараметр("Контрагент",Данные.КонтрагентСсылка); ВыборкаЗапроса = Запрос.Выполнить().Выгрузить(); Если ВыборкаЗапроса.Количество()<>0 Тогда ФормированиеПечатныхФорм.УстановитьЗначениеПараметраОбластиМакета(ОбластьМакета,"ФИОКонтрагента",ОбщиеПроцедуры.ПолучитьФамилиюИО(ВыборкаЗапроса[0].ФИО)); ФормированиеПечатныхФорм.УстановитьЗначениеПараметраОбластиМакета(ОбластьМакета,"ДолжностьКонтрагента",ВыборкаЗапроса[0].Должность); ФормированиеПечатныхФорм.УстановитьЗначениеПараметраОбластиМакета(ОбластьМакета,"ОснованиеКонтрагента",ВыборкаЗапроса[0].Документ); КонецЕсли; Если глПустоеЗначение(Документ.Руководитель) тогда ОбластьМакета.Параметры.Подпись_ФИОРуководителя = ""; Иначе ОбластьМакета.Параметры.Подпись_ФИОРуководителя = "/"+КадровыйУчет.ФамилияИнициалыФизЛица(Документ.Руководитель, "Фамилия ИО" , Документ.Дата)+"/"; ОбластьМакета.Параметры.Подпись_ДолжностьРуководителя = РегистрыСведений.ОсновныеКадровыеДанные.ПолучитьПоследнее(Документ.Дата, Новый Структура("ФизЛицо",Документ.ИсполнительныйДиректор)).Должность; КонецЕсли; Если Корректировка И Аренда Тогда ОбластьМакета.Параметры.Комментарий = "Данный акт составлен в соответсвии с Доп.соглашением № 1 от 25.11.2008г. к договору №"+СокрЛП(Документ.Договор.Наименование)+" от "+Формат(ДОкумент.Договор.Договор)+"г. и принимается сторонами во изменение Акта №"+кНомер; КонецЕсли; //* вывод подписей в макет Подписи.Свойство("РуководительКонтрагента", ОбластьМакета.Параметры.Подпись_ФИОРуководителяКонтрагента); Подписи.Свойство("ДолжностьРуководителяКонтрагента", ОбластьМакета.Параметры.Подпись_ДолжностьРуководителяКонтрагента); //* конец вывода подписей в макет ТабДокумент.Вывести(ОбластьМакета); Возврат ТабДокумент; КонецЕсли; КонецФункции // ПечатьТребованииНакладной() Это уже часть рабочей формы, которая печатает только акт. Создан макет счет фактуры. как его засунуть сюда |
|||
4
Serg_1960
11.05.16
✎
09:18
|
Типа, как-то так:
ОбщаяФормаНаПечать = Новый ТабличныйДокумент(); ОбщаяФормаНаПечать.Вывести(ТвойДокумент.Печать("Акт")); ОбщаяФормаНаПечать.Вывести(ТвойДокумент.Печать("СчетФактура")); |
|||
5
FIXXXL
11.05.16
✎
09:25
|
(3) да точно так же
перед Возврат ТабДокумент; получаешь макет сч/ф, данные для вывода и продолжаешь лепить области из нового макета |
|||
6
FIXXXL
11.05.16
✎
09:26
|
(5) + не забудь про разделитель страниц
а будет на одном листе Акт и шапка сч/ф |
|||
7
FIXXXL
11.05.16
✎
09:41
|
ну или совсем простой вариант:
формируй два отдельных табДока и два раза вызвай процедуру вывода ТабДока на печать |
|||
8
Iskatel
11.05.16
✎
10:10
|
Спасибо! думаю что получится)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |