Имя: Пароль:
1C
1С v8
Два раза записывает проводки
,
0 Мэс33
 
18.10.13
08:55
Добрый день, други, с пятницей.

Есть подписка на событие "ПриЗаписи" в РегистрБухгалтерии. Он почему то срабатывает два раза при проведении документа. Куда копать, подскажите.
1 butterbean
 
18.10.13
08:59
при удалении старого и при записи нового набора
2 Defender aka LINN
 
18.10.13
09:13
(0) Научиться жить с этим
3 Мэс33
 
18.10.13
09:15
:-)
У меня задача - поймать событие "ПриПроведении" через подписку, чтобы при наличии в наборе определенной проводки - совершить некое действо. А он тут, сволЫшь, дважды действо производит.
4 Мэс33
 
18.10.13
09:17
(1) а если документ новый? Набора старого ведь нет.
5 Defender aka LINN
 
18.10.13
09:21
(4) А регистр откуда об этом знает?
(3) У регистра нет такого события, есличо
6 Мэс33
 
18.10.13
09:25
(5) Я имел ввиду, перехватить событие "ПриПроведении" у каждого документа.
Так как жить с этим? Чтобы мое "действо" сработало один раз, а не два раза?
7 Defender aka LINN
 
18.10.13
09:27
(6) Как хочешь, так и живи. Платформа записывает набор 2 раза, это объективная реальность, которую ни нытье на форуме, ни удары головой в стену, ни алкоголь в любых количествах не изменят. Поэтому хватит тут вопрошать, как ее изменить и начинай приспосабливаться.
8 Мэс33
 
18.10.13
09:29
(7) Ох, вопрос-то в том и состоит теперь - как приспосабливаться? :-)
9 Defender aka LINN
 
18.10.13
09:31
(8) Удаление набора - это запись пустого.
10 Мэс33
 
18.10.13
09:36
Вот я смотрю процедуру:
Процедура ПриЗаписиВРегистрБухгалтерииПриЗаписи(Источник, Отказ, РежимЗаписи) Экспорт

Получаю набор записей в процедуре:
мТаблицаНабора = Источник.Выгрузить();

Ставлю внутри процедуры точку останова. И попадаю на нее ТРИ раза при перепроведении:
в 1 раз - набор пустой
потом два раза - набор с данными.
11 Мэс33
 
18.10.13
09:39
Если просто провожу непроведенный документ - то попадаю два раза в эту процедуру и набор не пустой.
12 Defender aka LINN
 
18.10.13
09:39
(10) само собой.
1 - удаление старых движений
2 - запись новых
13 Defender aka LINN
 
18.10.13
09:40
(11) Значит, в обработке проведения движения принудительно записываются.
14 Мэс33
 
18.10.13
09:45
(13) Вы про это?
ПроводкиБУ.Записать();
15 Мэс33
 
18.10.13
09:47
Угу, в нем и была причина.
Все, разобрался.
Окей.
16 Мэс33
 
18.10.13
09:48
Спасибо.
17 hhhh
 
18.10.13
09:48
(14) да. Они уже записываются автоматом в конце трензакции. И вы еще записываете Записать(); 2 раза записываются.
18 Мэс33
 
18.10.13
09:52
(17) Это я оптимизирую не свои документы. Поэтому нахожу такие ляпы.
19 Мэс33
 
18.10.13
09:54
Хотя из меня тот еще оптимизатор. С другой стороны - скорость проведения я увеличил на 50%