Имя: Пароль:
1C
1С v8
мУдалятьДвижения VS Удалять автоматически при отмене проведения
, , ,
0 vashkovich
 
17.05.13
15:20
Коллеги, подскажите.
Вот такой нюанс.

В УПП в обработке проведения стоит вызов процедуры очистки движений

Если мУдалятьДвижения Тогда
   ОбщегоНазначения.УдалитьДвиженияРегистратора(ЭтотОбъект, Отказ, Истина, РежимПроведения);
КонецЕсли;

В  документе стоит режим удаления движений "Удалять автоматически при отмене проведения"

Стоит ли очищать движения программно если они и так очистятся на уровне платформы?
1 Maxus43
 
17.05.13
15:22
При перепроведении очищать же надо тоже, потому и программно
2 vashkovich
 
17.05.13
15:25
даже если поставить режим "Удалять автоматически"?
3 Maxus43
 
17.05.13
15:25
(2) если поставить удалять автоматически - то да, программно чистить не надо
4 Maxus43
 
17.05.13
15:26
Но этого делать не стоит
5 vashkovich
 
17.05.13
15:26
Ок, спасибо.
6 vashkovich
 
17.05.13
15:27
(4)  почему же?  программно слишком долго - до 30% всего времени перепроведения.
7 Maxus43
 
17.05.13
15:29
(6) а автоматически сколько, ты замерял? замер этого не покажет.
Там суть такая - он очищает только регистры, по которым движения есть, а не у всех регистров, что делает автоматическое удаление, ЕМНИП.
8 vashkovich
 
17.05.13
15:35
проверял по журналу.
Запустил 20 документов и по каждому проверил когда началась транзакция и когда закончилась.  

Реально проверить все ли регистры очистились конечно не могу, поэтому и возник вопрос.

Посмотрел движения с учетом кода очистки и сравнил с движениями с отключенным кодом очистки - они полностью совпали.  Но как сомнения остались.
9 hhhh
 
17.05.13
15:35
(6) там такая штука, если очищать пустой набор движений регистра, регистр целиком блокируется для других пользователей. Поэтому пишут программу, чтобы очищать только непустые.
10 hhhh
 
17.05.13
15:37
(9)+ но сейчас новая фишка появилась, можешь посмотреть в БП, есть список регистров, которые очищаются, их несколько штук,а остальные не трогают.
11 vashkovich
 
17.05.13
15:42
(9) !!!  спасибо за подсказку про пустой набор.
вставлю проверку на количество и если пустое то набор не буду очищать.

(10) обязательно гляну
12 Maxus43
 
17.05.13
15:47
(11) >>вставлю проверку на количество и если пустое то набор не буду очищать
дак программное удаление так и работает, куда вставлять собрался?
13 Sammo
 
17.05.13
15:54
Не уверен, но может быть еще 1 причина - запись в режиме обменДанными.Загрузка = Истина.
14 Reaper_1c
 
17.05.13
15:57
Причина - вылет клиент-серверных баз при работе с MS SQL из-за участия более чем 256 таблиц в одном запросе.
15 vashkovich
 
17.05.13
15:59
Забыл в самом начале уточнить, что все проблемы в SQL версии.
на файловой версии таких проблем нет.


Набор.Отбор.Регистратор.Установить(Регистратор);
   //++++
   Если Набор.Количество()<>0 Тогда
       Набор.Записать();
   КонецЕсли;
   //****
   //вместо вот этого:   Набор.Записать();
16 Maxus43
 
17.05.13
16:14
(15) набор.Прочитать() ещё, а то там всегда 0 будет.

и не ответил на (12)
17 vashkovich
 
17.05.13
16:22
(16) так пост (15) это и есть ответ на (12)

за напоминание спасибо
18 yukon
 
17.05.13
17:40
(16) > набор.Прочитать() ещё

В результате:
> до 30% всего времени перепроведения

В типовых же не зря эту проверку через запрос сделали - см. БП 3.0. И ограничение на 256 таблиц тоже учли.
19 samozvanec
 
17.05.13
17:43
(16) коллекция Движения считана
20 samozvanec
 
17.05.13
17:44
+(19) хотя в (15) может и надо считать, смотря откуда набор
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс