1c:nakladn
// Процедура осуществляет печать документа.
//
функция Печать() экспорт
БезУслуг = Ложь;
ЕдиницаИзмеренияВеса = Константы.ЕдиницаИзмеренияВеса.Получить();
ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул тогда
ТоварКод = "Артикул";
иначе
ТоварКод = "Код";
конецесли;
Запрос = новый Запрос;
Запрос.УстановитьПараметр("ДатаСреза", СсылкаНаОбъект.Дата);
Запрос.УстановитьПараметр("СтруктурнаяЕдиница", СсылкаНаОбъект.Склад);
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
Запрос.УстановитьПараметр("ПустойКонтрагент", Справочники.Контрагенты.ПустаяСсылка());
Запрос.Текст =
"ВЫБРАТЬ
| Номер,
| Дата КАК ДатаДокумента,
| Организация,
| Организация КАК ЮрФизЛицо,
| Организация КАК Поставщик,
| Организация КАК Контрагент,
| Организация КАК Руководители,
| АдресДоставки КАК АдресДоставки,
| ВЫБОР КОГДА Грузополучатель = &ПустойКонтрагент
| ТОГДА Контрагент
| ИНАЧЕ Грузополучатель КОНЕЦ КАК Грузополучатель,
| ВЫБОР КОГДА Грузоотправитель = &ПустойКонтрагент
| ТОГДА Организация
| ИНАЧЕ Грузоотправитель КОНЕЦ КАК Грузоотправитель,
| БанковскийСчетОрганизации КАК БанковскийСчет,
| Контрагент КАК Покупатель,
| Контрагент КАК Плательщик,
| Сделка,
| ДоговорКонтрагента.Представление КАК Основание,
| ДоговорКонтрагента.ВедениеВзаиморасчетов КАК ВедениеВзаиморасчетов,
| ОтветственныеЛица.ФизическоеЛицо КАК ОтветственноеЛицо,
| Подразделение,
| ВалютаДокумента,
| КурсВзаиморасчетов КАК Курс,
| КратностьВзаиморасчетов КАК Кратность,
| УчитыватьНДС,
| СуммаВключаетНДС,
| ОтпускРазрешил,
| ОтпускПроизвел,
| ДоверенностьНомер,
| ДоверенностьДата,
| ДоверенностьВыдана,
| ДоверенностьЧерезКого
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|
|ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.ОтветственныеЛица.СрезПоследних(&ДатаСреза, СтруктурнаяЕдиница = &СтруктурнаяЕдиница) КАК ОтветственныеЛица
|ПО
| ОтветственныеЛица.СтруктурнаяЕдиница = РеализацияТоваровУслуг.Склад
|
|ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
|";
Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();
Запрос = новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
// Вычислим курс документа для печати
если СсылкаНаОбъект.ДоговорКонтрагента.РасчетыВУсловныхЕдиницах и СсылкаНаОбъект.ДоговорКонтрагента.ВестиПоДокументамРасчетовСКонтрагентом тогда
ЗапросКурсАванса = новый Запрос;
ЗапросКурсАванса.УстановитьПараметр("ДокументСсылка", СсылкаНаОбъект);
ЗапросКурсАванса.Текст =
"ВЫБРАТЬ
| Док.СуммаВзаиморасчетов,
| Док.СуммаРегл
|ИЗ
| Документ.РеализацияТоваровУслуг.ДокументыРасчетовСКонтрагентом КАК Док
|ГДЕ Док.Ссылка = &ДокументСсылка
|ИТОГИ СУММА(СуммаВзаиморасчетов), СУММА(СуммаРегл) ПО ОБЩИЕ";
Выборка = ЗапросКурсАванса.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
если Выборка.Следующий() тогда
КурсОплаты = ?(Выборка.СуммаВзаиморасчетов = 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");
ТабДокумент.Вывести(ОбластьПодвала);
возврат ТабДокумент;
конецфункции // Печать
1c/nakladn.txt · Last modified: 2008/04/07 20:04 by 127.0.0.1