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

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