|
выдает ошибку не сформирован табличный документ | ☑ | ||
---|---|---|---|---|
0
userqwerty
20.11.19
✎
10:34
|
Всем привет! помогите разобраться пожалуйста, выдает ошибку, когда пытаюсь открыть внешнюю ПФ в Документе
пишет {ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(236)}: В обработчике печати не был сформирован табличный документ для: ПФНовый ВызватьИсключение(ТекстСообщенияОбОшибке); Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати = Неопределено, ПараметрыВывода = Неопределено) Экспорт ПараметрыПечати = Новый Структура; ПараметрыПечати.Вставить("ДополнитьКомплектВнешнимиПечатнымиФормами",Истина); СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивОбъектов); //Макет = ЭтотОбъект.ПолучитьМакет("ПФ_MXL_РасходнаяНакладная"); Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ОтчетКомиссионера") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "ОтчетКомиссионера", НСтр("ru='Отчет комиссионера';uk='Звіт комісіонера'"), СформироватьПечатнуюФормуОтчетПоКомиссии(СтруктураТипов, ОбъектыПечати, ПараметрыПечати, ПараметрыВывода), , , , Истина // ЭтоМногоязычнаяПечатнаяФорма ); КонецЕсли; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ОтчетКомиссионераСписание") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "ОтчетКомиссионераСписание", НСтр("ru='Отчет комиссионера';uk='Звіт комісіонера'"), СформироватьПечатнуюФормуОтчетПоКомиссииСписание(СтруктураТипов, ОбъектыПечати, ПараметрыПечати, ПараметрыВывода), , , , Истина // ЭтоМногоязычнаяПечатнаяФорма ); КонецЕсли; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "М4") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "М4", НСтр("ru='Приходный ордер (М-4)';uk='Прибутковий ордер (М-4)'"), СформироватьПечатнуюФормуМ4(СтруктураТипов, ОбъектыПечати, ПараметрыПечати)); КонецЕсли; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "РасходнаяНакладная") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "РасходнаяНакладная", НСтр("ru='Расходная накладная';uk='Видаткова накладна'"), СформироватьПечатнуюФормуРасходнаяНакладная(СтруктураТипов, ОбъектыПечати, ПараметрыПечати, ПараметрыВывода), , , , Истина // ЭтоМногоязычнаяПечатнаяФорма ); КонецЕсли; ФормированиеПечатныхФорм.ЗаполнитьПараметрыОтправки(ПараметрыВывода.ПараметрыОтправки, СтруктураТипов, КоллекцияПечатныхФорм); КонецПроцедуры Функция СформироватьПечатнуюФормуОтчетПоКомиссии(СтруктураТипов, ОбъектыПечати, ПараметрыПечати, ПараметрыВывода) УстановитьПривилегированныйРежим(Истина); ТабличныйДокумент = Новый ТабличныйДокумент; ТабличныйДокумент.АвтоМасштаб = Истина; ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ОтчетПоКомиссии"; НомерТипаДокумента = 0; Для Каждого СтруктураОбъектов Из СтруктураТипов Цикл Если СтруктураОбъектов.Ключ = "Документ.ОтчетКомиссионераОСписании" Или СтруктураОбъектов.Ключ = "Документ.ОтчетКомитентуОСписании" Тогда Продолжить; КонецЕсли; НомерТипаДокумента = НомерТипаДокумента + 1; Если НомерТипаДокумента > 1 Тогда ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(СтруктураОбъектов.Ключ); ДанныеДляПечати = МенеджерОбъекта.ПолучитьДанныеДляПечатнойФормыОтчетПоКомиссии(ПараметрыПечати, СтруктураОбъектов.Значение); ЗаполнитьТабличныйДокументОтчетПоКомиссииОПродажах( ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати, ПараметрыВывода ); КонецЦикла; Возврат ТабличныйДокумент; КонецФункции Функция СформироватьПечатнуюФормуОтчетПоКомиссииСписание(СтруктураТипов, ОбъектыПечати, ПараметрыПечати, ПараметрыВывода) УстановитьПривилегированныйРежим(Истина); ТабличныйДокумент = Новый ТабличныйДокумент; ТабличныйДокумент.АвтоМасштаб = Истина; ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ОтчетПоКомиссииСписание"; НомерТипаДокумента = 0; Для Каждого СтруктураОбъектов Из СтруктураТипов Цикл Если СтруктураОбъектов.Ключ = "Документ.ОтчетКомиссионера" Или СтруктураОбъектов.Ключ = "Документ.ОтчетКомитенту" Тогда Продолжить; КонецЕсли; НомерТипаДокумента = НомерТипаДокумента + 1; Если НомерТипаДокумента > 1 Тогда ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(СтруктураОбъектов.Ключ); ДанныеДляПечати = МенеджерОбъекта.ПолучитьДанныеДляПечатнойФормыОтчетПоКомиссииОСписании(ПараметрыПечати, СтруктураОбъектов.Значение); ЗаполнитьТабличныйДокументОтчетПоКомиссииОСписании( ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати, ПараметрыВывода ); КонецЦикла; Возврат ТабличныйДокумент; КонецФункции Процедура ЗаполнитьРеквизитыШапкиОтчетПоКомиссии(ДанныеПечати, Заголовок, Макет, ТабличныйДокумент, КодЯзыкаПечать) // Выводим общие реквизиты шапки СведенияОКомитенте = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Комитент, ДанныеПечати.Дата, , ДанныеПечати.БанковскийСчетКомитента); СведенияОКомиссионере = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Комиссионер, ДанныеПечати.Дата, , ДанныеПечати.БанковскийСчетКомиссионера); ОбластьМакета = Макет.ПолучитьОбласть("Шапка"); ОбластьМакета.Параметры.Заполнить(ДанныеПечати); ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьМакета, ДанныеПечати.Ссылка); СтруктураПараметров = Новый Структура; СтруктураПараметров.Вставить("ТекстЗаголовка", ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(ДанныеПечати, Заголовок, КодЯзыкаПечать)); СтруктураПараметров.Вставить("ПредставлениеКомитента", ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОКомитенте, "ПолноеНаименование,")); СтруктураПараметров.Вставить("ПредставлениеКомиссионера", ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОКомиссионере, "ПолноеНаименование,")); Если ДанныеПечати.ЭтоОтчетКомиссионера Тогда СписокСведенийКомитента = "НомерСчета,Банк,МФО,/,ЮридическийАдрес,Телефоны,/,КодПоЕДРПОУ,КодПоДРФО,ИНН,НомерСвидетельства,/,ИнформацияОСтатусеПлательщикаНалогов"; СписокСведенийКомиссионера = "ФактическийАдрес,Телефоны"; Иначе СписокСведенийКомитента = "ФактическийАдрес,Телефоны"; СписокСведенийКомиссионера = "НомерСчета,Банк,МФО,/,ЮридическийАдрес,Телефоны,/,КодПоЕДРПОУ,КодПоДРФО,ИНН,НомерСвидетельства,/,ИнформацияОСтатусеПлательщикаНалогов"; КонецЕсли; СтруктураПараметров.Вставить("РеквизитыКомитента", ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОКомитенте, СписокСведенийКомитента, Истина, КодЯзыкаПечать)); СтруктураПараметров.Вставить("РеквизитыКомиссионера", ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОКомиссионере, СписокСведенийКомиссионера, Истина, КодЯзыкаПечать)); ОбластьМакета.Параметры.Заполнить(СтруктураПараметров); ТабличныйДокумент.Вывести(ОбластьМакета); // Выводим дополнительно информацию о договоре и заказе СписокДополнительныхПараметров = "ДоговорНаименованиеДляПечати,"; МассивСтруктурСтрок = ФормированиеПечатныхФорм.ДополнительнаяИнформация(ДанныеПечати, СписокДополнительныхПараметров, КодЯзыкаПечать); ОбластьМакета = Макет.ПолучитьОбласть("ДопИнформация"); Для каждого СтруктураСтроки Из МассивСтруктурСтрок Цикл ОбластьМакета.Параметры.Заполнить(СтруктураСтроки); ТабличныйДокумент.Вывести(ОбластьМакета); КонецЦикла; КонецПроцедуры Процедура ЗаполнитьРеквизитыПодвалаОтчетПоКомисии(ДанныеПечати, ВыборкаПоДокументам, Макет, ТабличныйДокумент, КодЯзыкаПечать) ОбластьМакета = Макет.ПолучитьОбласть("Подвал"); СтруктураПараметров = Новый Структура; СтруктураПараметров.Вставить("СуммаКомитентаВсего", ВыборкаПоДокументам.СуммаКомитента); СтруктураПараметров.Вставить("СуммаПродажиВсего", ВыборкаПоДокументам.СуммаПродажи); СтруктураПараметров.Вставить("СуммаВознагражденияВсего", ВыборкаПоДокументам.СуммаВознаграждения); Если ВыборкаПоДокументам.СуммаПродажи < 0 Тогда ТекстИтоговаяСтрока = НСтр("ru='Всего возвращено наименований ';uk= 'Всього повернуто найменувань '", КодЯзыкаПечать); Иначе ТекстИтоговаяСтрока = НСтр("ru='Всего продано наименований ';uk= 'Всього продано найменувань '", КодЯзыкаПечать); КонецЕсли; СтруктураПараметров.Вставить("ИтоговаяСтрока", ТекстИтоговаяСтрока + " " + ВыборкаПоДокументам.Выбрать().Количество() + ", " + НСтр("ru=', на сумму ';uk= ', на суму '", КодЯзыкаПечать) + " " + ФормированиеПечатныхФорм.ФорматСумм(ВыборкаПоДокументам.СуммаПродажи, ДанныеПечати.Валюта)); СтруктураПараметров.Вставить("СуммаПрописью", РаботаСКурсамиВалют.СформироватьСуммуПрописью( ВыборкаПоДокументам.СуммаПродажи, ДанныеПечати.Валюта, , КодЯзыкаПечать ) ); Если ДанныеПечати.СуммаВознаграждения <> 0 Тогда СтруктураПараметров.Вставить("СуммаВознаграждения", НСтр("ru='Сумма комиссионного вознаграждения составила';uk= 'Сума комісійної винагороди склала'", КодЯзыкаПечать) + " " + ?(ДанныеПечати.СуммаВознаграждения < 0, НСтр("ru='минус';uk= 'мінус'", КодЯзыкаПечать) + " ", "") + РаботаСКурсамиВалют.СформироватьСуммуПрописью(ДанныеПечати.СуммаВознаграждения, ДанныеПечати.Валюта, , КодЯзыкаПечать)); КонецЕсли; ОбластьМакета.Параметры.Заполнить(СтруктураПараметров); ТабличныйДокумент.Вывести(ОбластьМакета); Если ЗначениеЗаполнено(ДанныеПечати.МестоСоставленияДокумента) Тогда ОбластьМакета = Макет.ПолучитьОбласть("МестоСоставления"); СтруктураПараметров.Вставить("МестоСоставления", СокрЛП(ДанныеПечати.МестоСоставленияДокумента)); ОбластьМакета.Параметры.Заполнить(СтруктураПараметров); ТабличныйДокумент.Вывести(ОбластьМакета); КонецЕсли; ДанныеДляФормированияПодписей = Новый Структура("ПредставительОрганизации, ПредставительОрганизацииДолжность, ПредставительКонтрагента, ПредставительОрганизацииПолучателя, ПредставительОрганизацииПолучателяДолжность"); Если ДанныеПечати.ЭтоОтчетКомиссионера Тогда ОбластьМакета = Макет.ПолучитьОбласть("ПодписиОтчетКомиссионера"); ДанныеДляФормированияПодписей.ПредставительОрганизации = ДанныеПечати.ПредставительКомитента; ДанныеДляФормированияПодписей.ПредставительОрганизацииДолжность = ДанныеПечати.ПредставительКомитентаДолжность; ДанныеДляФормированияПодписей.ПредставительКонтрагента = ДанныеПечати.ПредставительКомиссионераСтрокой; ДанныеДляФормированияПодписей.ПредставительОрганизацииПолучателяДолжность = ДанныеПечати.ПредставительКомиссионераДолжность; ДанныеДляФормированияПодписей.ПредставительОрганизацииПолучателя = ДанныеПечати.ПредставительКомиссионера; Иначе ОбластьМакета = Макет.ПолучитьОбласть("ПодписиОтчетКомитенту"); ДанныеДляФормированияПодписей.ПредставительОрганизации = ДанныеПечати.ПредставительКомиссионера; ДанныеДляФормированияПодписей.ПредставительОрганизацииДолжность = ДанныеПечати.ПредставительКомиссионераДолжность; ДанныеДляФормированияПодписей.ПредставительКонтрагента = ДанныеПечати.ПредставительКомитентаСтрокой; ДанныеДляФормированияПодписей.ПредставительОрганизацииПолучателяДолжность = ДанныеПечати.ПредставительКомитентаДолжность; ДанныеДляФормированияПодписей.ПредставительОрганизацииПолучателя = ДанныеПечати.ПредставительКомитента; КонецЕсли; ОбластьМакета.Параметры.Заполнить(ФормированиеПечатныхФорм.СведенияОбОтветсвенныхЛицах(ДанныеДляФормированияПодписей, КодЯзыкаПечать)); ТабличныйДокумент.Вывести(ОбластьМакета); КонецПроцедуры Процедура ЗаполнитьТабличныйДокументОтчетПоКомиссииОПродажах(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати, ПараметрыВывода) КодЯзыкаПечать = ПараметрыВывода.КодЯзыкаДляМногоязычныхПечатныхФорм; Макет = УправлениеПечатью.МакетПечатнойФормы("Обработка.ПечатьОбщихФорм.ПФ_MXL_ОтчетПоКомиссии", КодЯзыкаПечать); КолонкаКодов = ФормированиеПечатныхФорм.ИмяДополнительнойКолонки(); ДанныеПечати = ДанныеДляПечати.РезультатПоШапке.Выбрать(); ВыборкаПоДокументам = ДанныеДляПечати.РезультатПоТабличнойЧасти.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); ПервыйДокумент = Истина; Пока ДанныеПечати.Следующий() Цикл Если Не ПервыйДокумент Тогда ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ПервыйДокумент = Ложь; НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1; ВыборкаПоДокументам.Сбросить(); СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка); Если ВыборкаПоДокументам.НайтиСледующий(СтруктураПоиска) Тогда Если ДанныеПечати.ЭтоОтчетКомиссионера Тогда Заголовок = НСтр("ru='Отчет комиссионера о продажах';uk= 'Звіт комісіонера про продажі'", КодЯзыкаПечать); Иначе Заголовок = НСтр("ru='Отчет комитенту о продажах';uk= 'Звіт комітенту про продажі'", КодЯзыкаПечать); КонецЕсли; // Выводим общие реквизиты шапки ЗаполнитьРеквизитыШапкиОтчетПоКомиссии( ДанныеПечати, Заголовок, Макет, ТабличныйДокумент, КодЯзыкаПечать ); СтруктураПараметров = Новый Структура; // Выводим заголовок таблицы Если ЗначениеЗаполнено(КолонкаКодов) Тогда ЗаголовокТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицыСКодами"); СтруктураПараметров.Вставить("ИмяКолонкиКодов", КолонкаКодов); Иначе ЗаголовокТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); КонецЕсли; СтруктураПараметров.Вставить("Валюта", ДанныеПечати.Валюта); ЗаголовокТаблицы.Параметры.Заполнить(СтруктураПараметров); ЗаполнитьЗначенияСвойств(ЗаголовокТаблицы.Параметры, ФормированиеПечатныхФорм.СформироватьЗаголовкиДляСуммовыхПоказателей(ДанныеПечати, КодЯзыкаПечать, Истина)); ТабличныйДокумент.Вывести(ЗаголовокТаблицы); // Выводим многострочную часть документа Если ЗначениеЗаполнено(КолонкаКодов) Тогда ОбластьМакета = Макет.ПолучитьОбласть("СтрокаСКодами"); Иначе ОбластьМакета = Макет.ПолучитьОбласть("Строка"); КонецЕсли; НомерСтроки = 0; СтрокаТовары = ВыборкаПоДокументам.Выбрать(); Пока СтрокаТовары.Следующий() Цикл НомерСтроки = НомерСтроки + 1; ОбластьМакета.Параметры.Заполнить(СтрокаТовары); СтруктураПараметров = Новый Структура; Если ЗначениеЗаполнено(КолонкаКодов) Тогда СтруктураПараметров.Вставить("Артикул", СтрокаТовары[КолонкаКодов]); КонецЕсли; СтруктураПараметров.Вставить("НомерСтроки", НомерСтроки); СтруктураПараметров.Вставить("ТоварНаименование", НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати( СтрокаТовары.ТоварНаименование, СтрокаТовары.Характеристика)); СтруктураПараметров.Вставить("ЦенаКомитента", ?(СтрокаТовары.Количество = 0, 0, Окр(СтрокаТовары.СуммаКомитента / СтрокаТовары.Количество, 2, 1))); СтруктураПараметров.Вставить("ЦенаПродажи", ?(СтрокаТовары.Количество = 0, 0, Окр(СтрокаТовары.СуммаПродажи / СтрокаТовары.Количество, 2, 1))); ОбластьМакета.Параметры.Заполнить(СтруктураПараметров); ТабличныйДокумент.Вывести(ОбластьМакета); КонецЦикла; ЗаполнитьРеквизитыПодвалаОтчетПоКомисии( ДанныеПечати, ВыборкаПоДокументам, Макет, ТабличныйДокумент, КодЯзыкаПечать ); УправлениеПечатью.ЗадатьОбластьПечатиДокумента( ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеПечати.Ссылка); КонецЕсли; КонецЦикла; КонецПроцедуры Процедура ЗаполнитьРеквизитыПодвалаОтчетПоКомиссииОСписании(ДанныеПечати, ВыборкаПоДокументам, Макет, ТабличныйДокумент, КодЯзыкаПечать) ОбластьМакета = Макет.ПолучитьОбласть("Подвал"); СтруктураПараметров = Новый Структура; СтруктураПараметров.Вставить("СуммаВсего", ВыборкаПоДокументам.Сумма); СтруктураПараметров.Вставить("ИтоговаяСтрока", НСтр("ru='Всего списано наименований';uk= 'Всього списано найменувань'", КодЯзыкаПечать) + " " + ВыборкаПоДокументам.Выбрать().Количество() + ?(ВыборкаПоДокументам.Сумма <> 0, ", " + НСтр("ru='на сумму';uk= 'на суму'", КодЯзыкаПечать) + " ", "") + ?(ВыборкаПоДокументам.Сумма <> 0, ФормированиеПечатныхФорм.ФорматСумм(ВыборкаПоДокументам.Сумма, ДанныеПечати.Валюта), "")); СтруктураПараметров.Вставить("СуммаПрописью", РаботаСКурсамиВалют.СформироватьСуммуПрописью( ВыборкаПоДокументам.Сумма, ДанныеПечати.Валюта, , КодЯзыкаПечать ) ); ОбластьМакета.Параметры.Заполнить(СтруктураПараметров); ТабличныйДокумент.Вывести(ОбластьМакета); Если ЗначениеЗаполнено(ДанныеПечати.МестоСоставленияДокумента) Тогда ОбластьМакета = Макет.ПолучитьОбласть("МестоСоставления"); СтруктураПараметров.Вставить("МестоСоставления", СокрЛП(ДанныеПечати.МестоСоставленияДокумента)); ОбластьМакета.Параметры.Заполнить(СтруктураПараметров); ТабличныйДокумент.Вывести(ОбластьМакета); КонецЕсли; ДанныеДляФормированияПодписей = Новый Структура("ПредставительОрганизации, ПредставительОрганизацииДолжность, ПредставительКонтрагента, ПредставительОрганизацииПолучателя, ПредставительОрганизацииПолучателяДолжность"); Если ДанныеПечати.ЭтоОтчетКомиссионера Тогда ОбластьМакета = Макет.ПолучитьОбласть("ПодписиОтчетКомиссионера"); ДанныеДляФормированияПодписей.ПредставительОрганизации = ДанныеПечати.ПредставительКомитента; ДанныеДляФормированияПодписей.ПредставительОрганизацииДолжность = ДанныеПечати.ПредставительКомитентаДолжность; ДанныеДляФормированияПодписей.ПредставительКонтрагента = ДанныеПечати.ПредставительКомиссионераСтрокой; ДанныеДляФормированияПодписей.ПредставительОрганизацииПолучателяДолжность = ДанныеПечати.ПредставительКомиссионераДолжность; ДанныеДляФормированияПодписей.ПредставительОрганизацииПолучателя = ДанныеПечати.ПредставительКомиссионера; Иначе ОбластьМакета = Макет.ПолучитьОбласть("ПодписиОтчетКомитенту"); ДанныеДляФормированияПодписей.ПредставительОрганизации = ДанныеПечати.ПредставительКомиссионера; ДанныеДляФормированияПодписей.ПредставительОрганизацииДолжность = ДанныеПечати.ПредставительКомиссионераДолжность; ДанныеДляФормированияПодписей.ПредставительКонтрагента = ДанныеПечати.ПредставительКомитентаСтрокой; ДанныеДляФормированияПодписей.ПредставительОрганизацииПолучателяДолжность = ДанныеПечати.ПредставительКомитентаДолжность; ДанныеДляФормированияПодписей.ПредставительОрганизацииПолучателя = ДанныеПечати.ПредставительКомитента; КонецЕсли; ОбластьМакета.Параметры.Заполнить(ФормированиеПечатныхФорм.СведенияОбОтветсвенныхЛицах(ДанныеДляФормированияПодписей, КодЯзыкаПечать)); ТабличныйДокумент.Вывести(ОбластьМакета); КонецПроцедуры Процедура ЗаполнитьТабличныйДокументОтчетПоКомиссииОСписании(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати, ПараметрыВывода) КодЯзыкаПечать = ПараметрыВывода.КодЯзыкаДляМногоязычныхПечатныхФорм; Макет = УправлениеПечатью.МакетПечатнойФормы("Обработка.ПечатьОбщихФорм.ПФ_MXL_ОтчетПоКомиссииОСписании", КодЯзыкаПечать); КолонкаКодов = ФормированиеПечатныхФорм.ИмяДополнительнойКолонки(); ДанныеПечати = ДанныеДляПечати.РезультатПоШапке.Выбрать(); ВыборкаПоДокументам = ДанныеДляПечати.РезультатПоТабличнойЧасти.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); ПервыйДокумент = Истина; Пока ДанныеПечати.Следующий() Цикл Если Не ПервыйДокумент Тогда ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ПервыйДокумент = Ложь; НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1; СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка); Если ВыборкаПоДокументам.НайтиСледующий(СтруктураПоиска) Тогда Если ДанныеПечати.ЭтоОтчетКомиссионера Тогда Заголовок = НСтр("ru='Отчет комиссионера о списании';uk= 'Звіт комісіонера про списання'", КодЯзыкаПечать); Иначе Заголовок = НСтр("ru='Отчет комитенту о списании';uk= 'Звіт комітенту про списання'", КодЯзыкаПечать); КонецЕсли; // Выводим общие реквизиты шапки ЗаполнитьРеквизитыШапкиОтчетПоКомиссии( ДанныеПечати, Заголовок, Макет, ТабличныйДокумент, КодЯзыкаПечать ); СтруктураПараметров = Новый Структура; // Выводим заголовок таблицы Если ЗначениеЗаполнено(КолонкаКодов) Тогда ЗаголовокТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицыСКодами"); СтруктураПараметров.Вставить("ИмяКолонкиКодов", КолонкаКодов); Иначе ЗаголовокТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); КонецЕсли; СтруктураПараметров.Вставить("Валюта", ДанныеПечати.Валюта); ЗаголовокТаблицы.Параметры.Заполнить(СтруктураПараметров); ЗаполнитьЗначенияСвойств(ЗаголовокТаблицы.Параметры, ФормированиеПечатныхФорм.СформироватьЗаголовкиДляСуммовыхПоказателей(ДанныеПечати, КодЯзыкаПечать)); ТабличныйДокумент.Вывести(ЗаголовокТаблицы); // Выводим многострочную часть документа Если ЗначениеЗаполнено(КолонкаКодов) Тогда ОбластьМакета = Макет.ПолучитьОбласть("СтрокаСКодами"); Иначе ОбластьМакета = Макет.ПолучитьОбласть("Строка"); КонецЕсли; НомерСтроки = 0; СтрокаТовары = ВыборкаПоДокументам.Выбрать(); Пока СтрокаТовары.Следующий() Цикл НомерСтроки = НомерСтроки + 1; ОбластьМакета.Параметры.Заполнить(СтрокаТовары); СтруктураПараметров = Новый Структура; Если ЗначениеЗаполнено(КолонкаКодов) Тогда СтруктураПараметров.Вставить("Артикул", СтрокаТовары[КолонкаКодов]); КонецЕсли; СтруктураПараметров.Вставить("НомерСтроки", НомерСтроки); СтруктураПараметров.Вставить("ТоварНаименование", НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати( СтрокаТовары.ТоварНаименование, СтрокаТовары.Характеристика)); СтруктураПараметров.Вставить("Цена", ?(СтрокаТовары.Количество = 0, 0, Окр(СтрокаТовары.Сумма / СтрокаТовары.Количество, 2, 1))); ОбластьМакета.Параметры.Заполнить(СтруктураПараметров); ТабличныйДокумент.Вывести(ОбластьМакета); КонецЦикла; ЗаполнитьРеквизитыПодвалаОтчетПоКомиссииОСписании( ДанныеПечати, ВыборкаПоДокументам, Макет, ТабличныйДокумент, КодЯзыкаПечать ); УправлениеПечатью.ЗадатьОбластьПечатиДокумента( ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеПечати.Ссылка); КонецЕсли; КонецЦикла; КонецПроцедуры Функция СформироватьПечатнуюФормуМ4(СтруктураТипов, ОбъектыПечати, ПараметрыПечати) УстановитьПривилегированныйРежим(Истина); ТабличныйДокумент = Новый ТабличныйДокумент; // Зададим параметры макета ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет; ТабличныйДокумент.АвтоМасштаб = Истина; ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_М4"; НомерТипаДокумента = 0; Для Каждого СтруктураОбъектов Из СтруктураТипов Цикл НомерТипаДокумента = НомерТипаДокумента + 1; Если НомерТипаДокумента > 1 Тогда ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(СтруктураОбъектов.Ключ); ДанныеДляПечати = МенеджерОбъекта.ПолучитьДанныеДляПечатнойФормыМ4(ПараметрыПечати, СтруктураОбъектов.Значение); ЗаполнитьТабличныйДокументМ4(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати); КонецЦикла; Возврат ТабличныйДокумент; КонецФункции Процедура ЗаполнитьРеквизитыШапкиМ4(ДанныеПечати, ДанныеПоСкладу, Макет, ТабличныйДокумент) // Выводим общие реквизиты шапки СведенияОПокупателе = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Организация, ДанныеПечати.ДатаСоставления, ,ДанныеПечати.БанковскийСчетОрганизации); НомерДокумента = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(ДанныеПечати.Номер, Ложь, Истина); ОбластьМакета = Макет.ПолучитьОбласть("Шапка"); ОбластьМакета.Параметры.Заполнить(ДанныеПечати); СтруктураПараметров = Новый Структура; СтруктураПараметров.Вставить("ПредставлениеОрганизации", ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ПолноеНаименование,")); СтруктураПараметров.Вставить("КодПоЕДРПОУ", СведенияОПокупателе.КодПоЕДРПОУ); СтруктураПараметров.Вставить("НомерДокумента", НомерДокумента); ОбластьМакета.Параметры.Заполнить(СтруктураПараметров); ТабличныйДокумент.Вывести(ОбластьМакета); // Выводим заголовок документа ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокДокумента"); ОбластьМакета.Параметры.Заполнить(ДанныеПечати); ОбластьМакета.Параметры.Заполнить(ДанныеПоСкладу); СтруктураПараметров = Новый Структура; СтруктураПараметров.Вставить("НомерДокумента", НомерДокумента); СтруктураПараметров.Вставить("ДатаСоставления", ДанныеПечати.ДатаСоставления); СведенияОПоставщике = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Поставщик, ДанныеПечати.ДатаСоставления); ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование"); СтруктураПараметров.Вставить("ПоставщикНаименование", ПредставлениеПоставщика); ОбластьМакета.Параметры.Заполнить(СтруктураПараметров); ТабличныйДокумент.Вывести(ОбластьМакета); КонецПроцедуры Процедура ЗаполнитьРеквизитыПодвалаМ4(ОбластьПодвала, ДанныеПечати) СтруктураПараметров = Новый Структура; КладовщикФИО = ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(ДанныеПечати.МОЛ, ДанныеПечати.Дата); КладовщикПринявшийТоварДолжностьФИО = СокрЛП(ДанныеПечати.ДолжностьМОЛ); Если ЗначениеЗаполнено(КладовщикПринявшийТоварДолжностьФИО) И ЗначениеЗаполнено(КладовщикФИО) Тогда КладовщикПринявшийТоварДолжностьФИО = КладовщикПринявшийТоварДолжностьФИО + ", "; КонецЕсли; СтруктураПараметров.Вставить("КладовщикПринявшийТоварДолжностьФИО", КладовщикПринявшийТоварДолжностьФИО + СокрЛП(КладовщикФИО)); ОбластьПодвала.Параметры.Заполнить(СтруктураПараметров); КонецПроцедуры Процедура ЗаполнитьТабличныйДокументМ4(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати) ВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить(); ДанныеПечати = ДанныеДляПечати.РезультатПоШапке.Выбрать(); ВыборкаПоДокументам = ДанныеДляПечати.РезультатПоТабличнойЧасти.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Макет = УправлениеПечатью.МакетПечатнойФормы("Обработка.ПечатьОбщихФорм.ПФ_MXL_UK_М4", "ru"); ПервыйДокумент = Истина; Пока ДанныеПечати.Следующий() Цикл СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка); Если НЕ ВыборкаПоДокументам.НайтиСледующий(СтруктураПоиска) Тогда Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='В документе %1 отсутствуют товары. Печать приходного ордера не требуется';uk='У документі %1 відсутні товари. Друк прибуткового ордера не потрібний'"), ДанныеПечати.Ссылка); ОбщегоНазначенияКлиентСервер.СообщитьПользователю( Текст, ДанныеПечати.Ссылка); Продолжить; КонецЕсли; НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1; ВыборкаПоСкладам = ВыборкаПоДокументам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаПоСкладам.Следующий() Цикл Если Не ПервыйДокумент Тогда ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ПервыйДокумент = Ложь; ЗаполнитьРеквизитыШапкиМ4(ДанныеПечати, ВыборкаПоСкладам, Макет, ТабличныйДокумент); // Выводим заголовок таблицы ОбластьЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы"); ТабличныйДокумент.Вывести(ОбластьЗаголовокТаблицы); НомерСтраницы = 1; // Создаем массив для проверки вывода МассивВыводимыхОбластей = Новый Массив; // Выводим многострочную часть докмента ОбластьМакета = Макет.ПолучитьОбласть("Строка"); ОбластьШапкаСтрок = Макет.ПолучитьОбласть("ШапкаСтрок"); ОбластьПодвалСтрок = Макет.ПолучитьОбласть("ПодвалСтрок"); ОбластьПодвала = Макет.ПолучитьОбласть("Подвал"); ЗаполнитьРеквизитыПодвалаМ4(ОбластьПодвала, ДанныеПечати); СтрокаТовары = ВыборкаПоСкладам.Выбрать(); КоличествоСтрок = СтрокаТовары.Количество(); НомерСтроки = 0; Пока СтрокаТовары.Следующий() Цикл ОбластьМакета.Параметры.Заполнить(СтрокаТовары); НомерСтроки = НомерСтроки + 1; СтруктураПараметров = Новый Структура; СтруктураПараметров.Вставить("ТоварНаименование", НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати( СтрокаТовары.ТоварНаименование, СтрокаТовары.Характеристика, , , , СтрокаТовары.ЭтоВозвратнаяТара, "uk" ) ); ОбластьМакета.Параметры.Заполнить(СтруктураПараметров); Если ДанныеПечати.Валюта <> ВалютаРегламентированногоУчета Тогда // Для внешнеэкономических документов(в валюте) регламентированная себестоимость(гривневая) должна расчитываться с учетом курсов полученных // авансов. Т.к. в конфигурации отсутствует полнофункциональный расчет регламентированной себестоимости, то рекомендуется указывать суммовые // показатели вручную, после определения корректной регламентированной себестоимости (напр. в "Бухгалтерия для Украины", // см. комментарий к проводкам "Корректировка суммы зачета аванса по курсам авансов") ОбластьМакета.Параметры.Цена = ""; ОбластьМакета.Параметры.СуммаСНДС = ""; КонецЕсли; МассивВыводимыхОбластей.Оч |
|||
1
userqwerty
20.11.19
✎
10:36
|
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати = Неопределено, ПараметрыВывода = Неопределено) Экспорт
ПараметрыПечати = Новый Структура; ПараметрыПечати.Вставить("ДополнитьКомплектВнешнимиПечатнымиФормами",Истина); СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивОбъектов); //Макет = ЭтотОбъект.ПолучитьМакет("ПФ_MXL_РасходнаяНакладная"); Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ОтчетКомиссионера") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "ОтчетКомиссионера", НСтр("ru='Отчет комиссионера';uk='Звіт комісіонера'"), СформироватьПечатнуюФормуОтчетПоКомиссии(СтруктураТипов, ОбъектыПечати, ПараметрыПечати, ПараметрыВывода), , , , Истина // ЭтоМногоязычнаяПечатнаяФорма ); КонецЕсли; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ОтчетКомиссионераСписание") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "ОтчетКомиссионераСписание", НСтр("ru='Отчет комиссионера';uk='Звіт комісіонера'"), СформироватьПечатнуюФормуОтчетПоКомиссииСписание(СтруктураТипов, ОбъектыПечати, ПараметрыПечати, ПараметрыВывода), , , , Истина // ЭтоМногоязычнаяПечатнаяФорма ); КонецЕсли; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "М4") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "М4", НСтр("ru='Приходный ордер (М-4)';uk='Прибутковий ордер (М-4)'"), СформироватьПечатнуюФормуМ4(СтруктураТипов, ОбъектыПечати, ПараметрыПечати)); КонецЕсли; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "РасходнаяНакладная") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "РасходнаяНакладная", НСтр("ru='Расходная накладная';uk='Видаткова накладна'"), СформироватьПечатнуюФормуРасходнаяНакладная(СтруктураТипов, ОбъектыПечати, ПараметрыПечати, ПараметрыВывода), , , , Истина // ЭтоМногоязычнаяПечатнаяФорма ); КонецЕсли; ФормированиеПечатныхФорм.ЗаполнитьПараметрыОтправки(ПараметрыВывода.ПараметрыОтправки, СтруктураТипов, КоллекцияПечатныхФорм); КонецПроцедуры Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = Новый Структура; МассивНазначений = Новый Массив; //МассивНазначений.Добавить("Документ.ЗаказПоставщику"); МассивНазначений.Добавить("Документ.РеализацияТоваровУслуг"); МассивНазначений.Добавить("Документ.РеализацияТоваровУслуг"); ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //возможны варианты - ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов, ПараметрыРегистрации.Вставить("Назначение", МассивНазначений); ПараметрыРегистрации.Вставить("Наименование", "ПФНовый"); //имя под kt обработка зарегистрирована будет в справочнике внешних обработок ПараметрыРегистрации.Вставить("Версия", "1.0"); ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь); ПараметрыРегистрации.Вставить("Информация", "ПФНовый"); //команды ТаблицаКоманд = Новый ТаблицаЗначений; ТаблицаКоманд.Колонки.Добавить("Представление"); //как будет выглядеть описание печ.формы для пользователя ТаблицаКоманд.Колонки.Добавить("Идентификатор"); //имя нашего макета ТаблицаКоманд.Колонки.Добавить("Использование"); //ВызовСерверногоМетода ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение",Новый ОписаниеТипов("Булево")); //Истина ТаблицаКоманд.Колонки.Добавить("Модификатор"); //ПечатьМХL //ДобавитьКоманду(ТаблицаКоманд, "Акт о списании с Розничными ценами", "ПФ_MXL_РасходнаяНакладная", "ВызовСерверногоМетода", Истина, "ПечатьMXL"); //УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПФНовый"); НоваяКоманда = ТаблицаКоманд.Добавить(); НоваяКоманда.Представление = "ПФНовый"; НоваяКоманда.Идентификатор = "ПФНовый"; //Внешняя печатная форма должан одинаково назваться как в модуле НоваяКоманда.Использование = "ВызовСерверногоМетода"; //здесь можно прописать использование как серверного так и клиентского, отличие в том, что серверный метод будет обращаться к экспортной процедуре из модуля объекта, клиентский - к экспортной процедуре из модуля формы объекта НоваяКоманда.ПоказыватьОповещение =// Команды.Колонки.Добавить("ПоказыватьОповещение", );; НоваяКоманда.Модификатор = "ПечатьMXL"; ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд); Возврат ПараметрыРегистрации; КонецФункции |
|||
2
dka80
20.11.19
✎
10:36
|
Табличный документ возвращается пустой или неопределено.
На будущее: кто будет читать весь твой код? |
|||
3
dka80
20.11.19
✎
10:38
|
Еще может быть неправильно зарегистрирована печатная форма: идентификатор не соответствует параметрам функции НужноПечататьМакет
|
|||
4
userqwerty
20.11.19
✎
10:41
|
(2) а как это проверить?
|
|||
5
mistеr
20.11.19
✎
10:55
|
(4) Отладчиком.
|
|||
6
userqwerty
20.11.19
✎
11:28
|
(5) внешнюю ПФ нельзя отладить.
|
|||
7
Mankubus
20.11.19
✎
12:09
|
(6) можно
|
|||
8
Mankubus
20.11.19
✎
12:10
|
||||
9
pechkin
20.11.19
✎
12:18
|
вот пример печ формы с формой отладки
https://github.com/acsent80/ExtForms-grdok/tree/master/src/Печатные формы/ЗаказКлиентаЗаявка |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |