Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 07:03

Запуск процедур в фоновом режиме

Автор Shkerin, 15 мар 2011, 21:35

0 Пользователей и 1 гость просматривают эту тему.

Shkerin

Цитата: Klyacksa от 16 мар 2011, 17:54
Цитировать
разницы никакой - отдельной процедурой или не отдельной.

По Вашему Klyacksa лучше вставлять один и тот же код в разные модули?  :fdbsdfbsd:

Цитировать
Еще раз вопрос, теперь в лоб:
почему не устраивает формирование файла при выполнении обработки проведения? Зачем нужно фоновое выполнение?

Все уже работает и без фона.
Я только начинаю изучать 1С и стараюсь использовать все возможные варианты для увеличения производительности.

cska-fanat-kz

"Выборка данных небольшая, поэтому ощутимых тормозов нет."

"А если не видно разницы зачем [извращаться] больше?" ((с) Дося)

"Процедура находиться в общем модуле и вызывается из разных мест."

Процедура проведения типовая ИМХО состоит из следующих этапов (поправьте если что):
-1 запрос к шапке документа
-2 проверка заполнения шапки
-3 запрос к ТЧ
-4 проверка заполнения ТЧ
-5 процедура движений по регистрам

пп. 1,3,5 обычно как раз и делаются в общем модуле, но их результаты все равно обратно в ОбработкуПроведения возвращаются...
Короче, запись файла вполне можно в ОбработкеПроведения реализовать...

Хотя дело хозяйское ;)
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Klyacksa

ЦитироватьВыборка данных небольшая, поэтому ощутимых тормозов нет. Но это не значит, что нужно перегружать процедуру проведения дополнительным кодом, если по логике можно запустить фоновую задачу и вернуться к пользователю.
В данном случае, оно того не стОит. Тем более, если нет ощутимых тормозов.

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

xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Shkerin

Благодарю всех кто откликнулся. :ooifh:
Как создам фон.задачу, отпишу все найденные плюсы и минусы.

Klyacksa

Все-равно не убедили, зачем городить весь этот огород...
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

cska-fanat-kz

Как создадите фон.задачу - расскажете, зачем она вообще была нужна ))
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Shkerin

ЦитироватьСоздаем план обмена, регистрируем в нем изменения - наши проведенные документы. Делаем регламентную задачу, которая выбирает все вновь созданные доки, и формирует по ним файлы. Думаю, вполне достаточно будет запускать ее раз в сутки (можно два раза в сутки). Наверняка файлы нужны не прямо сразу.

Klyacksa, опишите пожалуйста по подробнее, как выбрать все вновь созданные доки? Все что я раскопал - так это создание новой обработки.

Klyacksa

Ключевое слово не "вновь созданные доки", а "план обмена" :)

Общий алгоритм обработки изменений получается такой:
1. Создаем план обмена и разрешаем ему регистрировать наш тип доков автоматически (это у плана обмена "Состав")
2. В пользовательском режиме добавляем узел плану обмена. (почитай про текущий узел и про планы обмена)
3. Выбираем данные из плана обмена. Пример выборки:
ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.УстановитьСтроку();
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьXML, УзелПланаОбмена);
Выборка = ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения);

либо так: у каждой таблицы есть таблица изменений (в конструкторе запросов, на первой закладке, есть незаметная кнопочка "Отображать таблицы изменений"). Можно прямо запросом оттуда брать данные.
4. После успешной отработки полученных данных, нужно очистить по ним план обмена (иначе в следующий раз мы опять получим те же самые данные). В самом простом случае, когда мы обрабатываем ВСЕ данные, то и удалять их нужно ВСЕ, тогда так:
ПланыОбмена.УдалитьРегистрациюИзменений(УзелПланаОбмена);
Если же используем часть данных, то нужно делать еще отбор по удалению.

Другой момент.
Если нам нужно регистрировать не все изменения по документам, а только создание новых доков, то алгоритм немного меняется:
1. Создаем план обмена и запрещаем ему регистрировать наш тип доков автоматически (это у плана обмена "Состав")
2. В пользовательском режиме добавляем узел плану обмена. (почитай про текущий узел и про планы обмена)
3. Создаем Подписку на событие "ПриЗаписи" нашего типа документа. И в ней, если док новый, регистрируем "ручками" наш текущий док в Плане обмена.
4. Далее так же, как и в первом алгоритме, делаем выборку, обрабатываем данные и очищаем план обмена.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Shkerin

Цитата: cska-fanat-kz от 17 мар 2011, 10:31
Как создадите фон.задачу - расскажете, зачем она вообще была нужна ))
Общая задача уже такова: один раз в день создавать с помощью регламентной задачи 4 текстовых файла: прием, увольнение, перемещение и отпуск.
В эти файлы заноситься информация: ДатаИВремяСобытия, ТабНомер, ФИО и др. по каждому сотруднику(в виде колонок) из 4 документов: ПриемНаРаботу, Увольнение, КадровоеПеремещение, НачислениеОтпуска.
Далее текстовые файлы передаются по локальной сети в бюро пропусков для запрета или разрешения доступа входа в организацию принятым, уволенным, перемещенным или ушедших\пришедших из отпуска сотрудников. О как!

cska-fanat-kz

Может для бюро пропусков отдельный интерфейс в самой базе сделать?
Создать им обработку\отчетик и пущай смотрят его...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск