Внешняя обработка реализация товаров и услуг

Новая тема
"Помогите разобраться, хочу добавить в печатной форме акта реализации товаров и услуг полные наименования представителей

модуль:
Перем мВалютаРегламентированногоУчета Экспорт;

Перем ТаблицаВзаиморасчетов;

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

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

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

   Макет = ПолучитьМакет("Накладная");

   // Выводим шапку накладной

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

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

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

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

   ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
   Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
       ВыводитьКоды = Истина;
       Колонка = "Артикул";
   ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
       ВыводитьКоды = Истина;
       Колонка = "Код";
   Иначе
       ВыводитьКоды = Ложь;
   КонецЕсли;

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

   ТабДокумент.Вывести(ОбластьНомера);
   Если ВыводитьКоды Тогда
       ОбластьКодов.Параметры.ИмяКолонкиКодов = Колонка;
       ТабДокумент.Присоединить(ОбластьКодов);
   КонецЕсли;
   ТабДокумент.Присоединить(ОбластьДанных);
   ТабДокумент.Присоединить(ОбластьСуммы);

   ОбластьКолонкаТовар = Макет.Область("Товар");
   Если Не ВыводитьКоды Тогда
       ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки +
                                           Макет.Область("КолонкаКодов").ШиринаКолонки;
   КонецЕсли;
   Если НЕ ЕстьСкидки Тогда
       ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки +
                                           Макет.Область("СуммаБезСкидки").ШиринаКолонки +
                                           Макет.Область("СуммаСкидки").ШиринаКолонки;
   КонецЕсли;

   ОбластьНомера = Макет.ПолучитьОбласть("Строка|НомерСтроки");
   ОбластьКодов  = Макет.ПолучитьОбласть("Строка|КолонкаКодов");
   ОбластьДанных = Макет.ПолучитьОбласть("Строка|Данные");
   ОбластьСуммы  = Макет.ПолучитьОбласть("Строка|Сумма");

   Сумма    = 0;
   СуммаНДС = 0;
   ВсегоСкидок    = 0;
   ВсегоБезСкидок = 0;

   Для каждого ВыборкаСтрокТовары из ЗапросТовары Цикл

       ОбластьНомера.Параметры.НомерСтроки = ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1;
       ТабДокумент.Вывести(ОбластьНомера);
       
       Если ВыводитьКоды Тогда
           Если Колонка = "Артикул" Тогда
               ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Артикул;
           Иначе
               ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Код;
           КонецЕсли;
           ТабДокумент.Присоединить(ОбластьКодов);
       КонецЕсли;

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

       Скидка = 0;
       
       ОбластьСуммы.Параметры.Заполнить(ВыборкаСтрокТовары);
       ТабДокумент.Присоединить(ОбластьСуммы);
       Сумма          = Сумма       + ВыборкаСтрокТовары.Сумма;
       СуммаНДС       = СуммаНДС    + ВыборкаСтрокТовары.СуммаНДС;
       ВсегоСкидок    = ВсегоСкидок + Скидка;
       ВсегоБезСкидок = Сумма       + ВсегоСкидок;

   КонецЦикла;

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

   ТабДокумент.Вывести(ОбластьНомера);
   Если ВыводитьКоды Тогда
       ТабДокумент.Присоединить(ОбластьКодов);
   КонецЕсли;
   ТабДокумент.Присоединить(ОбластьДанных);
   ОбластьСуммы.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма);
   ТабДокумент.Присоединить(ОбластьСуммы);

   // Вывести ИтогоНДС
   Если Шапка.УчитыватьНДС Тогда
       ОбластьНомера = Макет.ПолучитьОбласть("ИтогоНДС|НомерСтроки");
       ОбластьКодов  = Макет.ПолучитьОбласть("ИтогоНДС|КолонкаКодов");
       ОбластьДанных = Макет.ПолучитьОбласть("ИтогоНДС|Данные");
       ОбластьСуммы  = Макет.ПолучитьОбласть("ИтогоНДС|Сумма");

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

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

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

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

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

КонецФункции // ПечатьДокумента()

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

Функция Печать() Экспорт
Возврат ПечатьАктаОбОказанииУслуг();
КонецФункции // Печать

мВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();


Выходит ошибка в бухгалтерии при вызове печати -  Не удалось сформировать внешнюю печатную форму!
Невозможно обработать параметр "ВалютаРегламентированногоУчета" для получения значения
Что не так?"
А зачем весь модуль сюда писать?
Определитесь, как называется реквизит Валюта у объекта, а то у вас 2 варианта встречаются:
СсылкаНаОбъект.мВалютаРегламентированногоУчета
СсылкаНаОбъект.ВалютаРегламентированногоУчета
вложенные запросы -- это лишнее
Это скорее в "Пожелания по форуму", сделать возможность писать "Скрытый текст"...
Читают тему
(гостей: 1)

Быстрый переход