gifts2017

Запуск внешних отчетов и внешних обработок из программного кода

Опубликовал Вадим Арсёнкин (::Green::) в раздел Программирование - Практика программирования

Часть внешних обработок и отчетов хотелось бы запускать из программного кода. Вот почти штатный способ это сделать. Это примерно как у улитки, у которой всё с собой (всё в базе).

 

 

            СсылкаНаОбъект = Справочники.ВнешниеОбработки.НайтиПоКоду("000000019");

           
ЭтоОбработка = ?(СсылкаНаОбъект.ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.Обработка
, Истина, Ложь);
           
ЭтоОтчет = ?(СсылкаНаОбъект.ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.Отчет
, Истина, Ложь);

            Если НЕ (
ЭтоОбработка ИЛИ ЭтоОтчет
) Тогда
                Возврат;
            КонецЕсли;

           
ИмяФайла = ПолучитьИмяВременногоФайла
();
           
ДвоичныеДанные = СсылкаНаОбъект.ХранилищеВнешнейОбработки.Получить
();
           
ДвоичныеДанные.Записать(ИмяФайла
);

            Попытка
                Если
ЭтоОбработка
Тогда
                   
Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла
);
                Иначе
                   
Форма = ВнешниеОтчеты.ПолучитьФорму(ИмяФайла
);
                КонецЕсли;

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

           
УдалитьФайлы(ИмяФайла
);



Спасибо alexk-is за Разукрашку на регулярных выражениях.

См. также

Подписаться Добавить вознаграждение
Комментарии
0. Вадим Арсёнкин (::Green::) 18.08.11 08:12
Часть внешних обработок и отчетов хотелось бы запускать из программного кода. Вот почти штатный способ это сделать. Это примерно как у улитки, у которой всё с собой (всё в базе).

Перейти к публикации

1. Александр Медведев (anig99) 18.08.11 08:12
За беспричинное передирание кода из типовых и изобретение велосипеда
2. Roman Biblbox (mr zafod) 18.08.11 13:34
Вы извините конечно, все здорово, вы молодец, что написали материал, но код откуда?
3. Яков Коган (Yashazz) 18.08.11 16:24
Пхе. Вы бы, мил человек, действительно что дельное написали. Например, что делать, когда справочника "ВнешниеОбработки" или ему подобного нет в помине, а версия платформы 8.1 и ниже. Потому как в 8.2 и без того можно в режиме внешнего соединения использовать внешки. А так - ну, кусок кода как он есть, и что?
4. Котэ Пруидзе (kote) 18.08.11 17:52
(1,2,3) Ладно, не ругайтесь :) Все с чего-то начинают..
MasterTonLab; +1 1 Ответить 1
5. Алекс Господин (Cat-MF) 18.08.11 18:00
На самом деле, многие об этой возможности даже не знают, а тут прозрели.
Кстати что-то со строчкой
Форма.АвтоРежим = Истина;
у меня работать не хочет.
IgorKoenigsberg; wert453; ::Green::; +3 1 Ответить 1
6. Александр Медведев (anig99) 18.08.11 20:27
(2) выдран из типовых, справочник ВнешниеОбработки
(4) тогда давайте сканы детсадовских прописей выкладывать...Надо же с чего-то начинать.

Ещё раз. На..уй с пляжа с такими публикациями. Вообще уже никакого смысла не несут.
7. Александр Медведев (anig99) 18.08.11 20:29
(5) тупые может и не знают. А если вдруг надо, то можно открыть справочник по языку, синтаксис-помощник, типовой код в конце концов.
8. Александр Лапшин (zfilin) 25.08.11 14:07
Как-то слишком уж для начинающих... =(
9. Maxim Vorobyov (quarion) 27.09.11 18:08
Большое спасибо! обработка очень помогла
10. Вадим Арсёнкин (::Green::) 03.10.11 01:44
(8) zfilin, снобизм - очень нехорошая черта многих программистов, тут форум не для пантов, а для того чтобы взаимно помогать себе и другим, поэтому я посчитал нужным, что возможно это поможет другим
11. Александр Лапшин (zfilin) 03.10.11 10:11
(10) ::Green::, Хыхыхы. Я сам точно так же писал в ответ на критику собственных публикаций. =)
Ладно, я для себя уяснил, что нужно быть проще. Надеюсь вы уяснили из комментариев (не только моих), что уровень публикаций надо бы подтянуть.
Удачи в начинаниях, будем ждать чего-нибудь интересненького.

P.S.: Кстати, по теме! Чего действительно стоило бы сделать, так это подробный обзор БСП. А-то им тоже многие не пользуются, а она как раз и делалась как средство борьбы с "велосипедизмом". Там вам будут и внешние обработки и все что хотите.
12. Александр Медведев (anig99) 03.10.11 10:30
(11) полное описание БСП есть на сайте ИТС
13. Александр Лапшин (zfilin) 03.10.11 10:55
14. Василий Мазурок (mvgfirst) 08.02.12 19:47
Возможно я покажусь вам ламером, но как же не изобретая велосипед, как это сделал автор, открыть из программного кода внешнюю обработку зарегистрированную в справочнике Внешних обработок.
Существует экспортная функция или процедура обладающая данным функционалом? Да? Скажите как называется? Я у себя в УТП не нашел... (возможно мне нужно открыть глаза).
15. mika Казанцева (mika_mika) 08.04.12 20:16
По-моему, подобное решение имеет место быть и быть полезным. Например, для реализации вызова внешних отчетов/обработрк кнопками панелей инструментов (не настраиваемой пользовательской, а добавленной в конфигураторе). Или кто-то знает способ проще и изящнее? Поделитесь.
16. Трактор Трактор (Трактор) 18.05.12 18:04
17. Гость 25.06.12 20:55
Ну и что вы тут накинулись на человека, ну не нужно вам это - не читайте, а кому то пригодится...злыдни какие то.
18. Петр Астахов (Zebar) 13.08.12 13:42
Присоединяюсь к (14)
Как назначить на кнопку на панели инструментов внешнюю обработку? Сможете подсказать более правильный вариант?
19. Евгения Рябуша (rybusha) 11.02.14 15:18
20. Артём Алтухов (Fannasankh) 30.07.14 12:49
(18) Zebar, если уж дорабатывается панель инструментов, почему бы не сделать и обработку внутренней
21. Сергей Милонов (Neromancer) 22.09.14 13:21
(20) Fannasankh, ну, допустим, что так проще обновлять обработку (добавление нового, убирать ошибки, и т.п.). Потому что проще - не надо лезть в конфигурацию, обновлять (зачастую динамически), протестить ее проще, откатить на более раннюю, если надо.
22. Артём Алтухов (Fannasankh) 30.09.14 16:00
(21) Neromancer, мне сложно представить ситуацию, в которой обновление именно обработки будет таким частым, что станет проблемой при нахождении обработки в базе.