Имя: Пароль:
1C
1С v8
Встроить внешний отчет в интерфейс.
0 ShramkoRS
 
31.01.23
13:00
УПП. 1.3.192.2. Вобщем вот какая ситуация. Один из общих интерфейсов имеет элемент панели Отчеты, там есть два отчета которые ссылаются на отчеты в самой конфе. Однако недавно из конфы эти отчеты удалили и заменили их внешними отчетами. Соответсвенно кнопки в элементе панели, которые ведут к ныне удаленным документам не работают. И задача сводится просто тому чтоб назначить кнопке действие, которое будет открывать анлогичный внешний отчет, однако когда я няажал выбрать, чтоб выбрать другое действие я нигде там не нашел возможности сослаться на внешний отчет.

1. Возможно ли вообще запихнуть в конопку эдемента панели интерфеса внешний отчет/обработку

2. Если можно то, что тыкать?

З.Ы. Скрины отпралять не могу, увы.
1 Мультук
 
гуру
31.01.23
13:11
(0)

Это ведь обычные формы, да? (судя по картинкам из гугла)

Добавляем в интерфейс новую команду и немного тыкаем в ней мышкой в строку "действия".
1С предложит создать процедуру в одном из общих модулей, создаём.

В процедуре пишем код (гуглим) для открытия внешнего отчета.
2 mgreat
 
31.01.23
13:14
в общем модуле делаем экспортную процедуру, в которой пишем
    обработка = ПолучитьВнешнююОбработку("название моего отчета, как оно задано во внешних отчетах в УПП",Истина);
    Форма = обработка.ПолучитьФорму();
    Форма.Открыть();

и эту процедуру в интерфейсе в строчке "действие" прописываем
3 mgreat
 
31.01.23
13:15
Функция ПолучитьВнешнююОбработку(ИмяОбработки, ЭтоОтчет = Ложь) Экспорт
    Попытка
        
        Спр = Справочники.ВнешниеОбработки.НайтиПоНаименованию(ИмяОбработки, Истина);
        ИмяФайла = ПолучитьИмяВременногоФайла();
        ДвоичныеДанные = Спр.ХранилищеВнешнейОбработки.Получить();
        ДвоичныеДанные.Записать(ИмяФайла);
        Если ЭтоОтчет Тогда
            
            ОбъектОбработка = ВнешниеОтчеты.Создать(ИмяФайла, Ложь);
            
        Иначе
            
            ОбъектОбработка = ВнешниеОбработки.Создать(ИмяФайла, Ложь);
        КонецЕсли;
        
        Возврат  ОбъектОбработка;
        
    Исключение
        Сообщить("Не могу открыть обработку "+ИмяОбработки+"; "+ОписаниеОшибки());
        Возврат Неопределено;
    КонецПопытки;    
    
КонецФункции // (
4 ShramkoRS
 
31.01.23
13:15
А вот хрен, не предлагают мне действия общих модулей, я тоже сначала так хотел сделать
5 ShramkoRS
 
31.01.23
13:16
Есть в конфе у нас уже эта функция, которая внешние обработки открывает, находится в общем модуле, только не поставить его в действие никак
6 mgreat
 
31.01.23
13:17
(4) создай тогда новый элемент в меню, а старый удали, в новом пропиши нужный тебе вызов
7 ShramkoRS
 
31.01.23
13:20
Во, а так работает (6)
8 ShramkoRS
 
31.01.23
13:20
Спасибо (6)