Имя: Пароль:
1C
1С v8
выводит на печать на каждую строку отдельный документ
0 mi4asib
 
26.06.12
11:02
ПечатьАктовОбОказанииУслуг

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

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

   Пока Выборка.Следующий() Цикл
       
       Макет = ПолучитьМакет("Акт");
       ОбластьМакета = Макет.ПолучитьОбласть("Акт");
       ОбластьМакета.Параметры.ТекстЗаголовка = "Акт № " + ОбщегоНазначения.ПолучитьНомерНаПечать(Выборка)+"/"+Выборка.НомерСтроки
                             + " от " + Формат(Выборка.Дата, "ДФ='дд ММММ гггг'")+ " г.";;

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

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

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

       ОбластьМакета.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма);

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

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

       КонецЕсли;

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

       ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
       ТабДокумент.Вывести(ОбластьМакета);
       
   КонецЦикла;

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


код функции ( документ "оказание услуг" 2.0 типовая )

не могу понять почему на каждую строку выводит отдельную печатную форму...

изменил до этого в документе "оказание услуг" поиск дублей ( т.к. нужно что бы печатались разные услуги ( до этого в типовой ругался на один договор в разных строках ) )

закоментил вот это :


       //// Проверим дубли строк
       //ТаблицаДляПроверки = Контрагенты.Выгрузить(, "Контрагент,ДоговорКонтрагента");
       //ТаблицаДляПроверки.Колонки.Добавить("КоличествоСтрок");
       //ТаблицаДляПроверки.ЗаполнитьЗначения(1, "КоличествоСтрок");
       //ТаблицаДляПроверки.Свернуть("Контрагент,ДоговорКонтрагента", "КоличествоСтрок");
       //Для Каждого СтрокаТаблицы Из ТаблицаДляПроверки Цикл
       //    Если СтрокаТаблицы.КоличествоСтрок>1 И ЗначениеЗаполнено(СтрокаТаблицы.Контрагент) И ЗначениеЗаполнено(СтрокаТаблицы.ДоговорКонтрагента) Тогда
       //        ТекстОшибки = "Строка с контрагентом "+СтрокаТаблицы.Контрагент+" и договором "+СтрокаТаблицы.ДоговорКонтрагента+" указана повторно (строки ";
       //        МассивСтрок = Контрагенты.НайтиСтроки(Новый Структура("Контрагент,ДоговорКонтрагента",
       //                        СтрокаТаблицы.Контрагент, СтрокаТаблицы.ДоговорКонтрагента));
       //        Для каждого Строка Из МассивСтрок Цикл
       //            ТекстОшибки = ТекстОшибки+Строка.НомерСтроки+",";
       //        КонецЦикла;
       //        ТекстОшибки = Лев(ТекстОшибки, СтрДлина(ТекстОшибки)-1);
       //        ТекстОшибки = ТекстОшибки + ")!";
       //        
       //        Сообщить(ТекстОшибки, СтатусСообщения.Важное);
       //        Отказ = Истина;
       //    КонецЕсли;
       //КонецЦикла;
1 mi4asib
 
26.06.12
11:03
документ "оказание услуг" 2.0 типовая, печать "акт об оказании услуг"
2 spu79
 
26.06.12
11:04
Пока Выборка.Следующий() Цикл
       
       Макет = ПолучитьМакет("Акт");
3 mi4asib
 
26.06.12
11:08
убрать цикл этот ?
4 Hande hoch
 
26.06.12
11:09
Макет = ПолучитьМакет("Акт");
Пока Выборка.Следующий() Цикл
5 spu79
 
26.06.12
11:10
КонецЦикла;

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

вот это правильно, но при такой конструкции в одном ТабДокумент, кол-во макетов = кол-во строк
6 mi4asib
 
26.06.12
11:13
спасибо, заработало как нужно ;)
7 spu79
 
26.06.12
11:15
епт, а куда ж оно на фиг денеться с подводной лодке, если правильно код писать))))
8 mi4asib
 
26.06.12
11:24
не, надо что бы в один макет печаталась вся табличная часть