Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Подскажите код открытия внешнего отчета

Подскажите код открытия внешнего отчета
Я
   Быдло замкадное
 
11.08.20 - 10:48
Привет.
Есть у кого в меню интерфейса кнопка которая не открывает встроенный отчет в конфигурацию а выполняет программный код по открытию отчета из справочника внешних отчетов???
Надо для обычных форм.
Было в одной базе у меня, сейчас найти не могу а писать заново лень..
   ДенисЧ
 
1 - 11.08.20 - 10:50
Берём справочник внешних отчётов и обработок, открываем его форму списка... Смотрим событие Выбор... И наслаждаемся...
   Быдло замкадное
 
2 - 11.08.20 - 10:53
(1) спасибо за наводку) почти готовое решение
   fisher
 
3 - 11.08.20 - 10:53
Помню только, что там кажись через навигационную ссылку на реквизит с хранилищем. Когда-то для меня стало открытием, что так можно.
   ДенисЧ
 
4 - 11.08.20 - 10:55
(3) В ОФ навигационная ссылка? Отсыпешь?
   ДенисЧ
 
5 - 11.08.20 - 10:55
(2) Почему "почти"?
Находишь элемент справочника нужный. А дальше уже готовый код. Хотя и самому написать там 5-10 строчек...
   fisher
 
6 - 11.08.20 - 11:09
(4) Я про ОФ пропиздоглазил.
   Быдло замкадное
 
7 - 11.08.20 - 11:11
&НаКлиенте
Процедура ОткрытьОтчетАнализКонтрагента() Экспорт
    
    ОткрытьВнешнююОбработкуОтчет("000000242");    
    
КонецПроцедуры

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.