|
Как открыть (выполнить) внешнюю обработку программно ? | ☑ | ||
---|---|---|---|---|
0
Анастасия Изотова
13.06.16
✎
05:50
|
День добрый. Не подскажите, можно ли обратиться(вызвать, открыть) внешнюю обработку, нажатием на кнопку или ссылку в интерфейсе ?
1С 8.1. Есть справочник Внешние Обработки (да думаю он у всех есть)), в нем отчеты, выполненные в виде внешних обработок. Открываю, нажимаю Выполнить, открывается форма (уже собственно Обработки), выбираю что надо и т.д. Вот как можно обратиться к обьекту (это же обьект, да ?) справочника Внешние Обработки, с указаением нужной (например по Наименованию), и без всяких "Выполнить", сразу ее запустить ? Пыталась вот так: НаименованиеЭлемента = "Отчет по видам услуг"; Спр = Справочники.ВнешниеОбработки.Выбрать(); //Спр.ПолучитьФорму("ФормаЭлемента",НаименованиеЭлемента).Открыть(); Пока Спр.Следующий() Цикл //.... спр.ПолучитьОбъект().ПолучитьФорму("ФормаЭлемента",НаименованиеЭлемента).Открыть(); КонецЦикла; Но не хочет. Все варианты - или норовит СоздатьНовый Обьект Справочника, или упирается в - Выполнить .... |
|||
1
PR
13.06.16
✎
05:55
|
О, Владик :))
|
|||
2
PR
13.06.16
✎
05:56
|
ОткрытьФорму же вроде как
|
|||
3
Анастасия Изотова
13.06.16
✎
06:32
|
Нет ( или ошибку выдает, или упирается лбом в обьект справочника, с кнопками - заменить, скачать, наименование, выполнить ... ((
|
|||
4
PR
13.06.16
✎
06:34
|
(3) Посмотри, как сделано в типовых, в той же ERP, там сохраненная настройка пользователя показывается в интерфейсе как гиперссылка и по ней открывается отчет с этим вариантом.
|
|||
5
Мимохожий Однако
13.06.16
✎
07:28
|
Открыть можно только ту обработку, в которой есть для этого форма. Подсказку можно увидеть в справочнике Внешние обработки в обработке при нажатии на выбранный элемент.
|
|||
6
NorthWind
13.06.16
✎
08:09
|
(0)
спрВО = Справочники.ВнешниеОбработки; ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.Отчет; ВыбраннаяСтрока = спрВО.НайтиПоКоду(Код); Если ВыбраннаяСтрока = Неопределено Тогда Предупреждение ("Дополнительный отчет код '" + Код + "' не найден."); Возврат; КонецЕсли; ЭтоОбработка = ?(ВыбраннаяСтрока.ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.Обработка, Истина, Ложь); ЭтоОтчет = ?(ВыбраннаяСтрока.ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.Отчет, Истина, Ложь); Если Не ЭтоОбработка и Не ЭтоОтчет Тогда Предупреждение ("Внешний модуль код '" + Код + "' не является дополнительным отчетом или обработкой."); Возврат; КонецЕсли; Попытка ИмяФайла = ПолучитьИмяВременногоФайла(); ДвоичныеДанные = ВыбраннаяСтрока.ХранилищеВнешнейОбработки.Получить(); ДвоичныеДанные.Записать(ИмяФайла); Если ЭтоОбработка Тогда Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла); Иначе Форма = ВнешниеОтчеты.ПолучитьФорму(ИмяФайла); КонецЕсли; Если Не Форма = Неопределено Тогда Форма.Открыть(); Иначе Если ЭтоОбработка Тогда ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла); Иначе ВнешнийОтчет = ВнешниеОтчеты.Создать(ИмяФайла); Форма = ВнешнийОтчет.ПолучитьФорму(); Если Форма <> Неопределено Тогда Форма.Открыть(); КонецЕсли; КонецЕсли; КонецЕсли; Исключение Если ЭтоОбработка Тогда Предупреждение("Выбранный файл не является внешней обработкой. |Либо, данная обработка не предназначена для |запуска в этой конфигурации."); Иначе Предупреждение("Выбранный файл не является внешним отчетом. |Либо, данный отчет не предназначена для |запуска в этой конфигурации."); КонецЕсли; КонецПопытки; |
|||
7
NorthWind
13.06.16
✎
08:13
|
этот код, как видно, можно раза в два уменьшить, если вы точно знаете что вы хотите открыть - отчет или обработку.
|
|||
8
Jump
13.06.16
✎
08:35
|
(0) Вы уж определитесь что вам надо-
Открыть обработку - т.е показать форму обработки пользователю. Или Выполнить обработку - т.е выполнить код обработки. |
|||
9
PR
13.06.16
✎
09:02
|
(8) Причем здесь выполнить код обработки?
Где в (0) речь про выполнение кода? |
|||
10
NorthWind
13.06.16
✎
09:02
|
(8) в семерке автоматическое выполнение кода я делал параметром. Т.е. в форму передавался параметр, и если он имел определенное значение, то выполнялся код, после чего открытие завершалось с отказом (СтатусВозврата (0)). В восьмерке не было необходимости такого делать, но думаю, так же можно.
|
|||
11
NorthWind
13.06.16
✎
09:06
|
(9) она действительно пишет
>> и без всяких "Выполнить", сразу ее запустить ? |
|||
12
Лефмихалыч
13.06.16
✎
09:33
|
У справочника есть реквизит ХранилищеВнешнейОбработки с типом ХранилищеЗначения. В этом хранилище значения лежат ДвоичныеДанные - файл epf или erf. Соответственно, надо получить двоичные данных из хранилища значения, записать двоичные данные во временный файл, из временного файла создать объект внешней обработки и уже с этим объектом делать все, что надо.
//Ссылка - ссылка на нужны элемент справочника внешних обработок. ВременныйФайл = ПолучитьИмяВременногоФайла(); ДвоичныеДанныеОбработки = Ссылка.ХранилищеВнешнейОбработки.Получить(); ДвоичныеДанныеОбработки.Записать(ВременныйФайл); ВнешняяОбработкаОбъект = ВнешниеОбработки.Создать(ВременныйФайл); ВнешняяОбработкаОбъект.ПолучитьФорму("НужнаяФорма").Открыть(); // ну, или ВнешняяОбработкаОбъект.ВыполнитьЭкспортныйМетодМодуляОБработки() |
|||
13
Лефмихалыч
13.06.16
✎
09:34
|
+ (12) ну, и учесть, что там может быть не обработка, а отчет, тогда надо не ВнешниеОбработки кастовать, а ВнешниеОтчеты.
|
|||
14
Анастасия Изотова
13.06.16
✎
12:10
|
to ЛевМихалыч
Думала-думала : а где ссылку-то взять ? у менять есть только название. Наименование то есть. Привязать "Ссылка" к полю-строке выбора-перечислению и пр. не могу - мне напро прописать программного - Кнопка-Вызов по ней .... сделала так: Ссылка = "Отчет по видам услуг"; далее как ты сказал: но... {Обработка.РабочееМестоРуководителя.Форма.Форма(68)}: Значение не является значением объектного типа (ХранилищеВнешнейОбработки) ДвоичныеДанныеОбработки = Ссылка.ХранилищеВнешнейОбработки.Получить(); :( |
|||
15
Лефмихалыч
13.06.16
✎
12:14
|
(14) >а где ссылку-то взять ?
программиста позови, Чтобы он помог тебе НайтиПоНаименованию, например |
|||
16
Лефмихалыч
13.06.16
✎
12:14
|
>сделала так:
>Ссылка = "Отчет по видам услуг"; не твое это, Настя. Не твое |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |