Каталог решений - Обычное приложение. Обращение к функциям и процедурам в модуле внешней обработки

Обычное приложение. Обращение к функциям и процедурам в модуле внешней обработки

Обычное приложение. Обращение к функциям и процедурам в модуле внешней обработки

В наличии

Обычное приложение. Обращение к функциям и процедурам в модуле внешней обработки по аналогии с обращением к общими модулям.
Можно поставить на форму или модуль объекта в составе конфигурации в тех случаях , когда , например, порядок расчета некоторых данных может быть изменен, а пользователей из программы выгонять не хочется.

Категория:

Описание

Доброго времени суток, уважаемые коллеги. 

Иногда при разработке новых объектов метаданных случается ситуация, когда разработчик сомневается в правильности каких-то расчетов. Постановщики же задачи из числа мирных пользователей не всегда могут точно сформулировать то, что они хотят и зачастую понимание начинает приходить только когда уже начинается работа и именно в рабочей базе. Не знаю почему так, но иногда бывает (и это хорошо, что у Вас не бывает). Эта статья для тех, у кого бывает.   

В 1С 7.7 была интересная возможность — заменить модуль формы или модуль объекта на текст из каталога ExtForms. 

Это позволяло "на ходу" вносить изменения, не выгоняя пользователей из базы.  

В 8.3 есть замечательнейший механизм расширений, который эту задачу реализует ещё лучше. 

А если используется обычное приложение, да ещё с режимом совместимости (ну не все пока перешли на ERP), да пользователей не всегда хочется выгонять, а пересчитать нужно срочно (концепция вдруг поменялась — исключительно вымышленная ситуация).

Так вот, для таких случаев есть простой и не новый механизм. 

Заключается он в том, что некоторую часть расчетов можно поместить во внешнюю обработку и вполне себе ее оттуда заполучить как из общего модуля. 

Предположим, у нас есть внешняя обработка, которая "вживлена" в УПП. 

В модуле этой обработки есть экспортная (!) функция, в которой "зашит"   некий расчет

Функция РасчитатьВыпуск(НачДата,КонДата,Оргазация,Подразделение) Экспорт

……………..

Итак, например, в модуле документа нам нужно посчитать именно этот "неустаканившийся" выпуск. 

Находим нашу обработку.

внОбработка = Справочники.ВнешниеОбработки.НайтиПоКоду("000000473");  

    

Сохраним ее двоичные данные (по сути это наша обработка), например, в каталог временных файлов

   ПутьКФайлу = КаталогВременныхФайлов()+"врВнешняяОбработка.epf";

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

Через двоичные данные получаем саму обработку, и сохраняем ее;

Открываем как обычную обработку. Причем, как в мультике "Следствие ведут колобки" — "Слон не нужен- нужен бумага" и нам сама обработка не нужна нужен момент обращения к ней. В момент открытия спокойно обращаемся к экспортным процедурам и функциям, расположенным в модуле этой обработки.

Вот такой простой способ, абсолютно не претендующий на новизну.

has been added to your cart:
Оформление заказа