![]() |
![]() |
![]() |
|
1С ДО, Внешняя обработка maxab72, Страждущий, Масянька, sergey198, 2S, Gucci76, Hawk_1c, Wern, reg0303, Волшебник, denk32, d4rkmesa, phabeZ, ДобрыйПутник, PuhUfa, soldierboy, PLUT, Garykom, formista2000, Timon1405, Хряк, JohnGilbert, zippygrill, Homer, lEvGl, laeg, DimR_71, Eiffil123
| ☑ | ||
---|---|---|---|---|
0
soldierboy
27.06.25
✎
09:18
|
Всем привет, написал код для внешней печатной формы, загрузил внешнюю обработку в "Дополнительные отчеты и обработки" и при печати документа выдает ошибку печатная форма недоступна. Уже перепроверил название макета указанного в коде, но результат ноль. Версия Документооборота КОРП ред 3.0.
Вот код обработки#Область СведенияОВнешнейОбработке Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = Новый Структура; ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); МассивНазначений = Новый Массив; МассивНазначений.Добавить("Справочник.ДокументПредприятия"); ПараметрыРегистрации.Вставить("Назначение", МассивНазначений); ПараметрыРегистрации.Вставить("Наименование", "Шаблон договора с внешним экспертом"); ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ); ПараметрыРегистрации.Вставить("Версия", "1.0"); ПараметрыРегистрации.Вставить("Информация", "Внешняя печатная форма ""Шаблон договора с внешним экспертом"); ТаблицаКоманд = ПолучитьТаблицуКоманд(); ДобавитьКоманду(ТаблицаКоманд, "Шаблон договора с внешним экспертом", "ДоговорСВнешнимЭкспертом", "ВызовСерверногоМетода"); ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд); Возврат ПараметрыРегистрации; КонецФункции Функция ПолучитьТаблицуКоманд() Команды = Новый ТаблицаЗначений; Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")); Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка")); Возврат Команды; КонецФункции Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование = "ВызовСерверногоМетода", ПоказыватьОповещение = Ложь, Модификатор = "ПечатьMXL") НоваяКоманда = ТаблицаКоманд.Добавить(); НоваяКоманда.Представление = Представление; НоваяКоманда.Идентификатор = Идентификатор; НоваяКоманда.Использование = Использование; НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение; НоваяКоманда.Модификатор = Модификатор; КонецПроцедуры #КонецОбласти Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыПечати) Экспорт ПараметрыПечати = Новый Структура; //Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Спецификация") Тогда // СформироватьПечатнуюФорму(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, "Спецификация", "Спецификация", // ОбъектыПечати, ПараметрыВывода); //КонецЕсли; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ДоговорСВнешнимЭкспертом") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "ДоговорСВнешнимЭкспертом", ////////////**********************Понять для чего нужна эта строка НСтр("ru = 'Договор с экспертами'"), СформироватьПечатнуюФорму(МассивОбъектов,ОбъектыПечати, ПараметрыПечати), , "ПФ_ДоговорСВнешнимЭкспертом" ); КонецЕсли; КонецПроцедуры Функция СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати, ПараметрыПечати) Экспорт // Объявление переменных Перем ТабличныйДокумент, Макет, Договор, РезультатЗапроса; Перем ВыборкаДетальныеЗаписи, ОбластьМакета; // Инициализация табличного документа ТабличныйДокумент = Новый ТабличныйДокумент; ТабличныйДокумент.АвтоМасштаб = Истина; ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет; // Получаем макет печатной формы Макет = ПолучитьМакет("ПФ_ДоговорСВнешнимЭкспертом"); // Проверяем входные данные Если МассивОбъектов.Количество() = 0 Тогда Возврат ТабличныйДокумент; КонецЕсли; // Обрабатываем каждый документ в массиве Для Каждого Договор Из МассивОбъектов Цикл // Запрос данных контрагента Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Контрагенты.ИНН КАК ИНН, | Контрагенты.ОсновнойБанковскийСчет КАК ОсновнойБанковскийСчет, | Контрагенты.ОсновнойБанковскийСчет.Банк.Код КАК ОсновнойБанковскийСчетБанкКод, | Контрагенты.ОсновнойБанковскийСчет.Банк.КоррСчет КАК ОсновнойБанковскийСчетБанкКоррСчет, | Контрагенты.ОсновнойБанковскийСчет.НомерСчета КАК ОсновнойБанковскийСчетНомерСчета, | Контрагенты.КонтактнаяИнформация.АдресЭП КАК АдресЭП, | Контрагенты.ОсновнойБанковскийСчет.Банк КАК ОсновнойБанковскийСчетБанк |ИЗ | Справочник.Контрагенты КАК Контрагенты |ГДЕ | Контрагенты.Ссылка = &Контрагенты"; Запрос.УстановитьПараметр("Контрагенты", Договор); Попытка РезультатЗапроса = Запрос.Выполнить(); Исключение // Логирование ошибки запроса ЗаписьЖурналаРегистрации("ОшибкаПечатнойФормы", УровеньЖурналаРегистрации.Ошибка, , "Ошибка выполнения запроса: " + ОписаниеОшибки()); Продолжить; КонецПопытки; // Проверка результатов запроса Если РезультатЗапроса = Неопределено ИЛИ РезультатЗапроса.Пустой() Тогда Продолжить; КонецЕсли; // Получаем данные контрагента ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Если Не ВыборкаДетальныеЗаписи.Следующий() Тогда Продолжить; КонецЕсли; // Выводим основные области документа Попытка // Шапка договора ОбластьМакета = Макет.ПолучитьОбласть("ШапкаДоговор"); ТабличныйДокумент.Вывести(ОбластьМакета); // Основные разделы договора ВывестиОбластьМакета(Макет, ТабличныйДокумент, "Шапка"); ВывестиОбластьМакета(Макет, ТабличныйДокумент, "ПредметДоговора"); ВывестиОбластьМакета(Макет, ТабличныйДокумент, "ОбязательстваСторон"); ВывестиОбластьМакета(Макет, ТабличныйДокумент, "ЦенаРаботИПорядокОплаты"); ВывестиОбластьМакета(Макет, ТабличныйДокумент, "СрокиИУсловияВыполненияРабот"); ВывестиОбластьМакета(Макет, ТабличныйДокумент, "ОтветственностьСторон"); ВывестиОбластьМакета(Макет, ТабличныйДокумент, "КонфиденциальнаяИнформация"); ВывестиОбластьМакета(Макет, ТабличныйДокумент, "СрокДействияДоговора"); ВывестиОбластьМакета(Макет, ТабличныйДокумент, "ЗаключительноеПоложение"); // Реквизиты и подписи сторон ОбластьМакета = Макет.ПолучитьОбласть("РеквизитыИПодписиСторон"); ОбластьМакета.Параметры.Почта = ВыборкаДетальныеЗаписи.АдресЭП; ОбластьМакета.Параметры.ИНН = ВыборкаДетальныеЗаписи.ИНН; ОбластьМакета.Параметры.БИК = ВыборкаДетальныеЗаписи.ОсновнойБанковскийСчетБанкКод; ОбластьМакета.Параметры.КоррСчет = ВыборкаДетальныеЗаписи.ОсновнойБанковскийСчетБанкКоррСчет; ОбластьМакета.Параметры.НомерСчета = ВыборкаДетальныеЗаписи.ОсновнойБанковскийСчетНомерСчета; ОбластьМакета.Параметры.Банк = ВыборкаДетальныеЗаписи.ОсновнойБанковскийСчетБанк; // Дополнительные реквизиты ЗаполнитьДополнительныеРеквизиты(ОбластьМакета, Договор); ТабличныйДокумент.Вывести(ОбластьМакета); // Акт работ ОбластьМакета = Макет.ПолучитьОбласть("АктРабот"); ЗаполнитьПараметрыАкта(ОбластьМакета, Договор); ТабличныйДокумент.Вывести(ОбластьМакета); Исключение // Логирование ошибки формирования печатной формы ЗаписьЖурналаРегистрации("ОшибкаПечатнойФормы", УровеньЖурналаРегистрации.Ошибка, , "Ошибка формирования печатной формы: " + ОписаниеОшибки()); КонецПопытки; КонецЦикла; Возврат ТабличныйДокумент; КонецФункции // Вспомогательная процедура для вывода области макета Процедура ВывестиОбластьМакета(Макет, ТабличныйДокумент, ИмяОбласти) Область = Макет.ПолучитьОбласть(ИмяОбласти); ТабличныйДокумент.Вывести(Область); КонецПроцедуры // Вспомогательная процедура для заполнения дополнительных реквизитов Процедура ЗаполнитьДополнительныеРеквизиты(ОбластьМакета, Договор) Перем Значение; // СНИЛС Значение = ПолучитьЗначениеРеквизита(Договор, "СНИЛС"); ОбластьМакета.Параметры.СНИЛС = Значение; // Паспортные данные Значение = ПолучитьЗначениеРеквизита(Договор, "Дата Рождения"); ОбластьМакета.Параметры.ДатаРождения = Значение; Значение = ПолучитьЗначениеРеквизита(Договор, "Серия Паспорта"); ОбластьМакета.Параметры.СерияПаспорта = Значение; Значение = ПолучитьЗначениеРеквизита(Договор, "Номер паспорта"); ОбластьМакета.Параметры.НомерПаспорта = Значение; Значение = ПолучитьЗначениеРеквизита(Договор, "Кем Выдан"); ОбластьМакета.Параметры.КемВыданПаспорт = Значение; Значение = ПолучитьЗначениеРеквизита(Договор, "ДатаВыдачи"); ОбластьМакета.Параметры.ДатаВыдачиПаспорта = Значение; // Адрес Значение = ПолучитьЗначениеРеквизита(Договор, "Адрес Регистрации"); ОбластьМакета.Параметры.АдресРегистрации = Значение; // ФИО Значение = ПолучитьЗначениеРеквизита(Договор, "ФИО"); ОбластьМакета.Параметры.ФИО = Значение; КонецПроцедуры // Вспомогательная процедура для заполнения параметров акта Процедура ЗаполнитьПараметрыАкта(ОбластьМакета, Договор) Перем Значение; // Дата акта Значение = ПолучитьЗначениеРеквизита(Договор, "Дата"); Если Значение = Неопределено Тогда Значение = ТекущаяДата(); КонецЕсли; ОбластьМакета.Параметры.Дата = Значение; // Номер договора Значение = ПолучитьЗначениеРеквизита(Договор, "НомерДоговора2"); ОбластьМакета.Параметры.НомерДоговора = Значение; // Дата договора Значение = ПолучитьЗначениеРеквизита(Договор, "ДатаДоговора2"); Если Значение = Неопределено Тогда Значение = ТекущаяДата(); КонецЕсли; ОбластьМакета.Параметры.ДатаДоговора = Значение; КонецПроцедуры // Вспомогательная функция для получения значения реквизита Функция ПолучитьЗначениеРеквизита(Договор, ИмяРеквизита) Реквизит = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(ИмяРеквизита); Если Реквизит = Неопределено Тогда Возврат ""; КонецЕсли; Возврат УправлениеСвойствами.ЗначениеСвойства(Договор, Реквизит); КонецФункции |
|||
1
Волшебник
27.06.25
✎
11:23
|
Какой полный текст ошибки?
|
|||
2
soldierboy
27.06.25
✎
11:41
|
При печати документа выводит "Печатная форма недоступна"
|
|||
3
Волшебник
27.06.25
✎
11:43
|
(2) Найдите это сообщение в программном коде и проверьте условия его выдачи
|
|||
4
reg0303
27.06.25
✎
11:50
|
ТабличныйДокумент = Неопределено?
|
|||
5
Gucci76
27.06.25
✎
12:25
|
(0) Поищите как отлаживать ВПФ. А дальше дело техники.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |