Признак Удалять движения автоматически в документах #304830


#0 by Вульфстен
Почему в типовых конфигурациях 1С v8 (в УТ) во всех документах стоит признак НЕ удалять движения автоматически и все обрабатывается программно. Дает ли это какие-то преимущества по производительности.
#1 by Поручик
Я наверное, туплю, но у меня везде стоит "Удалять движения автоматически". "Управление торговлей", редакция 10.2 (10.2.13.1).
#2 by IgorKa
При автоматическом удалении удаляется ВСЕ и все записывается заново. при неавтоматическом - дописываются добавленные или измененные/удаленные записи. Примерно так.
#3 by IgorKa
При автоматическом удалении удаляется ВСЕ и все записывается заново. при неавтоматическом - дописываются добавленные или измененные/удаленные записи. Примерно так. Выигрыш по производительности.
#4 by Вульфстен
Хм прикольно, а у меня "Управление торговлей" для 8.1, редакция 10.3.2.4. Тогда тем более интересно почему 1С так сделало. Я так думаю Автоматическое удаление движений не слишком оптимизировано работает.
#5 by Вульфстен
все равно непонятно, во всех документах в процедуре ПередЗаписью есть такой код В этой процедуре все равно сначала удалются ВСЕ движения. В чем тогда выигрыш.
#6 by Iron
Выигрыша нет. Сделано для возможных разработок в будущем.
#7 by IgorKa
а ты замерял? - просто не занимался еще вплотную... а на курсах сказали, что это работает.
#8 by Вульфстен
Нет не замерял, просто дорабатываю "Заказ покупателя" натолкнулся на этот момент стало интересно в чем хитрый смысл.
#9 by Diman000
Вроде это используется, например, при оперативном перепроведении документа. Так как, остатки будут в этом случае будут получаться не на момент времени документа, а актуальные. А вообще, выигрыш от такой системы только в том, что будут очищаться только движения по тем регистрам, которые реально есть. То есть, не будет лишней блокировки таблицы движений. Но все равно это лажа. Если остатки при проведении получаются на момент времени документа, то такое удаление не нужно. Единственное, что требуется, это взвести флаг модифицированности набора записей (например, через Движения.МойРегистр.Очистить). Это нужно, чтобы движения были очищены, если при перепроведении никаких добавлений в набор записей не было. В противном случае может получиться так, что после перепроведения движений по регистру быть не должно (новый алгоритм или вариант проведения их не создает), но старые записи останутся.
#10 by Вульфстен
, Я для себя решил так. По поводу выигрыша в производительности - неизвестно, чтобы знать точно надо замеры проводить. Ну по крайней не хуже (в противном случае 1С бы так не сделала). А вот система становится гибче поскольку в зависимости от требуемых алгоритмов мы можем выборочно отменять движения документа, а по умолчанию использовать механизм, предложенный 1С.
#11 by Diman000
"неизвестно, чтобы знать точно надо замеры проводить" - мне известно, я проводил "Ну по крайней не хуже (в противном случае 1С бы так не сделала)" - логика ошибочная. Творения 1С очень часто (точнее, почти всегда) не отличаются оптимальностью с точки зрения производительности.
#12 by Господин ПЖ
Возможно это обход - блокировки таблицы целиком, если записей по ней 0.
#13 by Вульфстен
почему ошибочная. Я согласен что Твореня 1С не шедевры. Но насколько я знаю 1С теперь уделяет большое внимание производительсти, поэтому мне кажется что хуже не должны сделать (именно в этом моменте с удалением движении).
#14 by Diman000
Они не сделали хуже, чем было у них раньше. Они действительно сделали лучше, чем с автоматическим удалением движений. Но еще лучше будет (и намного лучше) не удалять эти движения в начале обработки проведения, а предоставлять это платформе при перезаписи наборов записей после обработки проведения. Тем более, что в 8.1 перезапись существующих движений серьезно оптимизирована на уровне платформы. А с системой полного удаления движений, а потом полной их записи вся эта оптимизация идет лесом.
#15 by Вульфстен
Понятно,спасибо. Да вопрос не такой простой как казалось на первый взгляд. Возможно как писал - это первый шаг к будущим разработкам.
#16 by Вульфстен
Кстати по поводу замеров производительности, если с умом к этому вопросу подходить, так как ты советуешь. Насколько вариант с удалением движений при перезаписи существующих лучше варианта 1С в 8.1. (приблизительно в % на твоих замерах)
#17 by Diman000
Тут есть два момента. Производительность и пропускная способность. По пропускной способности, когда я гонял тест из 30 пользователей с интенсивным вводом новых доков, а также перепроведении существующих, то 80% документов не проводилось/перепроводилось без сообщения о конфликте блокировок. После исправления ситуации с принудительным удалением движений этот процент снизился до 15%. По производительности очень много зависит от того, насколько сильно изменились движения перепроводимого документа, а также от количества этих движений. Я уже не помню точно, и под рукой у меня нет этих результатов, но при количестве движений измеряемом в тысячах достигается ускорение в 2-3 раза. Это если изменений в движениях единичны (а чаще всего так и бывает). Все это я проделывал в УПП.
#18 by Вульфстен
ОК, спасибо, полезная информация.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С