Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
06 апр 2025, 21:01

Как открыть внешний отчет из другого внешнего отчета?

Автор MKozzlik, 24 янв 2013, 12:54

0 Пользователей и 1 гость просматривают эту тему.

MKozzlik

Здравствуйте!
Имеется внешний отчет, при нажатии на ячейку на печатной форме должен открываться другой внешний отчет, и надо еще как-то передать параметры из одного отчета в другой. Платформа 8.1, может кто-нибудь сталкивался с таким?

Klyacksa

Используйте ОбработкуРасшифровки первого отчета, и открывайте по ней все, что хотите. Параметры передавать можно по-разному. Если это реквизиты первой обработки, то можно назначить ее владельцем второй, и обращаться как ВтораяОбработка.Владелец.НужныеРеквизитВладельца.
Или создать реквизиты во второй обработке, и при ее создании (до открытия и формирования), в той же обработке расшифровки заполнить эти реквизиты.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

MKozzlik

В обработке расшифровки прописываю такой код

Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) ЗапускаемаяОбработка = Справочники.ВнешниеОбработки.НайтиПоКоду("Ц00000017", Истина); ЗапускаемаяОбработка.ПолучитьФорму().Открыть(); КонецПроцедуры

Открывается форма "Регистрация внешнего отчета", а мне надо Именно форму отчета. если пишу так: ЗапускаемаяОбработка.ПолучитьФорму("ФормаОтчета").Открыть();  выдается ошибка

Klyacksa

СтандартнуюОБработку отмените.
Потому что получаете не форму самой обработки, а форму элемента справочника с кодом "Ц00000017". Чтобы открыть саму обработку, посмотрите как работает справочник. Откройте форму элемента справочника, там наверняка есть кнопочка по запуску/открытию обработки, посмотрите, как там это делается и что где хранится.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

MKozzlik

Спасибо! Открыть форму получилось, но мне еще надо передать параметры во внешнюю обработку и запустить выполнение процедуры, чтобы при открытии второй внешней обработки на форме в табличном поле сформировался отчет, пишу такой код, это в первой обработке из которой открываю:
СсылкаНаОбъект = Справочники.ВнешниеОбработки.НайтиПоКоду("Ц00000017"); ЭтоОтчет = ?(СсылкаНаОбъект.ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.Отчет, Истина, Ложь); Если НЕ ЭтоОтчет Тогда   Возврат; КонецЕсли; ИмяФайла = ПолучитьИмяВременногоФайла(); ДвоичныеДанные = СсылкаНаОбъект.ХранилищеВнешнейОбработки.Получить(); ДвоичныеДанные.Записать(ИмяФайла); ВнешнийОтчет = ВнешниеОтчеты.Создать(ИмяФайла); ВнешнийОтчет.НачПериода = НачПериода; ВнешнийОтчет.КонПериода = КонПериода; ВнешнийОтчет.Менеджер = Менеджер; ВнешнийОтчет.Организация = Организация; ВнешнийОтчет.Подразделение = Подразделение; ВнешнийОтчет.Склад = Склад; ВнешнийОтчет.СформироватьОтчет(); Форма = ВнешниеОтчеты.ПолучитьФорму(ИмяФайла); Если Не Форма = Неопределено Тогда   Форма.ОткрытьМодально(); Иначе   Сообщить("Форма открываемой обработки или отчета не определена.", СтатусСообщения.БезСтатуса); КонецЕсли; УдалитьФайлы(ИмяФайла);

Параметры передаются, функция вроде как выполняется, но на форме табличное поле пустое! (НачПериода, КонПериода, Организация, Подразделение, Склад - это реквизиты отчета)

Klyacksa

Получаете форму от нового экземпляра отчета, а не от того, который формировали. Поэтому и пустые поля!
Попробуйте открыть как
Форма = ВнешнийОтчет.ПолучитьФорму();
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

MKozzlik

Если пробую так

Форма = ВнешнийОтчет.ПолучитьФорму();

то ругается, выдает ошибку:

{Форма.ФормаОтчета.Форма(353)}: Недостаточно фактических параметров
   Форма = ВнешниеОтчеты.ПолучитьФорму();

Klyacksa

Так в ошибке так и осталось "ВнешниеОтчеты"
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

MKozzlik

Ой, простите, да действительно, сейчас все получилось!

Nitro

MKozzlik, Подскажите как открыть управляемую форму с этим отчетом?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск