Внешняя обработка реализация товаров и услуг
15.05.2013
15:38
#1
"Помогите разобраться, хочу добавить в печатной форме акта реализации товаров и услуг полные наименования представителей
модуль:
Перем мВалютаРегламентированногоУчета Экспорт;
Перем ТаблицаВзаиморасчетов;
// Функция формирует табличный документ с печатной формой акта об
// обказании услуг
//
// Возвращаемое значение:
// Табличный документ - печатная форма акта
//
Функция ПечатьДокумента()
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| Номер,
| Дата,
| ДоговорКонтрагента,
| Контрагент КАК Получатель,
| Организация,
| Организация КАК Поставщик,
| СуммаДокумента,
| ВалютаДокумента,
| УчитыватьНДС,
| СуммаВключаетНДС,
| ОтпускПроизвел
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|
|ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент";
Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
ЧастьЗапросаДляВыбораСодержанияУслуг = ФормированиеПечатныхФорм.ПолучитьЧастьЗапросаДляВыбораСодержанияУслуг("РеализацияТоваровУслуг");
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура,
| ВЫРАЗИТЬ(Номенклатура.НаименованиеПолное КАК Строка(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, СуммаНДС);
ВалютаДляПечати = ?(СсылкаНаОбъект.СуммыВРублях, СсылкаНаОбъект.мВалютаРегламентированногоУчета, Шапка.ВалютаДокумента);
ОбластьМакета.Параметры.ИтоговаяСтрока = "Всего оказано услуг " + НомерСтроки
+ ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, ВалютаДляПечати);
ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, ВалютаДляПечати);
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
ТабДокумент.Вывести(ОбластьМакета);
Возврат ТабДокумент;
КонецФункции // ПечатьАктаОбОказанииУслуг()
Функция Печать() Экспорт
Возврат ПечатьАктаОбОказанииУслуг();
КонецФункции // Печать
мВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();
Выходит ошибка в бухгалтерии при вызове печати - Не удалось сформировать внешнюю печатную форму!
Невозможно обработать параметр "ВалютаРегламентированногоУчета" для получения значения
Что не так?"
модуль:
Перем мВалютаРегламентированногоУчета Экспорт;
Перем ТаблицаВзаиморасчетов;
// Функция формирует табличный документ с печатной формой акта об
// обказании услуг
//
// Возвращаемое значение:
// Табличный документ - печатная форма акта
//
Функция ПечатьДокумента()
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| Номер,
| Дата,
| ДоговорКонтрагента,
| Контрагент КАК Получатель,
| Организация,
| Организация КАК Поставщик,
| СуммаДокумента,
| ВалютаДокумента,
| УчитыватьНДС,
| СуммаВключаетНДС,
| ОтпускПроизвел
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|
|ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент";
Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
ЧастьЗапросаДляВыбораСодержанияУслуг = ФормированиеПечатныхФорм.ПолучитьЧастьЗапросаДляВыбораСодержанияУслуг("РеализацияТоваровУслуг");
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура,
| ВЫРАЗИТЬ(Номенклатура.НаименованиеПолное КАК Строка(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, СуммаНДС);
ВалютаДляПечати = ?(СсылкаНаОбъект.СуммыВРублях, СсылкаНаОбъект.мВалютаРегламентированногоУчета, Шапка.ВалютаДокумента);
ОбластьМакета.Параметры.ИтоговаяСтрока = "Всего оказано услуг " + НомерСтроки
+ ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, ВалютаДляПечати);
ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, ВалютаДляПечати);
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
ТабДокумент.Вывести(ОбластьМакета);
Возврат ТабДокумент;
КонецФункции // ПечатьАктаОбОказанииУслуг()
Функция Печать() Экспорт
Возврат ПечатьАктаОбОказанииУслуг();
КонецФункции // Печать
мВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();
Выходит ошибка в бухгалтерии при вызове печати - Не удалось сформировать внешнюю печатную форму!
Невозможно обработать параметр "ВалютаРегламентированногоУчета" для получения значения
Что не так?"
Читают тему
(гостей: 1)