Необходимо вызвать программно внешнюю печатную форму. Есть справочник "Внешние обработки", где хранятся внешние печатные формы и обработки, как вызвать функцию во внешней печатной форме?
Обр = Справочники.ВнешниеОбработки.НайтиПоКоду("000000058");
Если Обр = Справочники.ВнешниеОбработки.ПустаяСсылка() Тогда
Сообщить("Внешняя печатная форма не найдена");
Иначе
ВнешняяПечатнаяФорма=обр.ПолучитьОбъект();
ТабДок=ВнешняяПечатнаяФорма.Печать();
УниверсальныеМеханизмы.НапечататьДокумент(ТабДок, 2, Ложь, "ррр");
Конечно же такая конструкция не работает...
Обр = Справочники.ВнешниеОбработки.НайтиПоКоду("000000058");
Если Обр = Справочники.ВнешниеОбработки.ПустаяСсылка() Тогда
Сообщить("Внешняя печатная форма не найдена");
Иначе
ВнешняяПечатнаяФорма=обр.ПолучитьОбъект();
ТабДок=ВнешняяПечатнаяФорма.Печать();
УниверсальныеМеханизмы.НапечататьДокумент(ТабДок, 2, Ложь, "ррр");
Конечно же такая конструкция не работает...
По теме из базы знаний
- Шаблон печатной формы для вывода информации в MS Word
- Вывод печатных форм с запросом данных в форму "Печать документов" из подсистемы БСП "Печать".
- Универсальная печатная форма "Анализ объекта" + шаблон подключаемой обработки для 1С на управляемых формах + отладка внешней печатной формы.
- Программное формирование существующих печатных форм
- Указание имени файла при сохранении печатной формы
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Вот рабочий пример открытия внешнего отчета:
ТекСсылка = Справочники.ВнешниеОбработки.НайтиПоКоду("000000028");
ИмяФайла = ПолучитьИмяВременногоФайла();
ДвоичныеДанные = ТекСсылка.ХранилищеВнешнейОбработки.Получить();
ДвоичныеДанные.Записать(ИмяФайла);
Если ТекСсылка.ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.Отчет Тогда
Форма = ВнешниеОтчеты.ПолучитьФорму(ИмяФайла);
Иначе
Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);
КонецЕсли;
Форма.Открыть();
УдалитьФайлы(ИмяФайла);
Показать
напрямую никак, можно передать параметр в открываемую форму, а во внешней обработке при открытии проверять параметр и вызывать функцию. кстати, очень странно вы пытаетесь печатную форму открыть, печатная форма как правило привязана к объекту, и без него не имеет смысла, так что процедура Печать() врядли чего хорошего вернет, кроме ошибки.
Если Контрагент=Справочники.Контрагенты.НайтиПоКоду("8627") Тогда
ТекСсылка = Справочники.ВнешниеОбработки.НайтиПоКоду("000000058");
Если Обр = Справочники.ВнешниеОбработки.ПустаяСсылка() Тогда
Сообщить("Внешняя печатная форма не найдена");
Иначе
ИмяФайла = ПолучитьИмяВременногоФайла();
ДвоичныеДанные = ТекСсылка.ХранилищеВнешнейОбработки.Получить();
ДвоичныеДанные.Записать(ИмяФайла);
Объект = ТекСсылка.ПолучитьОбъект();
Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);
Форма.ОбработкаОбъект.ЭтотОбъект.СсылкаНаОбъект=ЭтотОбъект.Ссылка;
Форма.Открыть();
Форма.Закрыть();
УдалитьФайлы(ИмяФайла);
КонецЕсли;
Все получилось! Спасибо!(5) AlexInqMetal,
ТекСсылка = Справочники.ВнешниеОбработки.НайтиПоКоду("000000058");
Если Обр = Справочники.ВнешниеОбработки.ПустаяСсылка() Тогда
Сообщить("Внешняя печатная форма не найдена");
Иначе
ИмяФайла = ПолучитьИмяВременногоФайла();
ДвоичныеДанные = ТекСсылка.ХранилищеВнешнейОбработки.Получить();
ДвоичныеДанные.Записать(ИмяФайла);
Объект = ТекСсылка.ПолучитьОбъект();
Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);
Форма.ОбработкаОбъект.ЭтотОбъект.СсылкаНаОбъект=ЭтотОбъект.Ссылка;
Форма.Открыть();
Форма.Закрыть();
УдалитьФайлы(ИмяФайла);
КонецЕсли;
Все получилось! Спасибо!(5) AlexInqMetal,
попробуйте так
ТекСсылка = Справочники.ВнешниеОбработки.НайтиПоКоду("000000028");
ИмяФайла = ПолучитьИмяВременногоФайла();
ДвоичныеДанные = ТекСсылка.ХранилищеВнешнейОбработки.Получить();
ДвоичныеДанные.Записать(ИмяФайла);
Объект = ТекСсылка.ПолучитьОбъект();
ЗначениеФункции = Объект.ИмяВашейФункции; // если она экспортная
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот