Внешние обработки

1. user1908445 05.10.23 09:34 Сейчас в теме
Добрый день, подскажите может кто-то сталкивался с такой задачей: у меня есть две внешние обработки, они делают одно и тоже, единственное отличие - одна вызывается из документа, с помощью кнопки печать, другая вызывается в одной из подсистем. Т.е. у одной ("Вид","ДополнительнаяОбработка"), у другой ("Вид", "ПечатнаяФорма"), стоит задача объединить эти обработки в одну, но с сохранением вызова обработки из подсистемы и из документа. Есть ли какой-то способ в одной обработке прописать два вида обработки?
По теме из базы знаний
Найденные решения
17. user1908445 18.10.23 16:53 Сейчас в теме
в итоге сделала пустую обработку, которая вызывает рабочую обработку....

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

&НаСервере
Функция ПолучитьИмяОбработки() 
    
    ВыполняемаяКомандаСсылка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Имя Нужной Обработки");
    Если НЕ ПустаяСтрока(ВыполняемаяКомандаСсылка.Наименование) Тогда
        Возврат ВыполняемаяКомандаСсылка;
    КонецЕсли;  
    
КонецФункции 
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 81 05.10.23 10:02 Сейчас в теме
(1)задача решается размещением исполняемого кода в общем модуле конфигурации/обработке, а из внешних обработок должна вызываться процедура/функция общего модуля/обработки
3. user1908445 05.10.23 10:10 Сейчас в теме
(2) т.е решение возможно только через расширение общего модуля? других путей решения нет
5. nomad_irk 81 05.10.23 10:16 Сейчас в теме
(3)да, потому что одна и та же дополнительная обработка не может прикидываться разными видами обработок(ПечатнаяФорма/обработка заполнентия ТЧ/.....)
4. dmitrixru 05.10.23 10:15 Сейчас в теме
(2) получается, все равно будет 2 внешние обработки? А как сделать чтобы одна внешняя обработка могла вызываться и из формы документа, и из раздела дополнительных обработок подсистем?
6. nomad_irk 81 05.10.23 10:17 Сейчас в теме
(4)говорю же, никак, нужно 2 разных внешних обработки, т.к см. (5)
dmitrixru; +1 Ответить
14. user1908445 05.10.23 12:04 Сейчас в теме
16. lefthander 05.10.23 12:33 Сейчас в теме
(1)помещаете все в одну обработку, в зависимости от контекста вызова выполняете ту или иную обработку... ;)
7. TokarevV 35 05.10.23 10:50 Сейчас в теме
А что если в процедуре печать просто вызывать встроенную обработку?
Саму же обработку - печатную форму сделать вообще без полезного кода. Только открывание встроенной.
8. TokarevV 35 05.10.23 10:54 Сейчас в теме
(7) Ну или вызов процедуры Печать из дополнительной обработки.
13. user1908445 05.10.23 12:02 Сейчас в теме
(2)
(5)
(7)получается все равно несколько обработок. Руководство хочет именно, чтобы была одна обработка. Смотрела вариант через несколько кнопок, но он тоже не реализуем, т.к. кнопки появляются одинаково в одних и тех же документах, код да можно прописать разный, но вызов прописывается в начале обработки
15. nomad_irk 81 05.10.23 12:05 Сейчас в теме
(13)Объясните руководству, что совсем одну обработку сделать невозможно технически, либо придется вносить изменения в конфигурацию вместо использования типового механизма дополнительных обработок
user1908445; +1 Ответить
9. soft_wind 05.10.23 11:00 Сейчас в теме
еще как вариант,
делаете ТРЕТЬЮ обработку и переносите туда полезный/рабочий функционал
а в первых двух переделываете вызов этой третьей обработки.
10. TokarevV 35 05.10.23 11:04 Сейчас в теме
11. soft_wind 05.10.23 11:21 Сейчас в теме
(10) нет, просто пока писал свой ответ, уже предложили похожий...
12. TokarevV 35 05.10.23 11:22 Сейчас в теме
(11) Извините. Я что-то перевозбудился)))
17. user1908445 18.10.23 16:53 Сейчас в теме
в итоге сделала пустую обработку, которая вызывает рабочую обработку....

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

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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот