![]() |
|
Вывод на печать | ☑ | ||
---|---|---|---|---|
0
Начинающий_13
04.05.15
✎
13:44
|
Здравствуйте
Не вижу ошибки... Где ляп сделал? Ввел в документ 120 строк. При выводе на пкчать КОЛИЧЕСТВОМЕСТ и МАССАГРУЗА по странице слаживается, правильно только на первой странице и последней. КОЛИЧЕСТВО ТОВАРА идет правильно. Алгоритм вывода не печать привожу полный Функция ПечатьТТН(МассивОбъектов, ОбъектыПечати, НазваниеМакета) //// Получаем данные по запросу к шапке документа ЗапросШапка = Новый Запрос(); ЗапросШапка.УстановитьПараметр("МассивОбъектов", МассивОбъектов); ЗапросШапка.Текст = ПолучитьТекстЗапросаДляФормированияПечатнойФормыШапка(); ////ШапкаДокументаУДАЛЯТЬ = ЗапросШапка.Выполнить().Выгрузить(); ШапкаДокумента = ЗапросШапка.Выполнить().Выбрать(); //// Получаем данные по запросу к табличным частям документа ЗапросТабличныеЧастиДокумента = Новый Запрос(); ЗапросТабличныеЧастиДокумента.УстановитьПараметр("МассивОбъектов", МассивОбъектов); ЗапросТабличныеЧастиДокумента.Текст = ПолучитьТекстЗапросаДляФормированияПечатнойФормыТабличныеЧасти(); ТабличныеЧастиДокумента = ЗапросТабличныеЧастиДокумента.Выполнить().Выгрузить(); КоличествоСтрок = ТабличныеЧастиДокумента.Количество(); //// --------------------------------------------------------------------------------------- ТабличныйДокумент = Новый ТабличныйДокумент; ПервыйДокумент = Истина; Пока ШапкаДокумента.Следующий() Цикл Если Не ПервыйДокумент Тогда ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ПервыйДокумент = Ложь; НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1; Если НазваниеМакета = "ТТН_Вертикальная" Тогда ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПоступлениеОтПоставщика_ТТН_Вертикальная"; Макет = УправлениеПечатью.МакетПечатнойФормы("ОбщийМакет.ПФ_MXL_ТТН_Вертикальная_2009"); ВертикальнаяФорма = Истина; ИначеЕсли НазваниеМакета = "ТТН_ВертикальнаяСПриложением" Тогда ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПоступлениеОтПоставщика_ТТН_ВертикальнаяСПриложением"; Макет = УправлениеПечатью.МакетПечатнойФормы("ОбщийМакет.ПФ_MXL_ТТН_Вертикальная_2009"); ВертикальнаяФорма = Истина; ИначеЕсли НазваниеМакета = "ТТН_Горизонтальная" Тогда ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПоступлениеОтПоставщика_ТТН_Горизонтальная"; Макет = УправлениеПечатью.МакетПечатнойФормы("ОбщийМакет.ПФ_MXL_ТТН_Горизонтальная_2009"); ВертикальнаяФорма = Ложь; ИначеЕсли НазваниеМакета = "ТТН_ГоризонтальнаяСПриложением" Тогда ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПоступлениеОтПоставщика_ТТН_ГоризонтальнаяСПриложением"; Макет = УправлениеПечатью.МакетПечатнойФормы("ОбщийМакет.ПФ_MXL_ТТН_Горизонтальная_2009"); ВертикальнаяФорма = Ложь; КонецЕсли; ТабДок = ТабличныйДокумент; //// Зададим параметры макета ТабДок.ПолеСверху = 5; ТабДок.ПолеСлева = 20; // Было 25 ТабДок.ПолеСнизу = 5; // Было 20 ТабДок.ПолеСправа = 0; ТабДок.РазмерКолонтитулаСверху = 0; ТабДок.РазмерКолонтитулаСнизу = 0; ТабДок.ОриентацияСтраницы = ?(ВертикальнаяФорма, ОриентацияСтраницы.Портрет, ОриентацияСтраницы.Ландшафт); ТабДок.АвтоМасштаб = Истина; //// Сведения накладной СтруктураДанныхНакладной = ШапкаДокумента.ДанныеНакладной.Получить(); //// Сведения об организации СведенияОбОрганизации = МА_ПериодическиеРеквизиты.СведенияОбОрганизации(ШапкаДокумента.ДатаДокумента ); //// Области ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьПриложение = Макет.ПолучитьОбласть("Приложение"); ОбластьШапкаТовары = Макет.ПолучитьОбласть("ШапкаТовары"); ОбластьСтрокаТовары = Макет.ПолучитьОбласть("СтрокаТовары"); ОбластьСтрокаПриложение = Макет.ПолучитьОбласть("СтрокаПриложение"); ОбластьИтого = Макет.ПолучитьОбласть("Итого"); ОбластьИтогоПоСтранице = Макет.ПолучитьОбласть("ИтогоПоСтранице"); ОбластьПриложениеПодвал = Макет.ПолучитьОбласть("ПриложениеПодвал"); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); //// Итоги //// инициализация итогов по странице ИтогоСтраницаКоличество = 0; ИтогоСтраницаСтоимость = 0; ИтогоСтраницаСуммаНДС = 0; ИтогоСтраницаСтоимостьСНДС = 0; ИтогоСтраницаКоличествоМест = 0; ИтогоСтраницаМассаГруза = 0; //// инициализация итогов по документу ИтогоКоличество = 0; ИтогоСтоимость = 0; ИтогоСуммаНДС = 0; ИтогоСтоимостьСНДС = 0; ИтогоКоличествоМест = 0; ИтогоМассаГруза = 0; НомерСтраницы = 1; Ном = 0; МассивВыводимыхОбластей = Новый Массив; // Формирование шапки ОбластьШапка.Параметры.ГрузоотправительУНП = " 1 "; ОбластьШапка.Параметры.ГрузополучательУНП = " 2 "; областьШапка.Параметры.ЗаказчикУНП = " 3 "; ОбластьШапка.Параметры.ДатаДокумента = " 4 "; ОбластьШапка.Параметры.Грузоотправитель = " 5 "; ОбластьШапка.Параметры.Грузополучатель = " 6 "; ОбластьШапка.Параметры.ЗаказчикПеревозки = " 7 "; ОбластьШапка.Параметры.ОснованиеОтпуска = " 8 "; ОбластьШапка.Параметры.Автомобиль = " 9 "; ОбластьШапка.Параметры.Прицеп = " 10 "; ОбластьШапка.Параметры.ПутевойЛист = " 11 "; ОбластьШапка.Параметры.ВладелецАвтомобиля = " 12 "; ОбластьШапка.Параметры.Водитель = " 13 "; ОбластьШапка.Параметры.ПунктПогрузки = " 14 "; ОбластьШапка.Параметры.ПунктРазгрузки = " 15 "; //// формирование общего подвала ОбластьПодвал.Параметры.ОтпускРазрешил = " 16 "; ОбластьПодвал.Параметры.СдалГрузоотправитель = " 17 "; ОбластьПодвал.Параметры.ТоварПринял = " 18 "; ОбластьПодвал.Параметры.ДоверенностьДатаНомер = " 19 "; ОбластьПодвал.Параметры.ДоверенностьОрганизация = " 20 "; ОбластьПодвал.Параметры.ПринялГрузополучатель = " 21 "; ОбластьПодвал.Параметры.ДатаПрибытияПогрузка = " 22 "; ОбластьПодвал.Параметры.ДатаПрибытияРазгрузка = " 23 "; ОбластьПодвал.Параметры.ДатаУбытияПогрузка = " 24 "; ОбластьПодвал.Параметры.ДатаУбытияРазгрузка = " 25 "; ОбластьПодвал.Параметры.ИсполнительПогрузка = " 26 "; ОбластьПодвал.Параметры.ИсполнительРазгрузка = " 27 "; ОбластьПодвал.Параметры.СпособРаботПогрузка = " 28 "; ОбластьПодвал.Параметры.СпособРаботРазгрузка = " 29 "; ОбластьПодвал.Параметры.КоличествоЕздок = " 30 "; ОбластьПодвал.Параметры.ПереданыДокументы = " 31 "; //////// ////ЭтоРозница = Истина; // признак розничного расчета и формирования Если НазваниеМакета = "ТТН_Вертикальная" или НазваниеМакета = "ТТН_Горизонтальная" Тогда ТабДок.Вывести(ОбластьШапка); ТабДок.Вывести(ОбластьШапкаТовары); Для Каждого Строка Из ТабличныеЧастиДокумента Цикл Если НЕ ЗначениеЗаполнено(Строка.Номенклатура) Тогда Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное); Продолжить; КонецЕсли; Ном = Ном + 1; // ------------------------------------------------------------------------------- ОбластьСтрокаТовары.Параметры.НомерСтроки = СокрЛП(Ном); мНаименованиеАртикулШифр = ""; Если ЗначениеЗаполнено(Строка.ХарактеристикаАртикул) Тогда мНаименованиеАртикулШифр = мНаименованиеАртикулШифр + " " + СокрЛП(Строка.ХарактеристикаАртикул); Иначе мНаименованиеАртикулШифр = мНаименованиеАртикулШифр + " " + СокрЛП(Строка.НоменклатураАртикул); КонецЕсли; Если ЗначениеЗаполнено(Строка.ХарактеристикаШифр) Тогда мНаименованиеАртикулШифр = мНаименованиеАртикулШифр + " " + СокрЛП(Строка.ХарактеристикаШифр); Иначе мНаименованиеАртикулШифр = мНаименованиеАртикулШифр + " " + СокрЛП(Строка.НоменклатураШифр); КонецЕсли; ОбластьСтрокаТовары.Параметры.НаименованиеТовара = СокрЛП(мНаименованиеАртикулШифр) + " " + СокрЛП(Строка.Номенклатура) + " " + СокрЛП(Строка.Характеристика); ОбластьСтрокаТовары.Параметры.ЕдиницаИзмерения = СокрЛП(Строка.ЕдиницаИзмерения); Количество = Строка.Количество; Сумма = Строка.Сумма; СуммаНДС = Строка.НДС; СуммаСНДС = Строка.Всего; КоличествоМест = Строка.Количество; МассаГруза = Строка.ВесНетто; Если Строка.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС Тогда СтавкаНДС = "Без НДС"; ИначеЕсли Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС0 Тогда СтавкаНДС = "0"; Иначе СтавкаНДС = МА_УчетНДСВызовСервераПовтИсп.ПолучитьСтавкуНДС(Строка.СтавкаНДС, Ложь); КонецЕсли; ОбластьСтрокаТовары.Параметры.Количество = Количество; ОбластьСтрокаТовары.Параметры.Цена = Строка.Цена; ОбластьСтрокаТовары.Параметры.Стоимость = Сумма; ОбластьСтрокаТовары.Параметры.СтавкаНДС = СтавкаНДС; ОбластьСтрокаТовары.Параметры.КоличествоМест = КоличествоМест; // Равно количеству номенклатуры ОбластьСтрокаТовары.Параметры.МассаГруза = Строка(Окр(МассаГруза,2,1)); Если НЕ ЗначениеЗаполнено(Строка.НДС) Тогда ОбластьСтрокаТовары.Параметры.СуммаНДС = "0"; Иначе ОбластьСтрокаТовары.Параметры.СуммаНДС = СуммаНДС; КонецЕсли; ОбластьСтрокаТовары.Параметры.СтоимостьСНДС = СуммаСНДС; ОбластьСтрокаТовары.Параметры.Примечание = "ЦПП: " + СокрЛП(Строка.Цена1го); //// ---------------------------------------------------------------------------------------- МассивВыводимыхОбластей.Очистить(); МассивВыводимыхОбластей.Добавить(ОбластьСтрокаТовары); Если Ном = КоличествоСтрок Тогда МассивВыводимыхОбластей.Добавить(ОбластьИтого); КонецЕсли; //// увеличим итоги по документу ИтогоКоличество = ИтогоКоличество + Количество; ИтогоСтоимость = ИтогоСтоимость + Сумма; ИтогоСуммаНДС = ИтогоСуммаНДС + СуммаНДС; ИтогоСтоимостьСНДС = ИтогоСтоимостьСНДС + СуммаСНДС; ИтогоМассаГруза = ИтогоМассаГруза + Окр(МассаГруза,2,1); ИтогоКоличествоМест = ИтогоКоличествоМест + КоличествоМест; Если Не ТабДок.ПроверитьВывод(МассивВыводимыхОбластей) Тогда // не помещается ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); ТабДок.Вывести(ОбластьШапкаТовары); НомерСтраницы = НомерСтраницы + 1; КонецЕсли; ТабДок.Вывести(ОбластьСтрокаТовары); КонецЦикла; //// Выводим итоги по документу в целом ОбластьИтого.Параметры.ИтогоКоличество = ИтогоКоличество; ОбластьИтого.Параметры.ИтогоСтоимость = ИтогоСтоимость; ОбластьИтого.Параметры.ИтогоСуммаНДС = ?(ИтогоСуммаНДС=0,"-",ИтогоСуммаНДС); ОбластьИтого.Параметры.ИтогоСтоимостьСНДС = ИтогоСтоимостьСНДС; ОбластьИтого.Параметры.ИтогоКоличествоМест = ИтогоКоличествоМест; ОбластьИтого.Параметры.ИтогоМассаГруза = ИтогоМассаГруза; ОбластьИтого.Параметры.Примечание = "--"; ТабДок.Вывести(ОбластьИтого); //// Выводим подвал документа Если ИтогоСуммаНДС <> 0 Тогда ОбластьПодвал.Параметры.ВсегоСуммаНДСПрописью = ЧислоПрописью(ИтогоСуммаНДС, ,"белорусский рубль, белорусских рубля, белорусских рублей, м,,,,, 0"); Иначе ОбластьПодвал.Параметры.ВсегоСуммаНДСПрописью = "-"; КонецЕсли; ОбластьПодвал.Параметры.ВсегоСуммаСНДСПрописью = ЧислоПрописью(ИтогоСтоимостьСНДС, ,"белорусский рубль, белорусских рубля, белорусских рублей, м,,,,, 0"); ОбластьПодвал.Параметры.ВсегоМассаГрузаПрописью = ЧислоПрописью(ИтогоМассаГруза,"Л=ru_RU;ДП=ИСТИНА","тонна,тонны,тонн,ж,килограмм,килограмма,килограммов,м,3"); ОбластьПодвал.Параметры.ВсегоКоличествоГрузовыхМестПрописью = ЧислоПрописью(ИтогоКоличествоМест,,",,,,,,,,0"); Если ТабДок.ПроверитьВывод(ОбластьПодвал) Тогда ТабДок.Вывести(ОбластьПодвал); Иначе Если НомерСтраницы <> 2 Тогда ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ТабДок.Вывести(ОбластьПодвал); КонецЕсли; Иначе //// Приложение ТабДокТемп = Новый ТабличныйДокумент; ТабДокТемп.ПолеСверху = 0; ТабДокТемп.ПолеСлева = 0; ТабДокТемп.ПолеСнизу = 0; ТабДокТемп.ПолеСправа = 0; ТабДокТемп.РазмерКолонтитулаСверху = 0; ТабДокТемп.РазмерКолонтитулаСнизу = 0; ТабДокТемп.ОриентацияСтраницы = ?(ВертикальнаяФорма, ОриентацияСтраницы.Портрет, ОриентацияСтраницы.Ландшафт); ТабДокТемп.АвтоМасштаб = Истина; ОбластьПриложение.Параметры.НомерДокумента = " 1-1 "; ОбластьПриложение.Параметры.Серия = " 1-2 "; ОбластьПриложение.Параметры.ДатаДокумента = " 1-3 "; ОбластьПриложение.Параметры.НомерСтраницы = "Страница " + НомерСтраницы; ОбластьПриложениеПодвал.Параметры.СдалГрузоотправитель = " 1-4 "; ТабДокТемп.Вывести(ОбластьПриложение); ТабДокТемп.Вывести(ОбластьШапкаТовары); Для Каждого Строка Из ТабличныеЧастиДокумента Цикл Если НЕ ЗначениеЗаполнено(Строка.Номенклатура) Тогда Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное); Продолжить; КонецЕсли; Ном = Ном + 1; //// ----------------------------------------------------------------------------------------------- ОбластьСтрокаТовары.Параметры.НомерСтроки = СокрЛП(Ном); мНаименованиеАртикулШифр = ""; Если ЗначениеЗаполнено(Строка.ХарактеристикаАртикул) Тогда мНаименованиеАртикулШифр = мНаименованиеАртикулШифр + " " + СокрЛП(Строка.ХарактеристикаАртикул); Иначе мНаименованиеАртикулШифр = мНаименованиеАртикулШифр + " " + СокрЛП(Строка.НоменклатураАртикул); КонецЕсли; Если ЗначениеЗаполнено(Строка.ХарактеристикаШифр) Тогда мНаименованиеАртикулШифр = мНаименованиеАртикулШифр + " " + СокрЛП(Строка.ХарактеристикаШифр); Иначе мНаименованиеАртикулШифр = мНаименованиеАртикулШифр + " " + СокрЛП(Строка.НоменклатураШифр); КонецЕсли; ОбластьСтрокаТовары.Параметры.НаименованиеТовара = СокрЛП(мНаименованиеАртикулШифр) + " " + СокрЛП(Строка.Номенклатура) + " " + СокрЛП(Строка.Характеристика); ОбластьСтрокаТовары.Параметры.ЕдиницаИзмерения = СокрЛП(Строка.ЕдиницаИзмерения); Количество = Строка.Количество; Сумма = Строка.Сумма; СуммаНДС = Строка.НДС; СуммаСНДС = Строка.Всего; КоличествоМест = Строка.Количество; МассаГруза = Строка.ВесНетто; Если Строка.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС Тогда СтавкаНДС = "Без НДС"; ИначеЕсли Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС0 Тогда СтавкаНДС = "0"; Иначе СтавкаНДС = МА_УчетНДСВызовСервераПовтИсп.ПолучитьСтавкуНДС(Строка.СтавкаНДС, Ложь); КонецЕсли; ОбластьСтрокаТовары.Параметры.Количество = Количество; ОбластьСтрокаТовары.Параметры.Цена = Строка.Цена; ОбластьСтрокаТовары.Параметры.Стоимость = Сумма; ОбластьСтрокаТовары.Параметры.СтавкаНДС = СтавкаНДС; ОбластьСтрокаТовары.Параметры.КоличествоМест = КоличествоМест; // Равно количеству номенклатуры ОбластьСтрокаТовары.Параметры.МассаГруза = Строка(Окр(МассаГруза,2,1)); Если НЕ ЗначениеЗаполнено(Строка.НДС) Тогда ОбластьСтрокаТовары.Параметры.СуммаНДС = "0"; Иначе ОбластьСтрокаТовары.Параметры.СуммаНДС = СуммаНДС; КонецЕсли; ОбластьСтрокаТовары.Параметры.СтоимостьСНДС = СуммаСНДС; ОбластьСтрокаТовары.Параметры.Примечание = "ЦПП: " + СокрЛП(Строка.Цена1го); МассивВыводимыхОбластей.Очистить(); МассивВыводимыхОбластей.Добавить(ОбластьСтрокаТовары); МассивВыводимыхОбластей.Добавить(ОбластьИтогоПоСтранице); Если Ном = КоличествоСтрок Тогда МассивВыводимыхОбластей.Добавить(ОбластьИтого); КонецЕсли; МассивВыводимыхОбластей.Добавить(ОбластьПриложениеПодвал); Если Не ТабДокТемп.ПроверитьВывод(МассивВыводимыхОбластей) Тогда //// выводим итоги по странице ОбластьИтогоПоСтранице.Параметры.ИтогоСтраницаКоличество = ИтогоСтраницаКоличество; ОбластьИтогоПоСтранице.Параметры.ИтогоСтраницаСтоимость = ИтогоСтраницаСтоимость; ОбластьИтогоПоСтранице.Параметры.ИтогоСтраницаСуммаНДС = ?(ИтогоСтраницаСуммаНДС=0,"-",ИтогоСтраницаСуммаНДС); ОбластьИтогоПоСтранице.Параметры.ИтогоСтраницаСтоимостьСНДС = ИтогоСтраницаСтоимостьСНДС; ОбластьИтогоПоСтранице.Параметры.ИтогоСтраницаКоличествоМест = ИтогоКоличествоМест; ОбластьИтогоПоСтранице.Параметры.ИтогоСтраницаМассаГруза = ИтогоМассаГруза; ОбластьИтогоПоСтранице.Параметры.Примечание = "--"; ТабДокТемп.Вывести(ОбластьИтогоПоСтранице); ТабДокТемп.Вывести(ОбластьПриложениеПодвал); ИтогоСтраницаКоличество = 0; ИтогоСтраницаСтоимость = 0; ИтогоСтраницаСуммаНДС = 0; ИтогоСтраницаСтоимостьСНДС = 0; ИтогоСтраницаКоличествоМест = 0; ИтогоСтраницаМассаГруза = 0; НомерСтраницы = НомерСтраницы + 1; ТабДокТемп.ВывестиГоризонтальныйРазделительСтраниц(); ОбластьПриложение.Параметры.НомерСтраницы = "Страница " + НомерСтраницы; ТабДокТемп.Вывести(ОбластьПриложение); ТабДокТемп.Вывести(ОбластьШапкаТовары); КонецЕсли; //// сама строка ТабДокТемп.Вывести(ОбластьСтрокаТовары); //// ----------------------------------------------------------------------------------------------- ИтогоСтраницаКоличество = ИтогоСтраницаКоличество + Количество; ИтогоСтраницаСтоимость = ИтогоСтраницаСтоимость + Сумма; ИтогоСтраницаСуммаНДС = ИтогоСтраницаСуммаНДС + |
|||
1
Начинающий_13
04.05.15
✎
14:35
|
Нашел ляп
ОбластьИтогоПоСтранице.Параметры.ИтогоСтраницаКоличествоМест = ИтогоКоличествоМест;// Страница еще должно быть ОбластьИтогоПоСтранице.Параметры.ИтогоСтраницаМассаГруза = ИтогоМассаГруза; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |