Имя: Пароль:
1C
1С v8
Отследить появление новой записи в регистре сведений
,
0 MistaEr
 
19.08.14
09:25
Добрый день!

Стоит такая задача. Нужно отследить появление новых записи регистра сведений.
Я могу обращаться регламентным заданием обращаться каждые 5 секунд к регистру, прочитать записи обработать и удалять.
А есть ли другой вариант решения? Не запускать регламент без надобности.
2 vhl
 
19.08.14
09:32
(0) Подписка
3 Maxus43
 
19.08.14
09:33
ПередЗаписью смотри, есть уже что-то или нет в наборе
4 MistaEr
 
19.08.14
09:33
Ну допустим подписка на события при записи, запись то еще не существует, а мне ее после обработки данных нужно удалчть
5 APXi
 
19.08.14
09:35
(4) А ты отказывайся от записи
6 vhl
 
19.08.14
09:36
(4) Так тебе отследить надо или предотвратить?
7 MistaEr
 
19.08.14
09:38
(5) Да, интересно, попробую, спасибо!
8 MistaEr
 
19.08.14
09:39
(6) Как только появляется новая запись, получить из него данные, создать документ по этим данным и удалить эту запись. (5) А тут видишь, может я и писать не буду тогда ее.
9 Maxus43
 
19.08.14
09:39
>>при записи, запись то еще не существует
уже существует и записана. Только транзакция не зафиксирована
10 Maxus43
 
19.08.14
09:39
(8) не получится, отказ от записи и твой документ откатит...
11 anatoly
 
19.08.14
09:40
по идее подписка на событие, но можно попробовать вариант с авторегистрацией для обмена (сам обмен не делать - просто анализировать зарегистрированные)
12 MistaEr
 
19.08.14
09:41
(10) Вот это нехорошо(
13 Maxus43
 
19.08.14
09:42
(12) это прекрасно.
А то что задачу решаешь через другое место - вот это нехорошо
14 MistaEr
 
19.08.14
09:44
(13) А как будет правильное место?
(11) Допустим создам я план обмена, а когда читать изменения? Постоянно?
15 Maxus43
 
19.08.14
09:45
(14) когда задачу нормально услышим - может и найдётся такое место. в (8) задача не раскрыта. Зачем там создаётся запись? Может вместо создания записи в регистре и документ сразу делать?
16 MistaEr
 
19.08.14
09:49
(15) Внешняя программа пишет данные в БД (в регистр), это должно происходить очень быстро. А я решил, что документ должен создаваться и проводиться в 1С.
17 vicof
 
19.08.14
09:52
(16) А где суть задачи?
18 shuhard
 
19.08.14
09:53
(16) ну а она ?
19 Maxus43
 
19.08.14
09:54
Я бы сделал как в (0), регламентами. Каждые 5 секунд может и часто, но в принципе годится концепция
20 ptiz
 
19.08.14
09:55
Если тупо в лоб: добавить реквизит регистра "ЭтоНоваяЗапись" типа булево - заполнять для новых записей в подписке "ПередЗаписью".
Еще вариант - при появлении новых записей делать записи в отдельный РС или создавать сразу нужный документ.

Кстати, с определением - какая запись "новая", могут быть сложности, если старый набор сначала записывается пустым, а потом заполненным.
21 MistaEr
 
19.08.14
10:01
(19) А не зависнет? если много будет записей?
22 MistaEr
 
19.08.14
10:01
(20) Тут еще важна скорость, так что особо писать, читать, переписывать не получится.
23 Maxus43
 
19.08.14
10:02
(21) я то откуда знаю? смотря ведь как напишешь.
Разделяй и властвуй. Запись в регистр и создание документа - разные процессы, не надо их объединять
24 MistaEr
 
19.08.14
10:05
(23) Чисто спортивный интерес: А регламентное задание ожидает завершения предыдущей транзакции запущенной на шаг раньше по расписанию?
25 Maxus43
 
19.08.14
10:06
(24) нет. Регламентное задание может породить сколько угодно фоновых, в почти одинаковое время.
Тут надо правильно код писать... и 5 секунд - слишком часто.
26 MistaEr
 
19.08.14
10:09
(25) Еще раз спасибо!