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