Имя: Пароль:
1C
1С v8
Как вызвать процедуру модуля внешней обработки из общего модуля?
0 livru
 
01.11.13
15:33
Собственно, вопрос. Есть справочник внешние отчеты и обработки. Хочется туда класть обработки и вызывать их процедуры из общего модуля. Спасибо.
1 hhhh
 
01.11.13
15:38
ну, вызывайте, в чем проблема? Они и на данном этапе из общего модуля вызываются.
2 Поросенок Петр
 
01.11.13
15:40
Я видел много разных извращений... Но такое вижу в первый раз.
3 ЧессМастер
 
01.11.13
15:40
(0) мьсье знает толк в извращениях
4 User_Agronom
 
01.11.13
15:46
(3) Тут похоже не просто знает толк. Тут гений извращений.
5 Maxus43
 
01.11.13
15:48
(3)(4) чойто вы такие ортодоксальные? в типовых это есть, это принцип внешних печатных форм
6 Dmitry1c
 
01.11.13
15:50
А что. Можно поиграться с паттернами проектирования :)

Изобрели классы в 1С :D
7 1dvd
 
01.11.13
15:51
(5) +1
8 livru
 
01.11.13
16:21
(5) Точно же.. Я смотрю код в списке, а там все через получитьформу  сделано. А как бы формы то и нет. Действительно, один в один механизм работы с печатными.

Спасибо Вам за ответ по делу, взгляд со стороны иногда нужен, а то глаз замылен. )
9 Infsams654
 
01.11.13
16:26
(5)+ а в чем собственно извращения? Находишь в доп. обработках нужную обработку (элемент справочника). Сохраняешь из ХЗ во временный файл, поднимаешь объект обработки из файла и обращайся к ее методам.
10 livru
 
01.11.13
16:57
(9) вроде поднимаю из файла, и функция в модуле обработки с директивой экспорт есть, а как к этой функции достучаться так и не понял. Внешние печатные как формируются пока не нашел, но ищу. )

Вот код, который использую:

    Пока Выборка.Следующий() Цикл
            ИмяФайла = ПолучитьИмяВременногоФайла();
            ДвоичныеДанные = Выборка.Обработка.ХранилищеВнешнейОбработки.Получить();
            ДвоичныеДанные.Записать(ИмяФайла);
            ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла);
            //ФормаОбработки=ВнешняяОбработка.ПолучитьФорму();             ЭтотОбъект
            Попытка
                Ответ=ВнешняяОбработка.ВернутьРезультат();
                Если Ответ.ВыполненоБезОшибок=Ложь Тогда
                    ТекстОшибки="Обработка отработала, но вернула ошибку "+СокрЛП(Выборка.ПорядокВыполнения);
                    Прервать;
                Конецесли;
            Исключение
                ТекстОшибки="Обработка отработала неверно";
                Прервать;
            КонецПопытки;
    КонецЦикла;
11 Infsams654
 
01.11.13
17:11
(10) ВнешняяОбработка.ЭтотОбъект().ВернутьРезультат();
12 livru
 
01.11.13
18:23
(11) ВнешняяОбработка.ЭтотОбъект.ВернутьРезультат();

Вот так заработало. Спасибо!
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.