kirill96
16.07.2019, 17:42
Здравствуйте, как в созданной внешней обработки печатной формы акта об оказание услуг добавить, что бы выводился номер акта?
Код обработки
Функция СведенияОВнешнейОбработке () Экспорт
ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.РеализацияТоваро� �Услуг");
ПараметрыРегистрации.Вста� �ить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вста� �ить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вста� �ить("Наименование", НСтр("ru = 'Акт об оказании услуг 2012'"));
ПараметрыРегистрации.Вста� �ить("Версия", "1.0");
ПараметрыРегистрации.Вста� �ить("БезопасныйРежим", Ложь);
ПараметрыРегистрации.Вста� �ить("Информация", НСтр("ru = 'Акт об оказании услуг 2012'"));
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКо� �анд,
НСтр("ru = 'Акт об оказании услуг 2012'"),
"Акт об оказании услуг 2012",
"ВызовСерверногоМетода",
Истина,
"ПечатьMXL");
ПараметрыРегистрации.Вста� �ить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции // СведенияОВнешнейОбработке ()
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКо� �анд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представлени� � = Представление;
НоваяКоманда.Идентификато� � = Идентификатор;
НоваяКоманда.Использовани� � = Использование;
НоваяКоманда.ПоказыватьОп� �вещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм,Объ� �ктыПечати, ПараметрыВывода) Экспорт
// Устанавливаем признак доступности печати покомплектно.
ПараметрыВывода.ДоступнаП� �чатьПоКомплектно = Истина;
// Проверяем, нужно ли для макета ОтчетККМ формировать табличный документ.
Если УправлениеПечатью.НужноПе� �ататьМакет(КоллекцияПечат ныхФорм, "Акт об оказании услуг 2012") Тогда
// Формируем табличный документ и добавляем его в коллекцию печатных форм.
УправлениеПечатью.Вывести� �абличныйДокументВКоллекц� �ю(КоллекцияПечатныхФорм,
"Акт об оказании услуг 2012",
"Акт об оказании услуг 2012",
ПечатьАктаОбОказанииУслуг 2012(МассивОбъектов, ОбъектыПечати),
,
);
КонецЕсли;
КонецПроцедуры
// Функция формирует табличный документ с печатной формой накладной,
// разработанной методистами
//
// Возвращаемое значение:
// Табличный документ - печатная форма накладной
//
Функция ПечатьАктаОбОказанииУслуг 2012(МассивОбъектов, ОбъектыПечати)
ВалютаРегламентированного Учета = Константы.ВалютаРегламент� �рованногоУчета.Получить();
ДопКолонка = Константы.ДополнительнаяК� �лонкаПечатныхФормДокумен� �ов.Получить();
Если ДопКолонка = Перечисления.Дополнительн� �яКолонкаПечатныхФормДоку� �ентов.Артикул Тогда
ВыводитьКоды = Истина;
Колонка = "Артикул";
ТекстКодАртикул = "Артикул";
ИначеЕсли ДопКолонка = Перечисления.Дополнительн� �яКолонкаПечатныхФормДоку� �ентов.Код Тогда
ВыводитьКоды = Истина;
Колонка = "Код";
ТекстКодАртикул = "Код";
Иначе
ВыводитьКоды = Ложь;
Колонка = "";
ТекстКодАртикул = "Код";
КонецЕсли;
Если ВыводитьКоды Тогда
ОбластьШапки = "ШапкаСКодом";
ОбластьСтроки = "СтрокаСКодом";
Иначе
ОбластьШапки = "ШапкаТаблицы";
ОбластьСтроки = "Строка";
КонецЕсли;
ЗапросШапка = Новый Запрос;
ЗапросШапка.УстановитьПар� �метр("ТекущийДокумент", МассивОбъектов[0]);
ЗапросШапка.Текст =
"ВЫБРАТЬ
| Номер,
| Дата,
| ДоговорКонтрагента,
| ДоговорКонтрагента.Расчет� �ВУсловныхЕдиницах КАК РасчетыВУсловныхЕдиницах,
| Контрагент КАК Получатель,
| Организация КАК Поставщик,
| Организация,
| СуммаДокумента,
| ВалютаДокумента,
| СуммаВключаетНДС
|ИЗ
| Документ.РеализацияТоваро� �Услуг КАК РеализацияТоваровУслуг
|
|ГДЕ
| РеализацияТоваровУслуг.Сс� �лка = &ТекущийДокумент";
Шапка = ЗапросШапка.Выполнить().Выб рать();
Шапка.Следующий();
ЗапросУслуги = Новый Запрос;
ЗапросУслуги.УстановитьПа� �аметр("ТекущийДокумент", МассивОбъектов[0]);
ЗапросУслуги.УстановитьПа� �аметр("Курс", ЗаполнениеДокументов.Курс� �окумента(МассивОбъектов[0], ВалютаРегламентированного Учета));
ЗапросУслуги.УстановитьПа� �аметр("Кратность", ЗаполнениеДокументов.Крат� �остьДокумента(МассивОбъек тов[0], ВалютаРегламентированного Учета));
ЧастьЗапросаДляВыбораСоде ржанияУслуг = ОбщегоНазначенияБПВызовСе рвера.ПолучитьЧастьЗапрос� �ДляВыбораСодержанияУслуг("РеализацияТоваровУслуг");
ЗапросУслуги.Текст =
"ВЫБРАТЬ
| Номенклатура КАК Номенклатура,
| ВЫРАЗИТЬ(Номенклатура.Наим енованиеПолное КАК Строка(1000)) КАК Товар,
| Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
| Количество,
| ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Цена * &Курс / &Кратность КАК Цена,
| Сумма * &Курс / &Кратность КАК Сумма,
| СтавкаНДС,
| СуммаНДС * &Курс / &Кратность КАК СуммаНДС
|ИЗ
| Документ.РеализацияТоваро� �Услуг.Товары КАК РеализацияТоваровУслуг
|
|ГДЕ
| РеализацияТоваровУслуг.Сс� �лка = &ТекущийДокумент
| И
| РеализацияТоваровУслуг.Но� �енклатура.Услуга = Истина
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| " + ЧастьЗапросаДляВыбораСоде ржанияУслуг + ",
| " + ЧастьЗапросаДляВыбораСоде ржанияУслуг + ",
| Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
| Количество,
| Номенклатура.ЕдиницаИзмер� �ния КАК ЕдиницаИзмерения,
| Цена * &Курс / &Кратность КАК Цена,
| Сумма * &Курс / &Кратность КАК Сумма,
| СтавкаНДС,
| СуммаНДС * &Курс / &Кратность КАК СуммаНДС
|ИЗ
| Документ.РеализацияТоваро� �Услуг.Услуги КАК РеализацияТоваровУслуг
|
|ГДЕ
| РеализацияТоваровУслуг.Сс� �лка = &ТекущийДокумент
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| " + ЧастьЗапросаДляВыбораСоде ржанияУслуг + ",
| " + ЧастьЗапросаДляВыбораСоде ржанияУслуг + ",
| Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
| Количество,
| Номенклатура.ЕдиницаИзмер� �ния КАК ЕдиницаИзмерения,
| Цена * &Курс / &Кратность КАК Цена,
| Сумма * &Курс / &Кратность КАК Сумма,
| СтавкаНДС,
| СуммаНДС * &Курс / &Кратность КАК СуммаНДС
|ИЗ
| Документ.РеализацияТоваро� �Услуг.АгентскиеУслуги КАК РеализацияТоваровУслуг
|
|ГДЕ
| РеализацияТоваровУслуг.Сс� �лка = &ТекущийДокумент";
ТаблицаУслуги = ЗапросУслуги.Выполнить().Вы грузить();
Если МассивОбъектов[0].Проведен И (Шапка.РасчетыВУсловныхЕди ницах
ИЛИ (Шапка.ВалютаДокумента <> ВалютаРегламентированного Учета И МассивОбъектов[0].Дата >= '20090101000000')) Тогда
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", МассивОбъектов[0]);
Запрос.УстановитьПараметр("СчетУчетаРасчетовСКонтраг ентом", МассивОбъектов[0].СчетУчетаРасчетовСКонтра� �ентом);
Текст =
"ВЫБРАТЬ
| СУММА(Хозрасчетный.Сумма) КАК Сумма
|ИЗ
| РегистрБухгалтерии.Хозрас� �етный КАК Хозрасчетный
|ГДЕ
| Хозрасчетный.Регистратор = &Ссылка
| И Хозрасчетный.СчетДт = &СчетУчетаРасчетовСКонтраг ентом
| И Хозрасчетный.СчетКт В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| РеализацияТоваровУслугТов ары.СчетДоходов
| ИЗ
| Документ.РеализацияТоваро� �Услуг.Товары КАК РеализацияТоваровУслугТов ары
| ГДЕ
| РеализацияТоваровУслугТов ары.Ссылка = &Ссылка
|
| ОБЪЕДИНИТЬ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| РеализацияТоваровУслугУсл уги.СчетДоходов
| ИЗ
| Документ.РеализацияТоваро� �Услуг.Услуги КАК РеализацияТоваровУслугУсл уги
| ГДЕ
| РеализацияТоваровУслугУсл уги.Ссылка = &Ссылка)
|";
Запрос.Текст = Текст;
СуммаВзаиморасчетов = Запрос.Выполнить().Выгрузит ь()[0].Сумма;
РасчетСуммыНДСПоСтавке = УчетНДС.РасчетНДСвРубляхП� �СтавкеДокумента(Шапка.Дат� �);
Если НЕ СуммаВзаиморасчетов = NULL Тогда
ТаблицаУслуги.Колонки.Доба вить("СуммаБезНДС");
МассивРаспределения = Новый Массив;
Для Каждого СтрокаТовар Из ТаблицаУслуги Цикл
СуммаСНДС = СтрокаТовар.Сумма + ?(Шапка.СуммаВключаетНДС, 0, СтрокаТовар.СуммаНДС);
СуммаБезНДС = СуммаСНДС - СтрокаТовар.СуммаНДС;
МассивРаспределения.Добав� �ть(СуммаСНДС);
СтрокаТовар.СуммаБезНДС = СуммаБезНДС;
КонецЦикла;
ТаблицаУслуги.Колонки.Доба вить("СуммаРублевая");
УчетНДС.РаспределитьСумму� �оСтолбцу(МассивРаспределе ния, СуммаВзаиморасчетов, ТаблицаУслуги, "СуммаРублевая");
Для Каждого СтрокаТовар Из ТаблицаУслуги Цикл
Если РасчетСуммыНДСПоСтавке Тогда
//Выделение суммы НДС, Расчет суммы без НДС
ЗначениеСтавкиНДС = УчетНДС.ПолучитьСтавкуНДС( СтрокаТовар.СтавкаНДС);
СтрокаТовар.СуммаНДС = ?(ЗначениеСтавкиНДС = 0, 0, Окр(СтрокаТовар.СуммаРубле вая * ЗначениеСтавкиНДС/(100+ЗначениеСтавкиНДС),2));
СтрокаТовар.Сумма = СтрокаТовар.СуммаРублевая - СтрокаТовар.СуммаНДС;
Иначе
МассивРаспределения.Очист� �ть();
МассивРаспределения.Добав� �ть(СтрокаТовар.СуммаБезНД� �);
МассивРаспределения.Добав� �ть(СтрокаТовар.СуммаНДС);
МассивРаспределенныхСумм = ОбщегоНазначения.Распреде� �итьПропорционально(Строка Товар.СуммаРублевая, МассивРаспределения);
Если МассивРаспределенныхСумм <> Неопределено Тогда
СтрокаТовар.Сумма = МассивРаспределенныхСумм[0];
СтрокаТовар.СуммаНДС = МассивРаспределенныхСумм[1];
КонецЕсли;
КонецЕсли;
Если Шапка.СуммаВключаетНДС Тогда
СтрокаТовар.Сумма = СтрокаТовар.Сумма+СтрокаТо вар.СуммаНДС;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметров� �ечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Реализаци яТоваровУслуг_Акт";
Макет = ПолучитьМакет("Акт");
//+Договор SnT
ОбластьМакета = Макет.ПолучитьОбласть ("Договор");
//ОбластьМакета.Параметры.За полнить(Шапка);
СведенияОДоговореНазвание Д = МассивОбъектов[0].ДоговорКонтрагента.Наимен ование;
НомерSnT = МассивОбъектов[0].ДоговорКонтрагента.Номер;
Если ЗначениеЗаполнено (НомерSnT) Тогда
НомерSnT = "№ " + Формат(НомерSnT, "ЧДЦ=0");
СведенияОДоговореНомерД = НомерSnT;
ИначеЕсли Не ЗначениеЗаполнено (НомерSnT) Тогда
КонецЕсли;
ДатаSnT = МассивОбъектов[0].ДоговорКонтрагента.Дата ;
Если ЗначениеЗаполнено (ДатаSnT) Тогда
ДатаSnT = "от " + Формат(ДатаSnT, "ДЛФ=DD");
СведенияОДоговореДатаД = ДатаSnT;
ИначеЕсли Не ЗначениеЗаполнено (ДатаSnT) Тогда
КонецЕсли;
ДатаДок = МассивОбъектов[0].Дата;
ДатаДок = Формат(ДатаДок, "ДЛФ=DD");
ОбластьМакета.Параметры.Да таДок = ДатаДок;
//ОбластьМакета.Параметры.На званиеД = СведенияОДоговореНазвание Д ;
ОбластьМакета.Параметры.Но мерД = СведенияОДоговореНомерД ;
ОбластьМакета.Параметры.Да таД = СведенияОДоговореДатаД ;
ТабДокумент.Вывести(Област ьМакета);
//-Договор SnT ////////////////////////////////////
ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
Дата = МассивОбъектов[0].Дата;
Строка = "";
Строка = Строка + Формат(Дата,"ДФ=""ММММ гггг""");
ОбластьМакета.Параметры.Те кущийМесяц = Строка +" "+ " г.";
ОбластьМакета.Параметры.Но мерД = СведенияОДоговореНомерД ;
ОбластьМакета.Параметры.Да таД = СведенияОДоговореДатаД ;
//Получаем наименование, должность, фио контрагента
СведенияОКонтрагенте = БухгалтерскийУчетПереопре деляемый.СведенияОЮрФизЛи� �е(Шапка.Поставщик, Шапка.Дата);
ОбластьМакета.Параметры.Пр едставлениеПолучателя = МассивОбъектов[0].Контрагент.НаименованиеПо лное;
ПредставительПолучателя = МассивОбъектов[0].Контрагент.ОсновноеКонтак тноеЛицо;
//Преобразовываем ФИО в ФИО родительный падеж
ПредставительПолучателяФа милия = СтрЗаменить(Представитель� �олучателя.Фамилия, " ", "");
//ПредставительПолучателяФа милияРодительныйПадеж = РодительныйПадеж(Представ� �тельПолучателяФамилия);
ПредставительПолучателяФа милияРодительныйПадеж = "";
Результат = Неопределено;
Если СклонениеПредставленийОбъ ектов.ПросклонятьФИОСПомо� �ьюКомпоненты(Представител ьПолучателяФамилия, 2, Результат, 1) Тогда
ПредставительПолучателяФа милияРодительныйПадеж = Результат;
КонецЕсли;
Если ПредставительПолучателяФа милияРодительныйПадеж = "" И Не ПредставительПолучателя.П� �стая() Тогда
Сообщить("Функция склонения фамилии будет отключена!");
ПредставительПолучателяФа милияРодительныйПадеж = ПредставительПолучателя.Ф� �милия;
КонецЕсли;
ПредставительПолучателяРо дительныйПадеж = ПредставительПолучателяФа милияРодительныйПадеж + " " + Лев(СокрЛП(ПредставительПо лучателя.Имя),1) +
"." + Лев(СокрЛП(ПредставительПо лучателя.Отчество),1) + ".";
Если ПредставительПолучателя.П� �стая() Тогда
ПредставительПолучателяРо дительныйПадеж = "____________________";
КонецЕсли;
ОбластьМакета.Параметры.Пр едставительПолучателя = ПредставительПолучателяРо дительныйПадеж ;
Должность = МассивОбъектов[0].Контрагент.ОсновноеКонтак тноеЛицо.Должность;
ОбластьМакета.Параметры.До лжность = Должность ;
//////Получаем наименование, должность, фио контрагента
//Выводим сумму цифрой и сумму прописью, и подписи
Сумма = ТаблицаУслуги.Итог("Сумма");
СуммаНДС = ТаблицаУслуги.Итог("СуммаНДС");
ОбластьМакета.Параметры.Вс его = ОбщегоНазначенияБПВызовСе рвера.ФорматСумм(Сумма);
СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
ОбластьМакета.Параметры.Су ммаПрописью = ОбщегоНазначенияБПВызовСе рвера.СформироватьСуммуПр� �писью(СуммаКПрописи, ВалютаРегламентированного Учета);
//ОбластьМакета.Параметры.По ставщик = Шапка.Поставщик;
// //////Выводим сумму цифрой и сумму прописью
ТабДокумент.Вывести(Област ьМакета);
Возврат ТабДокумент;
КонецФункции
//Преобразовываем Фамилию контактного лица в родительный падеж
//Функция РодительныйПадеж(Фамилия)
// Попытка
// Компонента = "NameDecl.dll";
// ЗагрузитьВнешнююКомпонент у(Компонента);
// КомпонентСклонения = Новый("AddIn.NameDeclension");
// Исключение
// Сообщить("Не удалось загрузить внешнюю компоненту склонения имен по причине: " + ОписаниеОшибки());
// Сообщить("Обратитесь к системному администратору для регистрации компоненты NAMEDECL.DLL!");
// Возврат "";
// КонецПопытки;
//
// НомерСклонения = 2; // Родительный падеж
// ТекстВРодительном = КомпонентСклонения.Проскл� �нять(Фамилия,НомерСклонен� �я);
//
// Возврат ТекстВРодительном;
//
//КонецФункции
Код обработки
Функция СведенияОВнешнейОбработке () Экспорт
ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.РеализацияТоваро� �Услуг");
ПараметрыРегистрации.Вста� �ить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вста� �ить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вста� �ить("Наименование", НСтр("ru = 'Акт об оказании услуг 2012'"));
ПараметрыРегистрации.Вста� �ить("Версия", "1.0");
ПараметрыРегистрации.Вста� �ить("БезопасныйРежим", Ложь);
ПараметрыРегистрации.Вста� �ить("Информация", НСтр("ru = 'Акт об оказании услуг 2012'"));
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКо� �анд,
НСтр("ru = 'Акт об оказании услуг 2012'"),
"Акт об оказании услуг 2012",
"ВызовСерверногоМетода",
Истина,
"ПечатьMXL");
ПараметрыРегистрации.Вста� �ить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции // СведенияОВнешнейОбработке ()
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКо� �анд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представлени� � = Представление;
НоваяКоманда.Идентификато� � = Идентификатор;
НоваяКоманда.Использовани� � = Использование;
НоваяКоманда.ПоказыватьОп� �вещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм,Объ� �ктыПечати, ПараметрыВывода) Экспорт
// Устанавливаем признак доступности печати покомплектно.
ПараметрыВывода.ДоступнаП� �чатьПоКомплектно = Истина;
// Проверяем, нужно ли для макета ОтчетККМ формировать табличный документ.
Если УправлениеПечатью.НужноПе� �ататьМакет(КоллекцияПечат ныхФорм, "Акт об оказании услуг 2012") Тогда
// Формируем табличный документ и добавляем его в коллекцию печатных форм.
УправлениеПечатью.Вывести� �абличныйДокументВКоллекц� �ю(КоллекцияПечатныхФорм,
"Акт об оказании услуг 2012",
"Акт об оказании услуг 2012",
ПечатьАктаОбОказанииУслуг 2012(МассивОбъектов, ОбъектыПечати),
,
);
КонецЕсли;
КонецПроцедуры
// Функция формирует табличный документ с печатной формой накладной,
// разработанной методистами
//
// Возвращаемое значение:
// Табличный документ - печатная форма накладной
//
Функция ПечатьАктаОбОказанииУслуг 2012(МассивОбъектов, ОбъектыПечати)
ВалютаРегламентированного Учета = Константы.ВалютаРегламент� �рованногоУчета.Получить();
ДопКолонка = Константы.ДополнительнаяК� �лонкаПечатныхФормДокумен� �ов.Получить();
Если ДопКолонка = Перечисления.Дополнительн� �яКолонкаПечатныхФормДоку� �ентов.Артикул Тогда
ВыводитьКоды = Истина;
Колонка = "Артикул";
ТекстКодАртикул = "Артикул";
ИначеЕсли ДопКолонка = Перечисления.Дополнительн� �яКолонкаПечатныхФормДоку� �ентов.Код Тогда
ВыводитьКоды = Истина;
Колонка = "Код";
ТекстКодАртикул = "Код";
Иначе
ВыводитьКоды = Ложь;
Колонка = "";
ТекстКодАртикул = "Код";
КонецЕсли;
Если ВыводитьКоды Тогда
ОбластьШапки = "ШапкаСКодом";
ОбластьСтроки = "СтрокаСКодом";
Иначе
ОбластьШапки = "ШапкаТаблицы";
ОбластьСтроки = "Строка";
КонецЕсли;
ЗапросШапка = Новый Запрос;
ЗапросШапка.УстановитьПар� �метр("ТекущийДокумент", МассивОбъектов[0]);
ЗапросШапка.Текст =
"ВЫБРАТЬ
| Номер,
| Дата,
| ДоговорКонтрагента,
| ДоговорКонтрагента.Расчет� �ВУсловныхЕдиницах КАК РасчетыВУсловныхЕдиницах,
| Контрагент КАК Получатель,
| Организация КАК Поставщик,
| Организация,
| СуммаДокумента,
| ВалютаДокумента,
| СуммаВключаетНДС
|ИЗ
| Документ.РеализацияТоваро� �Услуг КАК РеализацияТоваровУслуг
|
|ГДЕ
| РеализацияТоваровУслуг.Сс� �лка = &ТекущийДокумент";
Шапка = ЗапросШапка.Выполнить().Выб рать();
Шапка.Следующий();
ЗапросУслуги = Новый Запрос;
ЗапросУслуги.УстановитьПа� �аметр("ТекущийДокумент", МассивОбъектов[0]);
ЗапросУслуги.УстановитьПа� �аметр("Курс", ЗаполнениеДокументов.Курс� �окумента(МассивОбъектов[0], ВалютаРегламентированного Учета));
ЗапросУслуги.УстановитьПа� �аметр("Кратность", ЗаполнениеДокументов.Крат� �остьДокумента(МассивОбъек тов[0], ВалютаРегламентированного Учета));
ЧастьЗапросаДляВыбораСоде ржанияУслуг = ОбщегоНазначенияБПВызовСе рвера.ПолучитьЧастьЗапрос� �ДляВыбораСодержанияУслуг("РеализацияТоваровУслуг");
ЗапросУслуги.Текст =
"ВЫБРАТЬ
| Номенклатура КАК Номенклатура,
| ВЫРАЗИТЬ(Номенклатура.Наим енованиеПолное КАК Строка(1000)) КАК Товар,
| Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
| Количество,
| ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Цена * &Курс / &Кратность КАК Цена,
| Сумма * &Курс / &Кратность КАК Сумма,
| СтавкаНДС,
| СуммаНДС * &Курс / &Кратность КАК СуммаНДС
|ИЗ
| Документ.РеализацияТоваро� �Услуг.Товары КАК РеализацияТоваровУслуг
|
|ГДЕ
| РеализацияТоваровУслуг.Сс� �лка = &ТекущийДокумент
| И
| РеализацияТоваровУслуг.Но� �енклатура.Услуга = Истина
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| " + ЧастьЗапросаДляВыбораСоде ржанияУслуг + ",
| " + ЧастьЗапросаДляВыбораСоде ржанияУслуг + ",
| Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
| Количество,
| Номенклатура.ЕдиницаИзмер� �ния КАК ЕдиницаИзмерения,
| Цена * &Курс / &Кратность КАК Цена,
| Сумма * &Курс / &Кратность КАК Сумма,
| СтавкаНДС,
| СуммаНДС * &Курс / &Кратность КАК СуммаНДС
|ИЗ
| Документ.РеализацияТоваро� �Услуг.Услуги КАК РеализацияТоваровУслуг
|
|ГДЕ
| РеализацияТоваровУслуг.Сс� �лка = &ТекущийДокумент
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| " + ЧастьЗапросаДляВыбораСоде ржанияУслуг + ",
| " + ЧастьЗапросаДляВыбораСоде ржанияУслуг + ",
| Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
| Количество,
| Номенклатура.ЕдиницаИзмер� �ния КАК ЕдиницаИзмерения,
| Цена * &Курс / &Кратность КАК Цена,
| Сумма * &Курс / &Кратность КАК Сумма,
| СтавкаНДС,
| СуммаНДС * &Курс / &Кратность КАК СуммаНДС
|ИЗ
| Документ.РеализацияТоваро� �Услуг.АгентскиеУслуги КАК РеализацияТоваровУслуг
|
|ГДЕ
| РеализацияТоваровУслуг.Сс� �лка = &ТекущийДокумент";
ТаблицаУслуги = ЗапросУслуги.Выполнить().Вы грузить();
Если МассивОбъектов[0].Проведен И (Шапка.РасчетыВУсловныхЕди ницах
ИЛИ (Шапка.ВалютаДокумента <> ВалютаРегламентированного Учета И МассивОбъектов[0].Дата >= '20090101000000')) Тогда
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", МассивОбъектов[0]);
Запрос.УстановитьПараметр("СчетУчетаРасчетовСКонтраг ентом", МассивОбъектов[0].СчетУчетаРасчетовСКонтра� �ентом);
Текст =
"ВЫБРАТЬ
| СУММА(Хозрасчетный.Сумма) КАК Сумма
|ИЗ
| РегистрБухгалтерии.Хозрас� �етный КАК Хозрасчетный
|ГДЕ
| Хозрасчетный.Регистратор = &Ссылка
| И Хозрасчетный.СчетДт = &СчетУчетаРасчетовСКонтраг ентом
| И Хозрасчетный.СчетКт В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| РеализацияТоваровУслугТов ары.СчетДоходов
| ИЗ
| Документ.РеализацияТоваро� �Услуг.Товары КАК РеализацияТоваровУслугТов ары
| ГДЕ
| РеализацияТоваровУслугТов ары.Ссылка = &Ссылка
|
| ОБЪЕДИНИТЬ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| РеализацияТоваровУслугУсл уги.СчетДоходов
| ИЗ
| Документ.РеализацияТоваро� �Услуг.Услуги КАК РеализацияТоваровУслугУсл уги
| ГДЕ
| РеализацияТоваровУслугУсл уги.Ссылка = &Ссылка)
|";
Запрос.Текст = Текст;
СуммаВзаиморасчетов = Запрос.Выполнить().Выгрузит ь()[0].Сумма;
РасчетСуммыНДСПоСтавке = УчетНДС.РасчетНДСвРубляхП� �СтавкеДокумента(Шапка.Дат� �);
Если НЕ СуммаВзаиморасчетов = NULL Тогда
ТаблицаУслуги.Колонки.Доба вить("СуммаБезНДС");
МассивРаспределения = Новый Массив;
Для Каждого СтрокаТовар Из ТаблицаУслуги Цикл
СуммаСНДС = СтрокаТовар.Сумма + ?(Шапка.СуммаВключаетНДС, 0, СтрокаТовар.СуммаНДС);
СуммаБезНДС = СуммаСНДС - СтрокаТовар.СуммаНДС;
МассивРаспределения.Добав� �ть(СуммаСНДС);
СтрокаТовар.СуммаБезНДС = СуммаБезНДС;
КонецЦикла;
ТаблицаУслуги.Колонки.Доба вить("СуммаРублевая");
УчетНДС.РаспределитьСумму� �оСтолбцу(МассивРаспределе ния, СуммаВзаиморасчетов, ТаблицаУслуги, "СуммаРублевая");
Для Каждого СтрокаТовар Из ТаблицаУслуги Цикл
Если РасчетСуммыНДСПоСтавке Тогда
//Выделение суммы НДС, Расчет суммы без НДС
ЗначениеСтавкиНДС = УчетНДС.ПолучитьСтавкуНДС( СтрокаТовар.СтавкаНДС);
СтрокаТовар.СуммаНДС = ?(ЗначениеСтавкиНДС = 0, 0, Окр(СтрокаТовар.СуммаРубле вая * ЗначениеСтавкиНДС/(100+ЗначениеСтавкиНДС),2));
СтрокаТовар.Сумма = СтрокаТовар.СуммаРублевая - СтрокаТовар.СуммаНДС;
Иначе
МассивРаспределения.Очист� �ть();
МассивРаспределения.Добав� �ть(СтрокаТовар.СуммаБезНД� �);
МассивРаспределения.Добав� �ть(СтрокаТовар.СуммаНДС);
МассивРаспределенныхСумм = ОбщегоНазначения.Распреде� �итьПропорционально(Строка Товар.СуммаРублевая, МассивРаспределения);
Если МассивРаспределенныхСумм <> Неопределено Тогда
СтрокаТовар.Сумма = МассивРаспределенныхСумм[0];
СтрокаТовар.СуммаНДС = МассивРаспределенныхСумм[1];
КонецЕсли;
КонецЕсли;
Если Шапка.СуммаВключаетНДС Тогда
СтрокаТовар.Сумма = СтрокаТовар.Сумма+СтрокаТо вар.СуммаНДС;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметров� �ечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Реализаци яТоваровУслуг_Акт";
Макет = ПолучитьМакет("Акт");
//+Договор SnT
ОбластьМакета = Макет.ПолучитьОбласть ("Договор");
//ОбластьМакета.Параметры.За полнить(Шапка);
СведенияОДоговореНазвание Д = МассивОбъектов[0].ДоговорКонтрагента.Наимен ование;
НомерSnT = МассивОбъектов[0].ДоговорКонтрагента.Номер;
Если ЗначениеЗаполнено (НомерSnT) Тогда
НомерSnT = "№ " + Формат(НомерSnT, "ЧДЦ=0");
СведенияОДоговореНомерД = НомерSnT;
ИначеЕсли Не ЗначениеЗаполнено (НомерSnT) Тогда
КонецЕсли;
ДатаSnT = МассивОбъектов[0].ДоговорКонтрагента.Дата ;
Если ЗначениеЗаполнено (ДатаSnT) Тогда
ДатаSnT = "от " + Формат(ДатаSnT, "ДЛФ=DD");
СведенияОДоговореДатаД = ДатаSnT;
ИначеЕсли Не ЗначениеЗаполнено (ДатаSnT) Тогда
КонецЕсли;
ДатаДок = МассивОбъектов[0].Дата;
ДатаДок = Формат(ДатаДок, "ДЛФ=DD");
ОбластьМакета.Параметры.Да таДок = ДатаДок;
//ОбластьМакета.Параметры.На званиеД = СведенияОДоговореНазвание Д ;
ОбластьМакета.Параметры.Но мерД = СведенияОДоговореНомерД ;
ОбластьМакета.Параметры.Да таД = СведенияОДоговореДатаД ;
ТабДокумент.Вывести(Област ьМакета);
//-Договор SnT ////////////////////////////////////
ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
Дата = МассивОбъектов[0].Дата;
Строка = "";
Строка = Строка + Формат(Дата,"ДФ=""ММММ гггг""");
ОбластьМакета.Параметры.Те кущийМесяц = Строка +" "+ " г.";
ОбластьМакета.Параметры.Но мерД = СведенияОДоговореНомерД ;
ОбластьМакета.Параметры.Да таД = СведенияОДоговореДатаД ;
//Получаем наименование, должность, фио контрагента
СведенияОКонтрагенте = БухгалтерскийУчетПереопре деляемый.СведенияОЮрФизЛи� �е(Шапка.Поставщик, Шапка.Дата);
ОбластьМакета.Параметры.Пр едставлениеПолучателя = МассивОбъектов[0].Контрагент.НаименованиеПо лное;
ПредставительПолучателя = МассивОбъектов[0].Контрагент.ОсновноеКонтак тноеЛицо;
//Преобразовываем ФИО в ФИО родительный падеж
ПредставительПолучателяФа милия = СтрЗаменить(Представитель� �олучателя.Фамилия, " ", "");
//ПредставительПолучателяФа милияРодительныйПадеж = РодительныйПадеж(Представ� �тельПолучателяФамилия);
ПредставительПолучателяФа милияРодительныйПадеж = "";
Результат = Неопределено;
Если СклонениеПредставленийОбъ ектов.ПросклонятьФИОСПомо� �ьюКомпоненты(Представител ьПолучателяФамилия, 2, Результат, 1) Тогда
ПредставительПолучателяФа милияРодительныйПадеж = Результат;
КонецЕсли;
Если ПредставительПолучателяФа милияРодительныйПадеж = "" И Не ПредставительПолучателя.П� �стая() Тогда
Сообщить("Функция склонения фамилии будет отключена!");
ПредставительПолучателяФа милияРодительныйПадеж = ПредставительПолучателя.Ф� �милия;
КонецЕсли;
ПредставительПолучателяРо дительныйПадеж = ПредставительПолучателяФа милияРодительныйПадеж + " " + Лев(СокрЛП(ПредставительПо лучателя.Имя),1) +
"." + Лев(СокрЛП(ПредставительПо лучателя.Отчество),1) + ".";
Если ПредставительПолучателя.П� �стая() Тогда
ПредставительПолучателяРо дительныйПадеж = "____________________";
КонецЕсли;
ОбластьМакета.Параметры.Пр едставительПолучателя = ПредставительПолучателяРо дительныйПадеж ;
Должность = МассивОбъектов[0].Контрагент.ОсновноеКонтак тноеЛицо.Должность;
ОбластьМакета.Параметры.До лжность = Должность ;
//////Получаем наименование, должность, фио контрагента
//Выводим сумму цифрой и сумму прописью, и подписи
Сумма = ТаблицаУслуги.Итог("Сумма");
СуммаНДС = ТаблицаУслуги.Итог("СуммаНДС");
ОбластьМакета.Параметры.Вс его = ОбщегоНазначенияБПВызовСе рвера.ФорматСумм(Сумма);
СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
ОбластьМакета.Параметры.Су ммаПрописью = ОбщегоНазначенияБПВызовСе рвера.СформироватьСуммуПр� �писью(СуммаКПрописи, ВалютаРегламентированного Учета);
//ОбластьМакета.Параметры.По ставщик = Шапка.Поставщик;
// //////Выводим сумму цифрой и сумму прописью
ТабДокумент.Вывести(Област ьМакета);
Возврат ТабДокумент;
КонецФункции
//Преобразовываем Фамилию контактного лица в родительный падеж
//Функция РодительныйПадеж(Фамилия)
// Попытка
// Компонента = "NameDecl.dll";
// ЗагрузитьВнешнююКомпонент у(Компонента);
// КомпонентСклонения = Новый("AddIn.NameDeclension");
// Исключение
// Сообщить("Не удалось загрузить внешнюю компоненту склонения имен по причине: " + ОписаниеОшибки());
// Сообщить("Обратитесь к системному администратору для регистрации компоненты NAMEDECL.DLL!");
// Возврат "";
// КонецПопытки;
//
// НомерСклонения = 2; // Родительный падеж
// ТекстВРодительном = КомпонентСклонения.Проскл� �нять(Фамилия,НомерСклонен� �я);
//
// Возврат ТекстВРодительном;
//
//КонецФункции