8.х Как сделать два акта об оказании услуг на одной странице?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Виктоr, 29 окт 2008.

  1. TopicStarter Overlay
    Виктоr
    Offline

    Виктоr

    Регистрация:
    29 окт 2008
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Всем привет! :unsure:

    В целях экономии бумаги решил сделать два акта об оказании услуг на одной странице, но у меня никак не получается. Подскажите пожалуйста если кто делал, как это сделать!!!
    Я скопировал в макете акт чуть ниже предыдущего, изменились наименования областей макета, а что делать дальше никак не соображу. Перепробывал различные варианты, но текст во втором акте не печатается! :smile:

    Вот исходный текст акта:

    Функция Печать(Тип = "Акт об оказании услуг") Экспорт

    ЗапросШапка = Новый Запрос;
    ЗапросШапка.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
    ЗапросШапка.Текст =
    "ВЫБРАТЬ
    | Номер,
    | Дата,
    | ДоговорКонтрагента,
    | Контрагент КАК Получатель,
    | Организация КАК Поставщик,
    | Организация,
    | СуммаДокумента,
    | ВалютаДокумента,
    | УчитыватьНДС,
    | СуммаВключаетНДС
    |ИЗ
    | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |
    |ГДЕ
    | РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент";
    Шапка = ЗапросШапка.Выполнить().Выбрать();
    Шапка.Следующий();

    ЗапросУслуги = Новый Запрос;
    ЗапросУслуги.УстановитьПараметр("ТекущийДокумент",СсылкаНаОбъект);

    ЧастьЗапросаДляВыбораСодержанияУслуг = ФормированиеПечатныхФорм.ПолучитьЧастьЗапросаДляВыбораСодержанияУслуг("РеализацияТоваровУслуг");

    ЗапросУслуги.Текст =
    "ВЫБРАТЬ
    | Номенклатура КАК Номенклатура,
    | ВЫРАЗИТЬ(Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК Товар,
    | Количество,
    | ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    | Цена,
    | Сумма,
    | СтавкаНДС,
    | СуммаНДС
    |ИЗ
    | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
    |
    |ГДЕ
    | РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
    | И
    | РеализацияТоваровУслуг.Номенклатура.Услуга = Истина
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    | " + ЧастьЗапросаДляВыбораСодержанияУслуг + ",
    | " + ЧастьЗапросаДляВыбораСодержанияУслуг + ",
    | Количество,
    | Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмерения,
    | Цена,
    | Сумма,
    | СтавкаНДС,
    | СуммаНДС
    |ИЗ
    | Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслуг
    |
    |ГДЕ
    | РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент";
    ТаблицаУслуги = ЗапросУслуги.Выполнить().Выгрузить();

    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_Акт";
    Макет = ПолучитьМакет("Акт");

    ОбластьМакета = Макет.ПолучитьОбласть("Заголовок","Заголовок1");
    ОбластьМакета.Параметры.ТекстЗаголовка = РаботаСДиалогами.СформироватьЗаголовокДокумента(Шапка, "Акт об оказании услуг");
    ТабДокумент.Вывести(ОбластьМакета);

    ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
    ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата), "ИНН,КПП,ПолноеНаименование,ЮридическийАдрес,Телефоны,");
    ОбластьМакета.Параметры.ПредставлениеПоставщика = ПредставлениеПоставщика;
    ОбластьМакета.Параметры.Поставщик = Шапка.Поставщик;
    ТабДокумент.Вывести(ОбластьМакета);

    ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
    ПредставлениеПолучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата), "ИНН,КПП,ПолноеНаименование,ЮридическийАдрес,Телефоны,");
    ОбластьМакета.Параметры.ПредставлениеПолучателя = ПредставлениеПолучателя;
    ОбластьМакета.Параметры.Получатель = Шапка.Получатель;
    ТабДокумент.Вывести(ОбластьМакета);

    ЕстьСкидки = Ложь;

    // Вывести табличную часть
    ОбластьМакета = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьСтроки = Макет.ПолучитьОбласть("Строка");
    ТабДокумент.Вывести(ОбластьМакета);
    НомерСтроки = 0;

    Для Каждого СтрокаТабличнойЧасти Из ТаблицаУслуги Цикл

    НомерСтроки = НомерСтроки + 1;

    ОбластьСтроки.Параметры.Заполнить(СтрокаТабличнойЧасти);
    ОбластьСтроки.Параметры.НомерСтроки = НомерСтроки;
    ОбластьСтроки.Параметры.Товар = СокрЛП(СтрокаТабличнойЧасти.Товар);

    ТабДокумент.Вывести(ОбластьСтроки);

    КонецЦикла;

    Если ТаблицаУслуги <> Неопределено Тогда

    Сумма = ТаблицаУслуги.Итог("Сумма");
    СуммаНДС = ТаблицаУслуги.Итог("СуммаНДС");

    Иначе

    Сумма = 0;
    СуммаНДС = 0;

    КонецЕсли;

    ОбластьМакета = Макет.ПолучитьОбласть("Итого");
    ОбластьМакета.Параметры.Всего = ФормированиеПечатныхФорм.ФорматСумм(Сумма);
    ТабДокумент.Вывести(ОбластьМакета);

    Если Шапка.УчитыватьНДС Тогда

    ОбластьМакета = Макет.ПолучитьОбласть("ИтогоНДС");
    Если СуммаНДС <> 0 Тогда
    ОбластьМакета.Параметры.ВсегоНДС = ФормированиеПечатныхФорм.ФорматСумм(СуммаНДС);
    ОбластьМакета.Параметры.НДС = ?(Шапка.СуммаВключаетНДС, "В том числе НДС", " Сумма НДС");
    Иначе
    ОбластьМакета.Параметры.ВсегоНДС = "-";
    ОбластьМакета.Параметры.НДС = "Без налога (НДС)";
    КонецЕсли;

    ТабДокумент.Вывести(ОбластьМакета);

    КонецЕсли;

    СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
    ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
    ОбластьМакета.Параметры.ИтоговаяСтрока ="Всего оказано услуг " + НомерСтроки
    + ", на сумму " + ФормированиеПечатныхФорм.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);
    ОбластьМакета.Параметры.СуммаПрописью = РаботаСДиалогами.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);
    ТабДокумент.Вывести(ОбластьМакета);


    ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
    ОбластьМакета.Параметры.Заполнить(Шапка);
    ТабДокумент.Вывести(ОбластьМакета);


    Возврат ТабДокумент;

    КонецФункции // ПечатьАктаОбОказанииУслуг()
  2. LxS
    Offline

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    В целях экономии места на странице, можно было и не выкладывать весь код функции.

    А если по делу, не судьба было с макетом поработать? а в функции печати тупо задублировать строки определения параметров макета? Это как один из множества вариантов.
  3. tzk
    Offline

    tzk

    Регистрация:
    1 июл 2008
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    а разве это не в настройках принтера задается? вы че чуваки, все дублировать

Поделиться этой страницей