Имя: Пароль:
1C
1С v8
Выделить общий программный код из двух внешних обработок
0 zelenprog
 
31.08.23
13:49
Здравствуйте!

Есть две внешние обработки, которые имеют много одинакового кода.
Можно ли этот код выделить куда-то? Например, в третью внешнюю обработку?
Если можно, то как потом использовать этот общий код?
Конфигурацию менять не хотелось бы. Желательно это реализовать внешними обработками.
1 Tatitutu
 
31.08.23
13:54
Можно
2 zelenprog
 
31.08.23
14:04

Процедура ПриОткрытии()
3 Табуретко
 
31.08.23
14:04
Сравнить файлы...?
4 zelenprog
 
31.08.23
14:13
Сделать вот такой пример.
В "рабочей" форме внешней обработки №1 выполняется вот такой код, который обращается к внешней обработке №2:


&НаКлиенте
Процедура ПриОткрытии()

    лИмяФайлаВХранилищеНаСервере = "";
    лРез = ПоместитьФайл(лИмяФайлаВХранилищеНаСервере, "c:\ВО_Тест.epf", , Ложь);
    ПриОткрытии_ПодключитьВнешнююОбработку_НаСервере(лИмяФайлаВХранилищеНаСервере);

КонецПроцедуры

&НаСервере
Функция ПриОткрытии_ПодключитьВнешнююОбработку_НаСервере (пИмяФайлаВХранилищеНаСервере)
    
    ИмяОбработки = ВнешниеОбработки.Подключить(пИмяФайлаВХранилищеНаСервере,,Ложь);
    МояОбработка = ВнешниеОбработки.Создать(ИмяОбработки);
    МояОбработка.ПроцедураТест();

    
КонецФункции


Процедура "ПроцедураТест" расположена в модуле объекта внешней обработки №2 как экспортная.
Это вроде бы работает.

А как мне теперь из формы №1 снова вызвать метод внешней обработки №2?
Например, по какой-нибудь команде надо еще раз вызвать метод "ПроцедураТест()". Но ведь на серверной части "рабочей" формы ссылка на внешнюю обработку №2 уже "исчезла".
Снова подключать и создавать внешнюю обработку?
Получается, это нужно делать при каждом серверном вызове? Но это же очень неэффективно, если 1С-ка каждый раз будет подгружать форму.

Как это правильно сделать?
5 Галахад
 
31.08.23
14:31
А в создать реквизит обработки "МояОбработка"?
6 Мультук
 
31.08.23
14:32
(4)

Создай расширение.
Там добавь общий модуль (или несколько общих модулей).
В общий модуль свои функции и пользуйся.
7 zelenprog
 
14.09.23
08:46
(6) Спасибо!
С расширением это действительно оказалось намного удобнее и проще.
Неудобство только в том, что приходится "привязываться" к базе, подгружая расширение.
Закон Брукера: Даже маленькая практика стоит большой теории.