Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Узнать, заблокированы ли записи в системе

Узнать, заблокированы ли записи в системе
Я
   alexshape
 
12.04.19 - 11:31
Привет всем. Стоит такая задача: есть реестр записей в регистре сведений, по которым необходимо отправить по вебсервису данные. Но возможна такая ситуация, что могут работать два регламентных задания. Как ГРАМОТНО сделать так, чтобы они не отправляли эти данные повторно.

Сейчас я сделал так: Блокирую запись перед отправкой, при успешной отправке разблокирую, но для второго РЗ проверка, заблокирован ли объект занимает продолжительное время, 20 секунд. Следовательно этот способ не подходит
 
 
   Галахад
 
1 - 12.04.19 - 11:34
План обмена?
   alexshape
 
2 - 12.04.19 - 11:45
(1) неа, данные хранятся в регистре сведений, регламентное задание подтягивает от туда и посылает через вебсервис.
   D_E_S_131
 
3 - 12.04.19 - 12:02
Может не нужно несколько регл заданий на одни и те же данные "натравлять"?
   alexshape
 
4 - 12.04.19 - 12:09
(3) Как бы да, но не исключено
   catena
 
5 - 12.04.19 - 12:23
(4)Проверять при запуске рз, если такое же рз уже запущено, завершаться?
   catena
 
6 - 12.04.19 - 12:23
(3)А если хочется обрабатывать в несколько потоков?
   azernot
 
7 - 12.04.19 - 12:24
(0) Могу предложить такую методику:

Организуется второй регистр "ЗаписиВОТправке" с дополнительным измерением  "ID" - ключ регламентного (фонового) задания.

Регламентное задание в транзакции берёт записи из основного регистра, копирует их в регистр "ЗаписиВОТправке" со своим ID, удаляет записи в регистре, фиксирует транзакцию.
В другой транзакции отправляет записи из регистра "ЗаписиВОТправке" со своим ID, удаляет записи в регистре "ЗаписиВОТправке" со своим ID, фиксирует транзакцию.

И ещё, перед началом работы фонового задания, проверяются записи в регистре "ЗаписиВОТправке" где ID не в списке ключей активных фоновых заданий. Т.е. поиск записей, которые не были по какой-то причине отправлены, а фоновое задание уже не активно. Такие записи переносятся в основной регистр.
   alexshape
 
8 - 12.04.19 - 12:39
(7) Может быть, но плодить лишние объекты не хочется, может есть способ как то по проще?
   FIXXXL
 
9 - 12.04.19 - 18:18
(2) ну так сделай план или узел на подходящем плане
поклади туда наборы
и пока кто-то читает изменения узла - эта информация жестко заблокирована
   mistеr
 
10 - 12.04.19 - 20:35
(7) Этот метод ненадежен. Лучше использовать платформенные механизмы. То есть планы обмена.
   Сияющий в темноте
 
11 - 12.04.19 - 22:58
а если блокировать не запись,а накладывать управляемую блокировку и у регистра завести признак:готов к отправке,отправляется,отправлен?

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.