Массовая печать «Счетов на оплату» и «Акт выполненных работ» в Розница 2.2
Задача: в некой таблице перечислены документы, для которых нужно программно вывести печатные формы счетов и актов.
Решение:
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
&НаСервере Функция ПолучитьПечатнуюФормуСчета() // вхДок это просто ссылка на документ счет на оплату покупателю ттт=новый ТабличныйДокумент(); для каждого стр из объект.Контрагенты цикл счДок=стр.Счет; сообщить(счДок); ОбъектыПечати = Новый СписокЗначений; ОбъектыПечати.Добавить(счДок.ПолучитьОбъект()); МассивОбъектов = Новый Массив(); МассивОбъектов.Добавить(счДок); ПараметрыПечати = Новый Структура; ТаблицаСведенийСчетНаОплату=Документы.СчетНаОплатуПокупателю.ПолучитьТаблицуСведенийСчетаНаОплату(МассивОбъектов); ПараметрыПечати.Вставить("ВидДокументаПечати", "СчетНаОплатуПокупателю"); ПараметрыПечати.Вставить("ИмяПараметровПечати", "ПАРАМЕТРЫ_ПЕЧАТИ_СчетНаОплатуПокупателю_Счет"); ПараметрыПечати.Вставить("ИмяМакетаПечати", "ОбщийМакет.ПФ_MXL_СчетЗаказ"); ТаблицаСведенийСчетНаОплату.Колонки.Добавить("Ссылка"); ТаблицаСведенийСчетНаОплату[0].Ссылка = счДок; ТаблицаСведенийСчетНаОплату[0].Документ = счДок; ТабДок = ПечатьТорговыхДокументов.ПечатьСчетаНаОплату(ТаблицаСведенийСчетНаОплату, ОбъектыПечати, ПараметрыПечати); ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); ттт.Вывести(ТабДок); конеццикла; возврат ттт; КонецФункции &НаКлиенте Процедура ПечатьСчетов(Команда) табдок=ПолучитьПечатнуюФормуСчета(); табдок.показать(); КонецПроцедуры &НаСервере Функция ПолучитьСтатусСчета(счет) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СтатусыДокументов.Статус.Ссылка КАК СтатусСсылка |ИЗ | РегистрСведений.СтатусыДокументов КАК СтатусыДокументов |ГДЕ | СтатусыДокументов.Организация = &Организация | И СтатусыДокументов.Документ = &Документ"; Запрос.УстановитьПараметр("Организация", объект.Организация); Запрос.УстановитьПараметр("Документ",счет); ВыборкаДетальныеЗаписи = Запрос.Выполнить().Выбрать(); статус=перечисления.СтатусОплатыСчета.НеОплачен; Пока ВыборкаДетальныеЗаписи.Следующий() Цикл статус=ВыборкаДетальныеЗаписи.СтатусСсылка; конеццикла; возврат статус; КонецФункции &НаСервере Функция ПечатьАктовНаСервере() // вхДок это просто ссылка на документ счет на оплату покупателю ттт=новый ТабличныйДокумент(); для каждого стр из объект.Контрагенты цикл счДок=стр.Акт; сообщить(счДок); ОбъектыПечати = Новый СписокЗначений; ОбъектыПечати.Добавить(счДок.ПолучитьОбъект()); МассивОбъектов = Новый Массив(); МассивОбъектов.Добавить(счДок); ПараметрыПечати = Новый Структура; ТаблицаСведенийАкт=Документы.РеализацияТоваровУслуг.ПолучитьТаблицуСведенийАктаОбОказанииУслуг(МассивОбъектов); ПараметрыПечати.Вставить("ВидДокументаПечати", "РеализацияТоваровУслуг"); ПараметрыПечати.Вставить("ИмяПараметровПечати", "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_Акт"); ПараметрыПечати.Вставить("ИмяМакетаПечати", "Документ.РеализацияТоваровУслуг.ПФ_MXL_Акт"); ТаблицаСведенийАкт.Колонки.Добавить("Ссылка"); ТаблицаСведенийАкт[0].Ссылка = счДок; ТаблицаСведенийАкт[0].Документ = счДок; ТабДок = ПечатьТорговыхДокументов.ПечатьАктаОбОказанииУслуг(ТаблицаСведенийАкт, ОбъектыПечати, ПараметрыПечати); ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); ттт.Вывести(ТабДок); конеццикла; возврат ттт; КонецФункции &НаКлиенте Процедура ПечатьАктов(Команда) табдок=ПечатьАктовНаСервере(); табдок.показать(); КонецПроцедуры |