|
Печатная форма недоступна. внешняя печатная форма. | ☑ | ||
---|---|---|---|---|
0
Анка_Пивовар
10.02.15
✎
14:20
|
Создала внешнюю печатную форму Бухгалтерия предприятия, редакция 3.0 (3.0.37.32)
Добавила в доп отчеты и обработки, при выводе из документа, пишет "Печатная форма недоступна". в чем может быть проблема? Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = Новый Структура; ПараметрыРегистрации.Вставить("Наименование", "Т-53"); ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); ПараметрыРегистрации.Вставить("Информация", "Любая дополнительная информация"); ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь); ПараметрыРегистрации.Вставить("Версия", "1.0"); МассивНазначений = Новый Массив; МассивНазначений.Добавить("Документ.РасходныйКассовыйОрдер"); ПараметрыРегистрации.Вставить("Назначение", МассивНазначений); тзКоманды = Новый ТаблицаЗначений; тзКоманды.Колонки.Добавить("Идентификатор"); тзКоманды.Колонки.Добавить("Представление"); тзКоманды.Колонки.Добавить("Модификатор"); тзКоманды.Колонки.Добавить("ПоказыватьОповещение"); тзКоманды.Колонки.Добавить("Использование"); строкаКоманды = тзКоманды.Добавить(); строкаКоманды.Идентификатор = "Т53"; строкаКоманды.Представление = "Т-53 внешняя"; строкаКоманды.Модификатор = "ПечатьMXL"; строкаКоманды.ПоказыватьОповещение = Истина; строкаКоманды.Использование = "ВызовСерверногоМетода"; ПараметрыРегистрации.Вставить("Команды", тзКоманды); Возврат ПараметрыРегистрации; КонецФункции Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Т53") Тогда ТабличныйДокумент = ПечатьТ53(МассивОбъектов, ОбъектыПечати); УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "Т53", НСтр("ru = 'Расходный кассовый ордер'"), ТабличныйДокумент, , "РасходныйКассовыйОрдер" ); КонецЕсли; КонецПроцедуры Функция ПечатьТ53(МассивОбъектов, ОбъектыПечати) //Менеджер = Документы[МассивОбъектов[0].Метаданные().Имя]; УстановитьПривилегированныйРежим(Истина); ТабличныйДокумент = Новый ТабличныйДокумент; ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ВедомостьНаВыплатуЗарплатыВКассу_Т53"; Макет = УправлениеПечатью.МакетПечатнойФормы("ОбщийМакет.ПФ_MXL_Т53"); НастройкиПечатныхФорм = ЗарплатаКадрыПовтИсп.НастройкиПечатныхФорм(); ВалютаУчета = ЗарплатаКадры.ВалютаУчетаЗаработнойПлаты(); // получаем данные для печати ВыборкаШапок = ВыборкаДляПечатиШапки(МассивОбъектов); ВыборкаСтрок = ВыборкаДляПечатиТаблицы(МассивОбъектов); ПервыйДокумент = Истина; Пока ВыборкаШапок.Следующий() Цикл // Документы нужно выводить на разных страницах. Если Не ПервыйДокумент Тогда ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ПервыйДокумент = Ложь; // Запомним номер строки, с которой начали выводить текущий документ. НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1; // подсчитываем количество страниц документа - для корректного разбиения на страницы ВсегоСтрокДокумента = ВыборкаСтрок.Количество(); ОбластьМакетаШапкаДокумента = Макет.ПолучитьОбласть("ШапкаДокумента"); ОбластьМакетаШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьМакетаСтрока = Макет.ПолучитьОбласть("Строка"); ОбластьМакетаИтогПоСтранице = Макет.ПолучитьОбласть("ИтогПоЛисту"); ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал"); // массив с двумя строками - для разбиения на страницы ВыводимыеОбласти = Новый Массив(); ВыводимыеОбласти.Добавить(ОбластьМакетаСтрока); ВыводимыеОбласти.Добавить(ОбластьМакетаИтогПоСтранице); // выводим данные о документе ОбластьМакетаШапкаДокумента.Параметры.Заполнить(ВыборкаШапок); ОбластьМакетаШапкаДокумента.Параметры.НазваниеОрганизации = СокрЛП(ОбластьМакетаШапкаДокумента.Параметры.НазваниеОрганизации); ОбластьМакетаШапкаДокумента.Параметры.НомерДок = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(ВыборкаШапок.НомерДок, Истина, Истина); ОбластьМакетаШапкаДокумента.Параметры.ОтчетныйПериодС = НачалоМесяца(ВыборкаШапок.ПериодРегистрации); ОбластьМакетаШапкаДокумента.Параметры.ОтчетныйПериодПо = ?(НЕ ЗначениеЗаполнено(ВыборкаШапок.ПериодРегистрации), ВыборкаШапок.ПериодРегистрации, КонецМесяца(ВыборкаШапок.ПериодРегистрации)); Если НастройкиПечатныхФорм.ВыводитьПолнуюИерархиюПодразделений И ЗначениеЗаполнено(ОбластьМакетаШапкаДокумента.Параметры.Подразделение) Тогда ОбластьМакетаШапкаДокумента.Параметры.Подразделение = ОбластьМакетаШапкаДокумента.Параметры.Подразделение.ПолноеНаименование(); КонецЕсли; Если ВыборкаШапок.СуммаПоДокументу <> 0 Тогда ОбластьМакетаШапкаДокумента.Параметры.СуммаДок = РаботаСКурсамиВалют.СформироватьСуммуПрописью(ВыборкаШапок.СуммаПоДокументу, ВалютаУчета); ОбластьМакетаШапкаДокумента.Параметры.СуммаДокРублей = Цел(ВыборкаШапок.СуммаПоДокументу); ОбластьМакетаШапкаДокумента.Параметры.СуммаДокКопеек = (ВыборкаШапок.СуммаПоДокументу - Цел(ВыборкаШапок.СуммаПоДокументу)) * 100 КонецЕсли; ОбластьМакетаПодвал.Параметры.Заполнить(ВыборкаШапок); // Подвал документа. // Строка не локализуется т.к. является частью регламентированной формы, применяемой в РФ ОбластьМакетаПодвал.Параметры.РКО = "Расходный кассовый ордер № _______ от ""___"" ___________ 20 ___ г."; ТабличныйДокумент.Вывести(ОбластьМакетаШапкаДокумента); ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); ТабличныйДокумент.Вывести(ОбластьМакетаШапка); ВыведеноСтраниц = 1; ВыведеноСтрок = 0; ИтогоНаСтранице = 0; Итого = 0; // выводим данные по строкам документа. НомерСтроки = 0; ВыборкаСтрок.Сбросить(); Пока ВыборкаСтрок.НайтиСледующий(ВыборкаШапок.Ссылка, "Ведомость") Цикл НомерСтроки = НомерСтроки + 1; ОбластьМакетаСтрока.Параметры.Заполнить(ВыборкаСтрок); ОбластьМакетаСтрока.Параметры.НомерСтроки = НомерСтроки; ОбластьМакетаСтрока.Параметры.ТабельныйНомер = ПрефиксацияОбъектовКлиентСервер.УдалитьПрефиксыИзНомераОбъекта(ВыборкаСтрок.ТабельныйНомер, Истина); Если НастройкиПечатныхФорм.ВыводитьПолныеФИОВСписочныхПечатныхФормах Тогда ОбластьМакетаСтрока.Параметры.Физлицо = СокрЛП(ВыборкаСтрок.Фамилия) + ?(ПустаяСтрока(ВыборкаСтрок.Имя), "", " " + ВыборкаСтрок.Имя) + ?(ПустаяСтрока(ВыборкаСтрок.Отчество), "", " " + ВыборкаСтрок.Отчество); Иначе ОбластьМакетаСтрока.Параметры.Физлицо = ФизическиеЛицаКлиентСервер.ФамилияИнициалыФизЛица(Неопределено, ВыборкаСтрок.Фамилия, ВыборкаСтрок.Имя, ВыборкаСтрок.Отчество); КонецЕсли; // разбиение на страницы ВыведеноСтрок = ВыведеноСтрок + 1; // Проверим, уместится ли строка на странице или надо открывать новую страницу ВывестиПодвалЛиста = Не ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ТабличныйДокумент, ВыводимыеОбласти); Если Не ВывестиПодвалЛиста и ВыведеноСтрок = ВсегоСтрокДокумента Тогда ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал); ВывестиПодвалЛиста = Не ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ТабличныйДокумент, ВыводимыеОбласти); КонецЕсли; Если ВывестиПодвалЛиста Тогда ОбластьМакетаИтогПоСтранице.Параметры.ИтогоНаСтранице = ИтогоНаСтранице; ТабличныйДокумент.Вывести(ОбластьМакетаИтогПоСтранице); ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); ТабличныйДокумент.Вывести(ОбластьМакетаШапка); ВыведеноСтраниц = ВыведеноСтраниц + 1; ИтогоНаСтранице = 0; КонецЕсли; ТабличныйДокумент.Вывести(ОбластьМакетаСтрока); ИтогоНаСтранице = ИтогоНаСтранице + ВыборкаСтрок.Сумма; Итого = Итого + ВыборкаСтрок.Сумма; КонецЦикла; // по строкам документа Если ВыведеноСтрок > 0 Тогда ОбластьМакетаИтогПоСтранице.Параметры.ИтогоНаСтранице = ИтогоНаСтранице; КонецЕсли; ОбластьМакетаПодвал.Параметры.КоличествоЛистов = ?(ВыведеноСтрок = 0,"",ВыведеноСтраниц + 1); ВыводимыеОбласти = Новый Массив(); ВыводимыеОбласти.Добавить(ОбластьМакетаСтрока); ВыводимыеОбласти.Добавить(ОбластьМакетаИтогПоСтранице); ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал); Для Сч = 1 По ОбластьМакетаСтрока.Параметры.Количество() Цикл ОбластьМакетаСтрока.Параметры.Установить(Сч - 1,""); КонецЦикла; ОбластьМакетаСтрока.Параметры.Физлицо = " "; Пока ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ТабличныйДокумент, ВыводимыеОбласти) Цикл ТабличныйДокумент.Вывести(ОбластьМакетаСтрока); КонецЦикла; ТабличныйДокумент.Вывести(ОбластьМакетаИтогПоСтранице); ТабличныйДокумент.Вывести(ОбластьМакетаПодвал); // В табличном документе необходимо задать имя области, в которую был // выведен объект. Нужно для возможности печати покомплектно УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаШапок.Ссылка); КонецЦикла; // по документам Возврат ТабличныйДокумент; КонецФункции Функция ВыборкаДляПечатиШапки(Ведомости) Экспорт Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; // Установим параметры запроса Запрос.УстановитьПараметр("Ведомости", Ведомости); Запрос.Текст = "ВЫБРАТЬ | ВедомостьВКассу.Ссылка, | ВедомостьВКассу.Номер, | ВедомостьВКассу.Дата, | ВедомостьВКассу.ПериодРегистрации КАК ПериодРегистрации, | ВедомостьВКассу.Организация КАК Организация, | ВЫРАЗИТЬ(ВедомостьВКассу.Организация.НаименованиеПолное КАК СТРОКА(300)) КАК НазваниеОрганизации, | ВедомостьВКассу.Организация.КодПоОКПО КАК КодПоОКПО, | ВедомостьВКассу.СуммаДокумента КАК СуммаПоДокументу |ПОМЕСТИТЬ ВТДанныеДокументов |ИЗ | Документ.ВедомостьНаВыплатуЗарплаты КАК ВедомостьВКассу |ГДЕ | ВедомостьВКассу.Ссылка В(&Ведомости)"; Запрос.Выполнить(); ИменаПолейОтветственныхЛиц = Новый Массив; ИменаПолейОтветственныхЛиц.Добавить("Руководитель"); ИменаПолейОтветственныхЛиц.Добавить("ГлавныйБухгалтер"); ИменаПолейОтветственныхЛиц.Добавить("Кассир"); ИменаПолейОтветственныхЛиц.Добавить("Бухгалтер"); //ЗарплатаКадры.СоздатьВТФИООтветственныхЛиц(Запрос.МенеджерВременныхТаблиц, Ложь, ИменаПолейОтветственныхЛиц, "ВТДанныеДокументов"); Запрос.Текст = "ВЫБРАТЬ | ВТДанныеДокументов.Ссылка, | ВТДанныеДокументов.Номер КАК НомерДок, | ВТДанныеДокументов.Дата КАК ДатаДок, | ВТДанныеДокументов.ПериодРегистрации, | ВТДанныеДокументов.Организация, | ВТДанныеДокументов.НазваниеОрганизации, | ВТДанныеДокументов.КодПоОКПО, //| ВТДанныеДокументов.Подразделение, | ВТДанныеДокументов.СуммаПоДокументу, | """" КАК Руководитель, | """" как РуководительДолжность, | """" КАК ГлавныйБухгалтер, | """" КАК Кассир, | """" как КассирДолжность, | """" КАК Бухгалтер |ИЗ | ВТДанныеДокументов КАК ВТДанныеДокументов //| ЛЕВОЕ СОЕДИНЕНИЕ ВТФИООтветственныхЛиц КАК ВТФИОРуководителейПоследние //| ПО ВТДанныеДокументов.Ссылка = ВТФИОРуководителейПоследние.Ссылка //| И ВТДанныеДокументов.Руководитель = ВТФИОРуководителейПоследние.ФизическоеЛицо //| ЛЕВОЕ СОЕДИНЕНИЕ ВТФИООтветственныхЛиц КАК ВТФИОГлавБухПоследние //| ПО ВТДанныеДокументов.Ссылка = ВТФИОГлавБухПоследние.Ссылка //| И ВТДанныеДокументов.ГлавныйБухгалтер = ВТФИОГлавБухПоследние.ФизическоеЛицо //| ЛЕВОЕ СОЕДИНЕНИЕ ВТФИООтветственныхЛиц КАК ВТФИОКассирПоследние //| ПО ВТДанныеДокументов.Ссылка = ВТФИОКассирПоследние.Ссылка //| И ВТДанныеДокументов.Кассир = ВТФИОКассирПоследние.ФизическоеЛицо //| ЛЕВОЕ СОЕДИНЕНИЕ ВТФИООтветственныхЛиц КАК ВТФИОБухгалтерПоследние //| ПО ВТДанныеДокументов.Ссылка = ВТФИОБухгалтерПоследние.Ссылка //| И ВТДанныеДокументов.Бухгалтер = ВТФИОБухгалтерПоследние.ФизическоеЛицо | |УПОРЯДОЧИТЬ ПО | ВТДанныеДокументов.Дата, | ВТДанныеДокументов.Номер"; Возврат Запрос.Выполнить().Выбрать(); КонецФункции // Формирует запрос по табличной части документа // // Параметры: // Ведомости - массив ДокументСсылка.ВедомостьНаВыплатуЗарплатыВБанк // // Возвращаемое значение: // Выборка из результата запроса // Функция ВыборкаДляПечатиТаблицы(Ведомости) Экспорт Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("Ведомости", Ведомости); Запрос.Текст = "ВЫБРАТЬ | ВедомостьЗарплата.Ссылка КАК Ссылка, | ВедомостьЗарплата.Ссылка.Дата КАК Период, | МИНИМУМ(ВедомостьЗарплата.НомерСтроки) КАК НомерСтроки, | ВедомостьЗарплата.ФизическоеЛицо КАК Сотрудник, | СУММА(ВедомостьЗарплата.Сумма) КАК Сумма |ПОМЕСТИТЬ ВТДанныеДокументов |ИЗ | Документ.ВедомостьНаВыплатуЗарплаты.Зарплата КАК ВедомостьЗарплата |ГДЕ | ВедомостьЗарплата.Ссылка В(&Ведомости) | |СГРУППИРОВАТЬ ПО | ВедомостьЗарплата.Ссылка, | ВедомостьЗарплата.Ссылка.Дата, | ВедомостьЗарплата.ФизическоеЛицо"; Запрос.Выполнить(); //ОписательВременныхТаблиц = // КадровыйУчет.ОписательВременныхТаблицДляСоздатьВТКадровыеДанныеСотрудников( // Запрос.МенеджерВременныхТаблиц, // "ВТДанныеДокументов"); //КадровыйУчет.СоздатьВТКадровыеДанныеСотрудников(ОписательВременныхТаблиц, Истина, "ТабельныйНомер, Фамилия, Имя, Отчество"); Запрос.Текст = "ВЫБРАТЬ | ДанныеДокументов.Ссылка КАК Ведомость, |"" как ТабельныйНомер, |"" как Фамилия, |"" как Имя, |"" как Отчество, //| КадровыеДанныеСотрудников.ТабельныйНомер КАК ТабельныйНомер, //| КадровыеДанныеСотрудников.Фамилия, //| КадровыеДанныеСотрудников.Имя, //| КадровыеДанныеСотрудников.Отчество, | ДанныеДокументов.Сумма КАК Сумма |ИЗ | ВТДанныеДокументов КАК ДанныеДокументов //| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудников КАК КадровыеДанныеСотрудников //| ПО ДанныеДокументов.Сотрудник = КадровыеДанныеСотрудников.Сотрудник //| И ДанныеДокументов.Период = КадровыеДанныеСотрудников.Период | |УПОРЯДОЧИТЬ ПО | ДанныеДокументов.Ссылка, | ДанныеДокументов.НомерСтроки"; Возврат Запрос.Выполнить().Выбрать(); КонецФункции |
|||
1
laeg
10.02.15
✎
14:25
|
Значит где то ошибка. На инфостарте пробегала обработка для отладки внешних печатных форм для УФ. Она тебе в помошь.
|
|||
2
Анка_Пивовар
10.02.15
✎
14:27
|
(1) все нашла! спасибо!
|
|||
3
_KaA
10.02.15
✎
14:30
|
(0) Это у вас табличный документ не сформировался...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |