Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 03:21

Как открыть внешнюю обработку из программы и передать ей параметр ?

Автор chirs, 23 мар 2011, 09:20

0 Пользователей и 1 гость просматривают эту тему.

chirs

На форме документа сделал кнопку. При ее нажатии должна открываться внешняя обработку и в нее должна передаваться ссылка на текущий документ. Как это сделать ?

Klyacksa

А куда передать ссылку? В реквизит обработки? А где обработка находится? Локально на диске, или в справочнике внешних обработок? В общем случае так:
Процедура КнопкаВыполнитьНажатие(Кнопка)
ВнешняяОбработка = ВнешниеОбработки.Создать(ПолноеИмяФайла);
ВнешняяОбработка.СсылкаНаДокумент=Ссылка;
КонецПроцедуры


Но при этом, у вызываемой обработки должен быть реквизит (в нашем случае, СсылкаНаДокумент). ПолноеИмяФайла - полное имя файла внешней обработки. Кстати, нужно обрабатывать - если пути нет, если обработки нет, если у нее реквизита нет и так далее.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

cska-fanat-kz

Заведите у обработки реквизит типа ДокументСсылка.НазваниеДокумента

и...

ФормаОбработки = Обработки.НазваниеОбработки.ПолучитьФорму("НазваниеФормы");
ФормаОбработки.Документ = Ссылка;
ФормаОбработки.Открыть();
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

chirs

Почему у Klyacksa код отображается с html-тегами ? <BR><SPAN style="WHITE-SPACE: pre"> и т.д. ?

cska-fanat-kz

Глюки. Потому я и не люблю код оформлять ;)
Говорят в ФайрФоксе все нормально...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

chirs

Понятно.
Спасибо Вам за ответы, у меня все получилось.
Но теперь вот еще один вопрос: как теперь сделать так, чтобы внешняя форма открылась незаметно для пользователя, выполнила свои действия и потом так же незаметно закрылась ?

Klyacksa

Секрет фирмы  :D

тег code, /code в квадратных скобках.
При обычном ответе есть панелька с тегами всеми нужными, и цитировать, и код и т.д.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Klyacksa

Так. Я про теги не внимательно читала. Не знаю, у меня Mozilla Firefox - все отлично отображается.

ЦитироватьНо теперь вот еще один вопрос: как теперь сделать так, чтобы внешняя форма открылась незаметно для пользователя, выполнила свои действия и потом так же незаметно закрылась ?
В таком случае, форму лучше вообще не открывать. Перенесите нужный код в модуль обработки, и запускайте его на отработку, а форму не открывайте.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

chirs

Цитата: Klyacksa от 23 мар 2011, 10:23
В таком случае, форму лучше вообще не открывать. Перенесите нужный код в модуль обработки, и запускайте его на отработку, а форму не открывайте.
Что-то не соовсем понял... как тогда создать внешний модуль обработки и как потом его использовать ?

Klyacksa

1. Модуль обработки создавать не надо, он и так есть. Открывается в конфигураторе в обработке через Действия->Открыть модуль объекта.
2. Переносим все нужные действия из формы обработки в модуль самой обработки. Только нужно проследить, чтобы там не использовались объекты формы (например, добавленные элементы управления, не связанные с данными, как поле ввода).
3. Пишем еще там же экспортную процедуру/функцию, которая запускает нужные нам действия. Например, процедуру Процедура1():
Процедура Процедура1() Экспорт
     Выборка=ПолучитьДанные();
     ОбработатьДанные(Выборка);
КонецПроцедуры;

4. Первой документа по кнопке вызываем отработку нашей Процедура1():
Процедура КнопкаВыполнитьНажатие(Кнопка)
    ВнешняяОбработка = ВнешниеОбработки.Создать(ПолноеИмяФайла);
    ВнешняяОбработка.СсылкаНаДокумент=Ссылка;
    ВнешняяОбработка.Процедура1();
КонецПроцедуры
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск