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