Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 ноя 2024, 19:39

Какой код вписать

Автор happynattion, 26 ноя 2018, 14:05

0 Пользователей и 2 гостей просматривают эту тему.

happynattion

В счет фактуру рядом с наименование товара добавил параметр Артикул. Какой код мне нужно вписат в модуле чтобы выводился артикул товара?

Мадияр Ахмадиев

Цитата: happynattion от 26 ноя 2018, 14:05
В счет фактуру рядом с наименование товара добавил параметр Артикул. Какой код мне нужно вписат в модуле чтобы выводился артикул товара?
Смотришь как названа область, например "ОбластьСтрока",и дальше ОбластьСтрока.Параметры.Артикул = Выборка.Артикул(смотря какая выборка) это примерно. Вообще смотреть надо, или хотя бы код Функции печать,и еще, лучше артикул перед наименованием, и в отдельной колонке сделать

happynattion

Цитата: Мадияр Ахмадиев от 26 ноя 2018, 14:16
Цитата: happynattion от 26 ноя 2018, 14:05
В счет фактуру рядом с наименование товара добавил параметр Артикул. Какой код мне нужно вписат в модуле чтобы выводился артикул товара?
Смотришь как названа область, например "ОбластьСтрока",и дальше ОбластьСтрока.Параметры.Артикул = Выборка.Артикул(смотря какая выборка) это примерно. Вообще смотреть надо, или хотя бы код Функции печать,и еще, лучше артикул перед наименованием, и в отдельной колонке сделать
А как его в отдельной колонке сделать?

happynattion

Функция Печать() Экспорт

ТабДокумент = Новый ТабличныйДокумент;

ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабДокумент.ПолеСверху = 13;
Корректировочный    = СсылкаНаОбъект.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.Корректировочный;
Если Корректировочный Тогда
ПечатьКорректировочногоСчетаФактуры981(СсылкаНаОбъект, ТабДокумент);
Иначе
ПечатьСчетаФактуры981(СсылкаНаОбъект, ТабДокумент);
КонецЕсли;
ТабДокумент.ИмяПараметровПечати="ИмяПараметровПечати_СчетФактура981";
ТабДокумент.ВерхнийКолонтитул.Выводить = Истина;
ТабДокумент.ВерхнийКолонтитул.НачальнаяСтраница     = 2;
ТабДокумент.ВерхнийКолонтитул.ВертикальноеПоложение = ВертикальноеПоложение.Низ;
ЗаголовокДляПечати = ОбщегоНазначения.СформироватьЗаголовокДокумента(СсылкаНаОбъект, "Счет-фактура") + " г.";
ТабДокумент.ВерхнийКолонтитул.ТекстСлева  = ЗаголовокДляПечати;
ТабДокумент.ВерхнийКолонтитул.ТекстСправа = "Лист [&НомерСтраницы]";
ТабДокумент.ОриентацияСтраницы=ОриентацияСтраницы.Ландшафт;
ТабДокумент.АвтоМасштаб=Истина;
Возврат ТабДокумент;

КонецФункции


Процедура ПечатьСчетаФактуры981(Ссылка, ТабДокумент)

ДанныеДляПечати = Неопределено;
УчетнаяПолитика = Неопределено;

УчетНДС.СобратьДанныеДляПечатиСчетФактурыВыданного(Ссылка, ДанныеДляПечати, УчетнаяПолитика);

Если ТипЗнч(ДанныеДляПечати) = Тип("Соответствие") Тогда
Возврат;
ИначеЕсли ДанныеДляПечати = Неопределено Тогда
Возврат;
КонецЕсли;

РеквизитыСФ = ОбщегоНазначения.ПолучитьЗначенияРеквизитов(Ссылка,
"Дата, ВидСчетаФактуры, Исправление, НомерИсправления, ДоговорКонтрагента, СчетФактураБезНДС, КППКонтрагента, СводныйКомиссионный, ИдентификаторГосКонтракта");
ДанныеДляПечати.Вставить("ДатаСчетФактуры", РеквизитыСФ.Дата);
ДанныеДляПечати.Вставить("Ссылка", Ссылка);
ДанныеДляПечати.Вставить("ВидСчетаФактуры", РеквизитыСФ.ВидСчетаФактуры);
ДанныеДляПечати.Вставить("Исправление", РеквизитыСФ.Исправление);
ДанныеДляПечати.Вставить("НомерИсправления", РеквизитыСФ.НомерИсправления);
ДанныеДляПечати.Вставить("ДоговорКонтрагента", РеквизитыСФ.ДоговорКонтрагента);
ДанныеДляПечати.Вставить("СчетФактураБезНДС", РеквизитыСФ.СчетФактураБезНДС);
ДанныеДляПечати.Вставить("КППКонтрагента", РеквизитыСФ.КППКонтрагента);
ДанныеДляПечати.Вставить("СводныйКомиссионный",     РеквизитыСФ.СводныйКомиссионный);
ДанныеДляПечати.Вставить("ВидАгентскогоДоговора",   
ОбщегоНазначения.ПолучитьЗначениеРеквизита(РеквизитыСФ.ДоговорКонтрагента, "ВидАгентскогоДоговора"));
ДанныеДляПечати.Вставить("ИдентификаторГосКонтракта", РеквизитыСФ.ИдентификаторГосКонтракта);

// Определяем макет
Макет = ПолучитьМакет("СчетФактура981");
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура981";

ВывестиСчетФактуруВТабличныйДокумент(ТабДокумент, Макет, ДанныеДляПечати);

КонецПроцедуры


Процедура ПечатьКорректировочногоСчетаФактуры981(Ссылка, ТабДокумент)

ДанныеДляПечати = Неопределено;
УчетнаяПолитика = Неопределено;

УчетНДС.СобратьДанныеДляПечатиСчетФактурыВыданного(Ссылка, ДанныеДляПечати, УчетнаяПолитика);

Если ТипЗнч(ДанныеДляПечати) = Тип("Соответствие") Тогда
Возврат;
ИначеЕсли ДанныеДляПечати = Неопределено Тогда
Возврат;
КонецЕсли;

РеквизитыСФ = ОбщегоНазначения.ПолучитьЗначенияРеквизитов(Ссылка,
"Номер,Дата,
|Исправление,НомерИсправления,
|НомерИсправляемогоКорректировочногоДокумента,ДатаИсправляемогоКорректировочногоДокумента,
|СчетФактураБезНДС, КППКонтрагента, ИдентификаторГосКонтракта");

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

КорректируемыеСчетаФактуры = ЗапросРеквизитовОснований.Выполнить().Выгрузить();

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

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

// Определяем макет
//Если УчетНДС.ПрименяетсяПостановление952(РеквизитыСФ.Дата) Тогда
// Макет = ПолучитьОбщийМакет("КорректировочныйСчетФактура952");
//Иначе
Макет = ПолучитьМакет("КорректировочныйСчетФактура981");
//КонецЕсли;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_КорректировочныйСчетФактура981";

// Выводим шапку
ВедетсяУчетНДСПоФЗ56 = УчетНДС.ВедетсяУчетНДСПоФЗ56(РеквизитыСФ.Дата);
//Если ВедетсяУчетНДСПоФЗ56 Тогда
// ОбластьМакета = Макет.ПолучитьОбласть("ШапкаИнформация1137_625");
//Иначе
// ОбластьМакета = Макет.ПолучитьОбласть("ШапкаИнформация1137");
//КонецЕсли;
//ТабДокумент.Вывести(ОбластьМакета);

ОбластьМакета = Макет.ПолучитьОбласть("Шапка");

ОбластьМакета.Параметры.Заполнить(ДанныеДляПечати);

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

РеквизитыОснований = "";
Для Каждого РеквизитыСчетаФактуры Из КорректируемыеСчетаФактуры Цикл
Если НЕ РеквизитыСчетаФактуры.УчитыватьИсправлениеИсходногоДокумента
ИЛИ РеквизитыСчетаФактуры.НомерИсправления = 0 Тогда
НомерИсправленияСчетаФактуры = "--";
Иначе
НомерИсправленияСчетаФактуры = Формат(РеквизитыСчетаФактуры.НомерИсправления, "ЧЦ=3; ЧГ=0");
КонецЕсли;
РеквизитыОснований = РеквизитыОснований + ?(РеквизитыОснований = "", "", ", ")
+ "№ "+РеквизитыСчетаФактуры.НомерСчетаФактуры+" от "+Формат(РеквизитыСчетаФактуры.ДатаСчетаФактуры,"ДЛФ=ДД; ДП=--")+", с учетом исправления № "
+НомерИсправленияСчетаФактуры+" от "+Формат(РеквизитыСчетаФактуры.ДатаИсправления, "ДЛФ=ДД; ДП=--");

КонецЦикла;

ОбластьМакета.Параметры.РеквизитыОснований = РеквизитыОснований;

Если РеквизитыСФ.НомерИсправления = 0
ИЛИ НЕ РеквизитыСФ.Исправление Тогда
ОбластьМакета.Параметры.НомерИсправленияКорректировочного = "--";
Иначе
ОбластьМакета.Параметры.НомерИсправленияКорректировочного = РеквизитыСФ.НомерИсправления;
КонецЕсли;
Если НЕ РеквизитыСФ.Исправление Тогда
ОбластьМакета.Параметры.ДатаИсправленияКорректировочного = "--";
Иначе
ОбластьМакета.Параметры.ДатаИсправленияКорректировочного = Формат(РеквизитыСФ.Дата, "ДФ='дд ММММ гггг'") + " г.";
КонецЕсли;

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

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

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

Если ЗначениеЗаполнено(РеквизитыСФ.КППКонтрагента) Тогда
КПП = РеквизитыСФ.КППКонтрагента;
ИначеЕсли СведенияОПодразделенииПокупателя <> Неопределено Тогда
КПП = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОПодразделенииПокупателя, "КПП,", Ложь);
Иначе
КПП = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОПокупателе, "КПП,", Ложь);
КонецЕсли;

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

ОбластьМакета.Параметры.Валюта = ?(ЗначениеЗаполнено(ДанныеДляПечати.Валюта),
"Валюта: наименование, код " + ДанныеДляПечати.Валюта.НаименованиеПолное + ", " + ДанныеДляПечати.Валюта.Код,
"Валюта: наименование, код");

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

Если ВедетсяУчетНДСПоФЗ56 Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ИдентификаторГосКонтракта");
ШаблонЗаголовкаГосконтракт = НСтр("ru = 'Идентификатор государственного контракта, договора (соглашения)(при наличии): %1'");
ОбластьМакета.Параметры.ИдентификаторГосКонтракта = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонЗаголовкаГосконтракт, РеквизитыСФ.ИдентификаторГосКонтракта);
ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;

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

ОбластьМакета = Макет.ПолучитьОбласть("Строка");

ОбластьМакетаИтого = Макет.ПолучитьОбласть("Итого");
ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");

КоличествоСтрок = ДанныеДляПечати.ТабличнаяЧасть.Количество();
НомерСтроки = 0;

Для каждого СтрокаТабличнойЧасти Из ДанныеДляПечати.ТабличнаяЧасть Цикл

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

Если НЕ ЗначениеЗаполнено(СтрокаТабличнойЧасти.НаименованиеЕдиницыИзмерения) Тогда
СтрокаТабличнойЧасти.КоличествоДоИзменения    = 0;
СтрокаТабличнойЧасти.КоличествоПослеИзменения = 0;
СтрокаТабличнойЧасти.ЦенаДоИзменения          = 0;
СтрокаТабличнойЧасти.ЦенаПослеИзменения       = 0;
Иначе
Если СтрокаТабличнойЧасти.КоличествоДоИзменения = 0 Тогда
СтрокаТабличнойЧасти.ЦенаДоИзменения = 0;
ИначеЕсли СтрокаТабличнойЧасти.ЦенаДоИзменения = 0 Тогда
СтрокаТабличнойЧасти.ЦенаДоИзменения = Окр(СтрокаТабличнойЧасти.СтоимостьБезНДСДоИзменения / СтрокаТабличнойЧасти.КоличествоДоИзменения, 2);
КонецЕсли;
Если СтрокаТабличнойЧасти.КоличествоПослеИзменения = 0 Тогда
СтрокаТабличнойЧасти.ЦенаПослеИзменения = 0;
ИначеЕсли СтрокаТабличнойЧасти.ЦенаПослеИзменения = 0 Тогда
СтрокаТабличнойЧасти.ЦенаПослеИзменения = Окр(СтрокаТабличнойЧасти.СтоимостьБезНДСПослеИзменения / СтрокаТабличнойЧасти.КоличествоПослеИзменения, 2);
КонецЕсли;
Если СтрокаТабличнойЧасти.КоличествоДоИзменения = 0
И СтрокаТабличнойЧасти.КоличествоПослеИзменения = 0 Тогда
СтрокаТабличнойЧасти.НаименованиеЕдиницыИзмерения = "";
КонецЕсли;
КонецЕсли;

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

Если ЗначениеЗаполнено(СтрокаТабличнойЧасти.НаименованиеТовара) Тогда
НаименованиеНоменклатуры = СтрокаТабличнойЧасти.НаименованиеТовара;
Иначе
НаименованиеНоменклатуры = СтрокаТабличнойЧасти.Номенклатура;
КонецЕсли;

Если ДанныеДляПечати.ДатаСчетФактуры >= '20160701'
   И СтрокаТабличнойЧасти.СтавкаНДС = Перечисления.СтавкиНДС.НДС0
   И ЗначениеЗаполнено(СтрокаТабличнойЧасти.ТоварКодТНВЭД) Тогда
// Дополняем наименование товара информацией о коде ТН ВЭД
НаименованиеНоменклатуры = НаименованиеНоменклатуры
+ ", код ТН ВЭД " + СокрЛП(СтрокаТабличнойЧасти.ТоварКодТНВЭД);
КонецЕсли;

ОбластьМакета.Параметры.НаименованиеНоменклатуры = НаименованиеНоменклатуры;

Если НЕ ЗначениеЗаполнено(ОбластьМакета.Параметры.ЕдиницаИзмеренияКод) Тогда
ОбластьМакета.Параметры.ЕдиницаИзмеренияКод = "--";
ОбластьМакета.Параметры.НаименованиеЕдиницыИзмерения = "--";
КонецЕсли;

Если НЕ ЗначениеЗаполнено(ОбластьМакета.Параметры.КоличествоДоИзменения) Тогда
ОбластьМакета.Параметры.КоличествоДоИзменения = "--";
КонецЕсли;

Если НЕ ЗначениеЗаполнено(ОбластьМакета.Параметры.КоличествоПослеИзменения) Тогда
ОбластьМакета.Параметры.КоличествоПослеИзменения = "--";
КонецЕсли;
       
Если НЕ ЗначениеЗаполнено(ОбластьМакета.Параметры.ЦенаДоИзменения) Тогда
ОбластьМакета.Параметры.ЦенаДоИзменения = "--";
КонецЕсли;

Если НЕ ЗначениеЗаполнено(ОбластьМакета.Параметры.ЦенаПослеИзменения) Тогда
ОбластьМакета.Параметры.ЦенаПослеИзменения = "--";
КонецЕсли;
         
Если СтрокаТабличнойЧасти.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС Тогда
ОбластьМакета.Параметры.СтавкаНДС = "без НДС";
ОбластьМакета.Параметры.СуммаНДСДоИзменения = "без НДС";
ОбластьМакета.Параметры.СуммаНДСПослеИзменения = "без НДС";
ОбластьМакета.Параметры.РазницаНДСУвеличение = "--";
ОбластьМакета.Параметры.РазницаНДСУменьшение = "--";
КонецЕсли;

ОбластьМакета.Параметры.КодВидаТовара = "--";

// Проверим возможность вывода табличного документа
СтрокаСПодвалом = Новый Массив;
СтрокаСПодвалом.Добавить(ОбластьМакета);

Если НомерСтроки = КоличествоСтрок Тогда
// Если последняя строка, то должен поместится итог и подвал
СтрокаСПодвалом.Добавить(ОбластьМакетаИтого);
СтрокаСПодвалом.Добавить(ОбластьМакетаПодвал);
КонецЕсли;

Если НЕ ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, СтрокаСПодвалом) Тогда

Если КоличествоСтрок > 0 Тогда
// Вывод разделителя и заголовка таблицы на новой странице
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(ОбластьМакетаЗаголовокТаблицы);
КонецЕсли;

КонецЕсли;

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

КонецЦикла;

                                   
ОбластьМакетаИтого.Параметры.РазницаБезНДСУменьшение = ДанныеДляПечати.ТабличнаяЧасть.Итог("РазницаБезНДСУменьшение");
ОбластьМакетаИтого.Параметры.РазницаБезНДСУвеличение = ДанныеДляПечати.ТабличнаяЧасть.Итог("РазницаБезНДСУвеличение");
ОбластьМакетаИтого.Параметры.РазницаСНДСУменьшение   = ДанныеДляПечати.ТабличнаяЧасть.Итог("РазницаСНДСУменьшение");
ОбластьМакетаИтого.Параметры.РазницаСНДСУвеличение   = ДанныеДляПечати.ТабличнаяЧасть.Итог("РазницаСНДСУвеличение");
Если РеквизитыСФ.СчетФактураБезНДС Тогда
ОбластьМакетаИтого.Параметры.РазницаНДСУменьшение = "без НДС";
ОбластьМакетаИтого.Параметры.РазницаНДСУвеличение = "без НДС";
Иначе
ОбластьМакетаИтого.Параметры.РазницаНДСУменьшение = ДанныеДляПечати.ТабличнаяЧасть.Итог("РазницаНДСУменьшение");
ОбластьМакетаИтого.Параметры.РазницаНДСУвеличение = ДанныеДляПечати.ТабличнаяЧасть.Итог("РазницаНДСУвеличение");
КонецЕсли;
   
ТабДокумент.Вывести(ОбластьМакетаИтого);

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

КонецПроцедуры


Процедура ВывестиСчетФактуруВТабличныйДокумент(ТабДокумент, Макет, ДанныеДляПечати) Экспорт

Дата = ДанныеДляПечати.ДатаСчетФактуры;
ЭтоПечатьУПД = ДанныеДляПечати.Свойство("СтатусУПД");

БезПереходаПраваСобственности = Ложь;
Если ЭтоПечатьУПД И (ДанныеДляПечати.СтатусУПД = 2) Тогда
Если ДанныеДляПечати.Свойство("ПередачаНаРеализациюПоКомиссии")
И ДанныеДляПечати.ПередачаНаРеализациюПоКомиссии Тогда
БезПереходаПраваСобственности = Истина;
КонецЕсли;

Если ДанныеДляПечати.Свойство("ДокументОснование")
И ТипЗнч(ДанныеДляПечати.ДокументОснование) = Тип("ДокументСсылка.ПередачаТоваров") Тогда
БезПереходаПраваСобственности = Истина;
КонецЕсли;
КонецЕсли;

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

НужныСведенияОПодразделенииПокупателя = ДанныеДляПечати.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаРеализацию
ИЛИ ДанныеДляПечати.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАванс;

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

КонецЕсли;

// Выводим шапку
ВедетсяУчетНДСПоФЗ56 = УчетНДС.ВедетсяУчетНДСПоФЗ56(ДанныеДляПечати.Дата);
Если НЕ ЭтоПечатьУПД Тогда
Если ВедетсяУчетНДСПоФЗ56 Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ШапкаИнформация1137_625");
Иначе
ОбластьМакета = Макет.ПолучитьОбласть("ШапкаИнформация1137");
КонецЕсли;
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
Иначе
Если ВедетсяУчетНДСПоФЗ56 Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Шапка625");
Иначе
ОбластьМакета = Макет.ПолучитьОбласть("Шапка1137");
КонецЕсли;
КонецЕсли;

ОбластьМакета.Параметры.Заполнить(ДанныеДляПечати);

Если ЭтоПечатьУПД Тогда
Если ДанныеДляПечати.Исправление Тогда
ОбластьМакета.Параметры.НомерИсправления = Строка(ДанныеДляПечати.НомерИсправления);
ОбластьМакета.Параметры.ДатаИсправления  = Формат(Дата, "ДФ='дд ММММ гггг'") + " г.";
Иначе
ОбластьМакета.Параметры.НомерИсправления = "--";
ОбластьМакета.Параметры.ДатаИсправления  = "--";
КонецЕсли;
Иначе

Если ДанныеДляПечати.Исправление Тогда
ОбластьМакета.Параметры.НомерИсправления = "Исправление № " + Строка(ДанныеДляПечати.НомерИсправления)
+ " от " + Формат(Дата, "ДФ='дд ММММ гггг'") + " г.";
Иначе
ОбластьМакета.Параметры.НомерИсправления = "Исправление № -- от --";
КонецЕсли;
КонецЕсли;

Если БезПереходаПраваСобственности Тогда

ОбластьМакета.Параметры.ПредставлениеПоставщика = "--";
ОбластьМакета.Параметры.АдресПоставщика = "--";
ОбластьМакета.Параметры.ИННпоставщика = "--";

Иначе

ЗаголовокПоставщика      = ?(ЭтоПечатьУПД, "", "Продавец: ");
ЗаголовокАдресПоставщика = ?(ЭтоПечатьУПД, "", "Адрес: ");
ЗаголовокИННпоставщика   = ?(ЭтоПечатьУПД, "", "ИНН/КПП продавца: ");

КПППодразделения = "";

ИндексПодразделения = 0;
Если НЕ (ЭтоПечатьУПД И ДанныеДляПечати.СтатусУПД = 2) Тогда
// В УПД в статусе 2 не выводится индекс обособленного подразделения
Если ЗначениеЗаполнено(ДанныеДляПечати.Организация.ГоловнаяОрганизация) Тогда
ИндексПодразделения = ДанныеДляПечати.Организация.ЦифровойИндексОбособленногоПодразделения;
КонецЕсли;
КонецЕсли;
Если ИндексПодразделения <> 0 Тогда
ДанныеДляПечати.Номер = ДанныеДляПечати.Номер + "/" + ИндексПодразделения;
КонецЕсли;

Если ТипЗнч(СведенияОПоставщике) = Тип("Массив")  Тогда

ТекстПоставщика      = "";
ТекстАдресПоставщика = "";
ТекстИННПоставщика   = "";
Если ТипЗнч(ДанныеДляПечати.КПП) = Тип("Массив")
И ДанныеДляПечати.КПП.Количество() = СведенияОПоставщике.Количество() тогда
СведенияОКПП = ДанныеДляПечати.КПП;
Иначе
СведенияОКПП = Неопределено;
КонецЕсли;

Для Индекс = 0 По СведенияОПоставщике.ВГраница() Цикл

ДанныеПоставщика = СведенияОПоставщике[Индекс];

ТекстПоставщика = ТекстПоставщика + ?(ПустаяСтрока(ТекстПоставщика), "", ";")
+ ФормированиеПечатныхФорм.ОписаниеОрганизации(ДанныеПоставщика, "ПолноеНаименование,");
ТекстАдресПоставщика = ТекстАдресПоставщика + ?(ПустаяСтрока(ТекстАдресПоставщика), "", ";")
+ ФормированиеПечатныхФорм.ОписаниеОрганизации(ДанныеПоставщика, "ЮридическийАдрес,");
КПП = ?(СведенияОКПП <> Неопределено И СведенияОКПП[Индекс] <> Неопределено,
СведенияОКПП[Индекс],
ФормированиеПечатныхФорм.ОписаниеОрганизации(ДанныеПоставщика, "КПП,", Ложь));
ТекстИННПоставщика = ТекстИННПоставщика + ?(ПустаяСтрока(ТекстИННПоставщика), "", ";")
+ ФормированиеПечатныхФорм.ОписаниеОрганизации(ДанныеПоставщика, "ИНН,", Ложь)
+ ?(ЗначениеЗаполнено(КПП), "/" + КПП, "");

КонецЦикла;

Иначе

ТекстПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование,");
ТекстАдресПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ЮридическийАдрес,");

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

КонецЕсли;

ОбластьМакета.Параметры.ПредставлениеПоставщика = ЗаголовокПоставщика + ТекстПоставщика;
ОбластьМакета.Параметры.АдресПоставщика         = ЗаголовокАдресПоставщика + ТекстАдресПоставщика;
ОбластьМакета.Параметры.ИННпоставщика           = ЗаголовокИННпоставщика + ТекстИННпоставщика;

КонецЕсли;

Если ЭтоПечатьУПД Тогда
НомерНаПечатьСтрокой = ОбщегоНазначения.ПолучитьНомерНаПечать(ДанныеДляПечати);
ДатаНаПечатьСтрокой = Формат(ДанныеДляПечати.Дата, "ДФ='дд ММММ гггг'") + " г.";
ОбластьМакета.Параметры.Номер = НомерНаПечатьСтрокой;
ОбластьМакета.Параметры.Дата  = ДатаНаПечатьСтрокой;
ЗаголовокДляПечати = "Универсальный передаточный документ № " + НомерНаПечатьСтрокой + " от " +  ДатаНаПечатьСтрокой;
Иначе
Если ДанныеДляПечати.Исправление Тогда
ЗаголовокДляПечати = "Счет-фактура № " + ДанныеДляПечати.Номер + " от " + Формат(ДанныеДляПечати.Дата, "ДФ='дд ММММ гггг'");
Иначе
ЗаголовокДляПечати = ОбщегоНазначения.СформироватьЗаголовокДокумента(ДанныеДляПечати, "Счет-фактура") + " г.";
КонецЕсли;
ОбластьМакета.Параметры.Номер = ЗаголовокДляПечати;
КонецЕсли;

ТолькоУслуги = Истина;
Для каждого СтрокаТовар Из ДанныеДляПечати.ТабличнаяЧасть Цикл
Если (ТипЗнч(СтрокаТовар.Товар) = Тип("СправочникСсылка.Номенклатура") И НЕ СтрокаТовар.Товар.Услуга)
ИЛИ ТипЗнч(СтрокаТовар.Товар) = Тип("СправочникСсылка.ОсновныеСредства") Тогда
ТолькоУслуги = Ложь;
Прервать;
КонецЕсли;
КонецЦикла;

Если ДанныеДляПечати.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАванс
ИЛИ ДанныеДляПечати.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитента Тогда

ОбластьМакета.Параметры.ПредставлениеГрузоотправителя = ?(ЭтоПечатьУПД, "", "Грузоотправитель и его адрес: ") + "--";
ОбластьМакета.Параметры.ПредставлениеГрузополучателя  = ?(ЭтоПечатьУПД, "", "Грузополучатель и его адрес: ") + "--";

Иначе

Если ТолькоУслуги Тогда
ОбластьМакета.Параметры.ПредставлениеГрузоотправителя = ?(ЭтоПечатьУПД, "", "Грузоотправитель и его адрес: ") + "--";
ОбластьМакета.Параметры.ПредставлениеГрузополучателя  = ?(ЭтоПечатьУПД, "", "Грузополучатель и его адрес: ") + "--";
Иначе
Если ТипЗнч(ДанныеДляПечати.Грузоотправитель) = Тип("Массив")  Тогда
СведенияОГрузоотправителе = Новый Массив;
Для каждого Грузоотправитель Из ДанныеДляПечати.Грузоотправитель Цикл
СведенияОГрузоотправителе.Добавить(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Грузоотправитель, Дата));
КонецЦикла;
Иначе
СведенияОГрузоотправителе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(
?(БезПереходаПраваСобственности, ДанныеДляПечати.Поставщик,
?(ДанныеДляПечати.Грузоотправитель = "он же", Неопределено, ДанныеДляПечати.Грузоотправитель)), Дата);
КонецЕсли;

ЗаголовокГрузоотправителя = ?(ЭтоПечатьУПД, "", "Грузоотправитель и его адрес: ");

Если ТипЗнч(СведенияОГрузоотправителе) = Тип("Массив") Тогда
ТекстГрузоотправителя = "";
Для каждого ДанныеГрузоотправителя Из СведенияОГрузоотправителе Цикл
ТекстГрузоотправителя = ТекстГрузоотправителя + ?(ПустаяСтрока(ТекстГрузоотправителя), "", ";")
+ ФормированиеПечатныхФорм.ОписаниеОрганизации(ДанныеГрузоотправителя,
"ПолноеНаименование, ФактическийАдрес,");
КонецЦикла;
Иначе
ТекстГрузоотправителя = ?(НЕ ЗначениеЗаполнено(СведенияОГрузоотправителе),
"--",
?(ДанныеДляПечати.Грузоотправитель = "он же", "он же",
ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОГрузоотправителе, 
"ПолноеНаименование, ФактическийАдрес,")));
КонецЕсли;

ОбластьМакета.Параметры.ПредставлениеГрузоотправителя = ЗаголовокГрузоотправителя + ТекстГрузоотправителя;

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

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

ЗаголовокГрузополучателя = ?(ЭтоПечатьУПД, "", "Грузополучатель и его адрес: ");
Если ТипЗнч(СведенияОГрузополучателе) = Тип("Массив") Тогда
ТекстГрузополучателя = "";
Для каждого ДанныеГрузополучателя Из СведенияОГрузополучателе Цикл
ТекстГрузополучателя = ТекстГрузополучателя + ?(ПустаяСтрока(ТекстГрузополучателя), "", ";")
+ ФормированиеПечатныхФорм.ОписаниеОрганизации(ДанныеГрузополучателя,
"ПолноеНаименование, ФактическийАдрес,");
КонецЦикла;
Иначе
Если ДанныеДляПечати.Свойство("АдресДоставки")
И НЕ ПустаяСтрока(ДанныеДляПечати.АдресДоставки) Тогда
ТекстГрузополучателя = ?(НЕ ЗначениеЗаполнено(ДанныеДляПечати.Грузополучатель),
ДанныеДляПечати.АдресДоставки,
ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОГрузополучателе,
"ПолноеНаименование") + ", " + ДанныеДляПечати.АдресДоставки);
Иначе
ТекстГрузополучателя = ?(НЕ ЗначениеЗаполнено(ДанныеДляПечати.Грузополучатель),
"--",
ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОГрузополучателе,
"ПолноеНаименование, ФактическийАдрес,"));
КонецЕсли;
КонецЕсли;
ОбластьМакета.Параметры.ПредставлениеГрузополучателя = ЗаголовокГрузополучателя + ТекстГрузополучателя;

КонецЕсли;

КонецЕсли;

СтрокаПоДокументу = "";
Если ДанныеДляПечати.Свойство("ТаблицаДатОплат") Тогда
Для каждого ПараметрыДокументаОплаты Из ДанныеДляПечати.ТаблицаДатОплат Цикл

Если НЕ ЗначениеЗаполнено(ПараметрыДокументаОплаты.НомерПлатежноРасчетногоДокумента)
И НЕ ЗначениеЗаполнено(ПараметрыДокументаОплаты.ДатаПлатежноРасчетногоДокумента) Тогда
Продолжить;
КонецЕсли;
СтрокаПоДокументу = СтрокаПоДокументу
+ ?(ПустаяСтрока(СтрокаПоДокументу), ?(ЭтоПечатьУПД, "", "К платежно-расчетному документу № "),", ")
+ ПараметрыДокументаОплаты.НомерПлатежноРасчетногоДокумента
+ " от " + Формат(ПараметрыДокументаОплаты.ДатаПлатежноРасчетногоДокумента, "ДФ=dd.MM.yyyy") + " г.";

КонецЦикла;
КонецЕсли;
Если ПустаяСтрока(СтрокаПоДокументу) Тогда
Если ДанныеДляПечати.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАванс
ИЛИ ДанныеДляПечати.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитента Тогда
СтрокаПоДокументу = ?(ЭтоПечатьУПД, "", "К платежно-расчетному документу № ") + "-- от --";
Иначе
СтрокаПоДокументу = ?(ЭтоПечатьУПД, "", "К платежно-расчетному документу № ") + "   от";
КонецЕсли;
КонецЕсли;
Если ЭтоПечатьУПД И ДанныеДляПечати.СтатусУПД = 2 Тогда
// В УПД в статусе 2 ставятся прочерки показатели, установленные в качестве обязательных исключительно для счета-фактуры:
// - «К платежно-расчетному документу» (строка 7);
СтрокаПоДокументу = "--";
КонецЕсли;
ОбластьМакета.Параметры.ПоДокументу = СтрокаПоДокументу;

Если БезПереходаПраваСобственности Тогда

ОбластьМакета.Параметры.ПредставлениеПокупателя = "--";
ОбластьМакета.Параметры.АдресПокупателя = "--";
ОбластьМакета.Параметры.ИННПокупателя = "--";

Иначе

ЗаголовокПокупателя      = ?(ЭтоПечатьУПД, "", "Покупатель: ");
ЗаголовокАдресПокупателя = ?(ЭтоПечатьУПД, "", "Адрес: ");
ЗаголовокИННПокупателя   = ?(ЭтоПечатьУПД, "", "ИНН/КПП покупателя: ");

Если ТипЗнч(СведенияОПокупателе) = Тип("Массив") Тогда

ТекстПокупателя      = "";
ТекстАдресПокупателя = "";
ТекстИННПокупателя   = "";

Для Индекс = 0 По СведенияОПокупателе.ВГраница() Цикл

ДанныеОПокупателе = СведенияОПокупателе[Индекс];
ДанныеОПодразделенииПокупателя = СведенияОПодразделенииПокупателя[Индекс];

ТекстПокупателя = ТекстПокупателя + ?(ПустаяСтрока(ТекстПокупателя), "", ";")
+ ФормированиеПечатныхФорм.ОписаниеОрганизации(ДанныеОПокупателе, "ПолноеНаименование,");
ТекстАдресПокупателя = ТекстАдресПокупателя + ?(ПустаяСтрока(ТекстАдресПокупателя), "", ";")
+ ФормированиеПечатныхФорм.ОписаниеОрганизации(ДанныеОПокупателе, "ЮридическийАдрес,");
Если ДанныеОПодразделенииПокупателя <> Неопределено Тогда
КПП = ФормированиеПечатныхФорм.ОписаниеОрганизации(ДанныеОПодразделенииПокупателя, "КПП,", Ложь);
Иначе
КПП = ФормированиеПечатныхФорм.ОписаниеОрганизации(ДанныеОПокупателе, "КПП,", Ложь);
КонецЕсли;
ТекстИННПокупателя = ТекстИННПокупателя + ?(ПустаяСтрока(ТекстИННПокупателя), "", ";")
+ ФормированиеПечатныхФорм.ОписаниеОрганизации(ДанныеОПокупателе, "ИНН,", Ложь)
+ ?(ЗначениеЗаполнено(КПП), "/" + КПП, "");

КонецЦикла;

Иначе

ТекстПокупателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ПолноеНаименование,");
ТекстАдресПокупателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ЮридическийАдрес,");

Если ДанныеДляПечати.Свойство("КППКонтрагента") И ЗначениеЗаполнено(ДанныеДляПечати.КППКонтрагента) Тогда
КПП = ДанныеДляПечати.КППКонтрагента;
ИначеЕсли СведенияОПодразделенииПокупателя <> Неопределено Тогда
КПП = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПодразделенииПокупателя, "КПП,", Ложь);
Иначе
КПП = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "КПП,", Ложь);
КонецЕсли;
ТекстИННПокупателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ИНН,", Ложь)
+ ?(ЗначениеЗаполнено(КПП), "/" + КПП, "");

КонецЕсли;

ОбластьМакета.Параметры.ПредставлениеПокупателя = ЗаголовокПокупателя + ТекстПокупателя;
ОбластьМакета.Параметры.АдресПокупателя         = ЗаголовокАдресПокупателя + ТекстАдресПокупателя;
ОбластьМакета.Параметры.ИННПокупателя           = ЗаголовокИННПокупателя + ТекстИННПокупателя;

КонецЕсли;

ОбластьМакета.Параметры.Валюта = ?(ЭтоПечатьУПД, "", "Валюта: наименование, код ")
+ ?(ЗначениеЗаполнено(ДанныеДляПечати.Валюта),
ДанныеДляПечати.Валюта.НаименованиеПолное + ", " + ДанныеДляПечати.Валюта.Код, "");

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

Если ВедетсяУчетНДСПоФЗ56 Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ИдентификаторГосКонтракта");
Если ЭтоПечатьУПД Тогда
ОбластьМакета.Параметры.ИдентификаторГосКонтракта = ДанныеДляПечати.ИдентификаторГосКонтракта;
Иначе
ШаблонЗаголовкаГосконтракт = НСтр("ru = 'Идентификатор государственного контракта, договора (соглашения)(при наличии): %1'");
ОбластьМакета.Параметры.ИдентификаторГосКонтракта = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонЗаголовкаГосконтракт, ДанныеДляПечати.ИдентификаторГосКонтракта);
КонецЕсли;
ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;

Если НЕ ЭтоПечатьУПД Тогда
Если ТипЗнч(ДанныеДляПечати.Ссылка) = Тип("ДокументСсылка.СчетФактураВыданный")
И ТипЗнч(ДанныеДляПечати.Покупатель) = Тип("СправочникСсылка.Контрагенты")
И (ТипЗнч(ДанныеДляПечати.Поставщик) = Тип("СправочникСсылка.Контрагенты")
ИЛИ ТипЗнч(ДанныеДляПечати.Поставщик) = Тип("Массив")) Тогда

УчетНДС.ВывестиРеквизитыКомиссионера(ДанныеДляПечати.Организация, ДанныеДляПечати.Поставщик, ДанныеДляПечати.Покупатель, Дата, Макет, ТабДокумент);

КонецЕсли;
КонецЕсли;

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

// Дополнительная подготовка данных для вывода в табличную часть
ВыборкаСтрокТовары = ДанныеДляПечати.ТабличнаяЧасть;
ВыборкаСтрокТовары.Колонки.Добавить("СуммаБезНДС");
ВыборкаСтрокТовары.Колонки.Добавить("СуммаСНДС");

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

Для Каждого Строчка Из ВыборкаСтрокТовары Цикл

Строчка.СуммаСНДС = Строчка.Сумма + ?(Строчка.СуммаВключаетНДС, 0, Строчка.СуммаНДС);
Строчка.СуммаБезНДС = Строчка.СуммаСНДС - Строчка.СуммаНДС;

Если ДанныеДляПечати.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаРеализацию И
(Строчка.СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120
ИЛИ Строчка.СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118
ИЛИ Строчка.СтавкаНДС = Перечисления.СтавкиНДС.НДС10_110) Тогда
Если (НЕ Строчка.СуммаВключаетНДС) ИЛИ Строчка.Цена = 0 Тогда
Строчка.Цена = Окр(Строчка.СуммаСНДС / Строчка.Количество, 2);
КонецЕсли;
Иначе
Если Строчка.СуммаВключаетНДС Тогда
Строчка.Цена = 0;
КонецЕсли;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Строчка.ЕдиницаИзмерения) Тогда
Строчка.Количество = 0;
Строчка.Цена = 0;
ИначеЕсли Строчка.Количество = 0 Тогда
Строчка.Цена = 0;
ИначеЕсли Строчка.Цена = 0 Тогда
Строчка.Цена = Окр(Строчка.СуммаБезНДС / Строчка.Количество, 2);
КонецЕсли;

Строчка.ТоварКод = ?(ВыводитьКоды, Строчка[КолонкаТоварКод], "");

Если ДанныеДляПечати.Дата >= '20160701'
И Строчка.СтавкаНДС = Перечисления.СтавкиНДС.НДС0
И ЗначениеЗаполнено(Строчка.ТоварКодТНВЭД) Тогда
// Дополняем наименование товара информацией о коде ТН ВЭД
Строчка.ТоварНаименование = Строчка.ТоварНаименование + ", код ТН ВЭД " + СокрЛП(Строчка.ТоварКодТНВЭД);
КонецЕсли;

КонецЦикла;

КолонкиДляСвертки = ?(ВыборкаСтрокТовары.Колонки.Найти("Контрагент") <> Неопределено, "Контрагент,", "")
+ "Товар, ТоварНаименование,ТоварКод, ЕдиницаИзмерения, ЕдиницаИзмеренияКод, Цена, СтавкаНДС,"
+ "НомерГТД, ПредставлениеГТД, СтранаПроисхождения, СтранаПроисхожденияКод, ПредставлениеСтраны";
ВыборкаСтрокТовары.Свернуть(КолонкиДляСвертки, "Количество, Сумма, СуммаНДС, СуммаСНДС, СуммаБезНДС, НомерСтроки");

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

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

НомерСтроки     = 0;
КоличествоСтрок = ВыборкаСтрокТовары.Количество();

Для Каждого Строчка Из ВыборкаСтрокТовары Цикл

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

ОбластьМакета.Параметры.Заполнить(Строчка);

Если НЕ ЗначениеЗаполнено(Строчка.ТоварНаименование) Тогда
ОбластьМакета.Параметры.ТоварНаименование = Строчка.Товар;
КонецЕсли;
ОбластьМакета.Параметры.ТоварНаименование = СокрЛП(ОбластьМакета.Параметры.ТоварНаименование);

Если ДанныеДляПечати.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаРеализацию Тогда
ОбластьМакета.Параметры.Стоимость = Строчка.СуммаБезНДС;
ОбластьМакета.Параметры.Цена      = Строчка.Цена;
Иначе
Если ДанныеДляПечати.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НалоговыйАгент
ИЛИ ДанныеДляПечати.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаСуммовуюРазницу Тогда
ОбластьМакета.Параметры.Стоимость = Строчка.СуммаБезНДС;
Иначе
ОбластьМакета.Параметры.Стоимость = 0;
КонецЕсли;
ОбластьМакета.Параметры.Количество = 0;
ОбластьМакета.Параметры.Цена       = 0;
КонецЕсли;

ОбластьМакета.Параметры.Всего     = Строчка.СуммаСНДС;
ОбластьМакета.Параметры.СтавкаНДС = Строчка.СтавкаНДС;

Если Строчка.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС Тогда
ОбластьМакета.Параметры.СтавкаНДС = "без НДС";
ОбластьМакета.Параметры.СуммаНДС  = "без НДС";
КонецЕсли;

Если ДанныеДляПечати.ВидСчетаФактуры <> Перечисления.ВидСчетаФактурыВыставленного.НаАванс
И ДанныеДляПечати.ВидСчетаФактуры <> Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитента Тогда
ОбластьМакета.Параметры.Акциз = "без акциза";
КонецЕсли;

Если Строка(Строчка.ПредставлениеСтраны) = "Россия"
ИЛИ Строка(Строчка.ПредставлениеСтраны) = "Российская Федерация"
ИЛИ Строчка.СтранаПроисхождения = Справочники.КлассификаторСтранМира.РОССИЯ Тогда
ОбластьМакета.Параметры.ПредставлениеСтраны    = "--";
ОбластьМакета.Параметры.СтранаПроисхожденияКод = "--";
ОбластьМакета.Параметры.ПредставлениеГТД       = "--";
Иначе
Если ЗначениеЗаполнено(Строчка.СтранаПроисхождения) Тогда
ОбластьМакета.Параметры.ПредставлениеСтраны  = СокрЛП(Строчка.СтранаПроисхождения.Наименование);
Иначе
ОбластьМакета.Параметры.СтранаПроисхожденияКод = "--";
ОбластьМакета.Параметры.ПредставлениеСтраны    = "--";
ОбластьМакета.Параметры.ПредставлениеГТД       = "--";
КонецЕсли;
КонецЕсли;

// Проставляем прочерки в незаполненные графы в соответствии с Постановлением
Если ДанныеДляПечати.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАванс
ИЛИ ДанныеДляПечати.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитента Тогда

ОбластьМакета.Параметры.ЕдиницаИзмерения    = "--";
ОбластьМакета.Параметры.ЕдиницаИзмеренияКод = "--";

ОбластьМакета.Параметры.Количество = "--";
ОбластьМакета.Параметры.Цена       = "--";
ОбластьМакета.Параметры.Стоимость  = "--";
ОбластьМакета.Параметры.Акциз      = "--";

ОбластьМакета.Параметры.СтранаПроисхожденияКод = "--";
ОбластьМакета.Параметры.ПредставлениеСтраны    = "--";
ОбластьМакета.Параметры.ПредставлениеГТД       = "--";

Иначе

Если НЕ ЗначениеЗаполнено(ОбластьМакета.Параметры.ЕдиницаИзмерения) Тогда
ОбластьМакета.Параметры.ЕдиницаИзмерения    = "--";
ОбластьМакета.Параметры.ЕдиницаИзмеренияКод = "--";
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьМакета.Параметры.ЕдиницаИзмеренияКод) Тогда
ОбластьМакета.Параметры.ЕдиницаИзмеренияКод = "--";
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьМакета.Параметры.Количество) Тогда
ОбластьМакета.Параметры.Количество = "--";
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьМакета.Параметры.Цена) Тогда
ОбластьМакета.Параметры.Цена = "--";
КонецЕсли;

КонецЕсли;

Если ЭтоПечатьУПД И ДанныеДляПечати.СтатусУПД = 2 Тогда

// Ставим прочерки в графах, которые установленные в качестве обязательных исключительно для счета-фактуры
//- «В том числе сумма акциза» (графа 6);
//- «Налоговая ставка» (графа 7);
//- «Цифровой код страны происхождения товара» (графа 10);
//- «Краткое наименование страны происхождения товара» (графа 10а);
//- «Номер таможенной декларации» (графа 11).

ОбластьМакета.Параметры.Акциз = "--";
ОбластьМакета.Параметры.СтавкаНДС = "--";
ОбластьМакета.Параметры.СуммаНДС = ?(Строчка.СуммаНДС <> 0 , Строчка.СуммаНДС, "--");
ОбластьМакета.Параметры.СтранаПроисхожденияКод = "--";
ОбластьМакета.Параметры.ПредставлениеСтраны = "--";
ОбластьМакета.Параметры.ПредставлениеГТД = "--";

КонецЕсли;

ОбластьМакета.Параметры.КодВидаТовара = "--";

// Проверим возможность вывода табличного документа
СтрокаСПодвалом = Новый Массив;
СтрокаСПодвалом.Добавить(ОбластьМакета);
Если НомерСтроки = КоличествоСтрок Тогда
// Если последняя строка, то должен поместится итог и подвал
СтрокаСПодвалом.Добавить(ОбластьМакетаИтого);
СтрокаСПодвалом.Добавить(ОбластьМакетаПодвал);
Если ЭтоПечатьУПД Тогда
СтрокаСПодвалом.Добавить(ОбластьМакетаПодвалНакладной);
КонецЕсли;
КонецЕсли;

#Если Сервер ИЛИ ВнешнееСоединение Тогда
РезультатПроверкиВывода = ФормированиеПечатныхФормСервер.ПроверитьВыводТабличногоДокумента(ТабДокумент, СтрокаСПодвалом);
#ИначеЕсли ТолстыйКлиентОбычноеПриложение Тогда
РезультатПроверкиВывода = ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, СтрокаСПодвалом);
#КонецЕсли

Если НЕ РезультатПроверкиВывода Тогда

Если КоличествоСтрок > 0 Тогда
// Вывод разделителя и заголовка таблицы на новой странице
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(ОбластьМакетаЗаголовокТаблицы);
КоличествоСтраниц = КоличествоСтраниц + 1;
КонецЕсли;

КонецЕсли;

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

КонецЦикла;

КоличествоЛистов = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Документ составлен на%1%2 %3'"), Символы.ПС, КоличествоСтраниц,
ОбщегоНазначения.ФормаМножественногоЧисла(
НСтр("ru = 'листе'"), НСтр("ru = 'листах'"), НСтр("ru = 'листах'"), КоличествоСтраниц));
ДанныеДляПечати.Вставить("КоличествоЛистов", КоличествоЛистов);

Если КоличествоСтрок > 0 Тогда
ТабДокумент.Область(ТабДокумент.ВысотаТаблицы,,ТабДокумент.ВысотаТаблицы,).ВместеСоСледующим = Истина;
КонецЕсли;

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

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

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

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

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

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

// Устанавливаем параметры печати и колонтитулы
ТабДокумент.ВерхнийКолонтитул.Выводить          = Истина;
ТабДокумент.ВерхнийКолонтитул.НачальнаяСтраница = 2;
ТабДокумент.ВерхнийКолонтитул.ВертикальноеПоложение = ВертикальноеПоложение.Низ;
ТабДокумент.ВерхнийКолонтитул.ТекстСлева   = ЗаголовокДляПечати;
ТабДокумент.ВерхнийКолонтитул.ТекстСправа  = "Лист [&НомерСтраницы]";

КонецПроцедуры









Не могу разобраться какой код и куда вставить? во вложении снимок макета куда вставил параметр "Артикул"

wise

(3) посмотри что "УчетНДС.СобратьДанныеДляПечатиСчетФактурыВыданного(Ссылка, ДанныеДляПечати, УчетнаяПолитика);" заполняет в ДанныеДляПечати
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

happynattion

Цитата: wise от 29 ноя 2018, 10:37
(3) посмотри что "УчетНДС.СобратьДанныеДляПечатиСчетФактурыВыданного(Ссылка, ДанныеДляПечати, УчетнаяПолитика);" заполняет в ДанныеДляПечати
Можно по подробней, не совсем понимаю(

wise

Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

happynattion

Цитата: wise от 29 ноя 2018, 10:54
(5) отладчик используй.
или F12
Кнопки в отладчике шагнуть не активные. В чем можеть быть проблема?

Добавлено: 29 ноя 2018, 11:21


Цитата: wise от 29 ноя 2018, 10:54
(5) отладчик используй.
или F12
как понять что заполняет Данные для печати?

antoneus

ЦитироватьКнопки в отладчике шагнуть не активные. В чем можеть быть проблема?

Думаю, ответ можно найти тут


happynattion

Цитата: wise от 29 ноя 2018, 10:37
(3) посмотри что "УчетНДС.СобратьДанныеДляПечатиСчетФактурыВыданного(Ссылка, ДанныеДляПечати, УчетнаяПолитика);" заполняет в ДанныеДляПечати
А причем тут этот код?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск