В системе 1С 8 существует такой механизм, как фоновые задания.
Этот механизм позволяет выполнять некоторые действия не в самом сеансе, а на сервере.То есть, мы моем запустить сложнейший, долгий отчет или обработку "в фоне", и продолжать спокойно работать, и наша обработка будет также выполняться параллельно с нашей работой. Итак, что бы запустить какую либо процедуру в фоне необходимо выполнить следующий код:
ФоновыеЗадания.Выполнить("НазваниеПроцедурыНаСервере",[ПараметрыПроцедуры],[Новый УникальныйИдентификатор],["Название"]);
Параметры процедуры это массив параметров, кторый надо предварительно создать, таким образом мы можем передать параметры в процедуру или функцию.
Процедуру лучше всего описывать в серверном общем модуле, таким образом имя должно выглядить так:"Общиймодуль.НазваниеПроцедуры". Соответственно и вызывать лучше её с сервера, чтобы не ставить галочку общего модуля "Вызов Сервера".
Процедура, выполняемая "в фоне" ДОЛЖНА быть экспортной.
Единственное ограничение - это невозможность вывода сообщений из фоновых заданий, поэтому можно либо создавать файлик на где-нибудь, либо служебный элемент справочника или регистра сведений.
Следующий ньюанс в выполнение фоновых заданий в файловой базе.
Чтобы, написанный нами ранее код заработал в файловой базе необходимо сделать следующие действия:
1)Создать служебного пользователя с полными правами, например "ФоновыйПользователь".
2)В модуле управляемого приложения при начале работы системы написать следующий код:
Если ИмяПользователя() = "ФоновыйПользователь" Тогда
ПодключитьОбработчикОжидания("ВыполнениеЗаданий",5);
КонецЕсли;
3)Описать процедуру ВыполнениеЗаданий в этом же модуле, не забыть сделать её экспортной.
В процедуре необходимо запускать метод ВыполнитьОбработкуЗаданий() без параметров.
Процедура ВыполнениеЗаданий() Экспорт
ВыполнитьОбработкуЗаданий();
КонецПроцедуры
4)Запустить сеанс пользователя "ФоновыйПользователь".
5)Запустить наш сеанс и выполнить фоновое задание.
6)Задание будет выполняться "в фоне", не в нашем сеансе, но и не на сервере, а в сеансе пользователя "ФоновыйПользователь".
Комментариев нет:
Отправить комментарий