#0
by selenat
Открыл вот более новую чем у меня УТ и смотрю, что практически у всех документов отключено автоматическое удаление движений. А удаляются движения обработкой общего модуля. Кто скажет, это вообще с какой целью сделали? Чем автоматическое удаление не угодило?
#2
by selenat
Косяк платформы? Это как с использованием в автоматическом режиме механизма последовательностей? Других причин нет?
#4
by 1C-Nick
интересно блокировки на какой-то конкретно СУБД возникали или на всех? И еще интересно насколько замедлилось распроведение документа при таком подходе...
#5
by selenat
ну, я думаю очевидно, что на всех. А почему должно было замедлиться распроведение? Меня другой вопрос занимает. Неужели удаление движений, прописанное в коде, чем-то отличается от того же на уровне платформы? По идее один хрен...
#7
by Armando
Кому не лень, посмотрите, что там в профалере творится при ручном и автоматическом удалении движений))) а то мне тож интересно, но лень))
#8
by selenat
дык управляемые то не прописаны для документов. Значит блокировки автоматические стоят. Неужели на уровне платформы прописан такой кривой механизм автоматического удаления движений, что используется еще худший вариант с блокировками?
#10
by Ненавижу 1С
а зачем платформа блокирует при автоматическом удалении всю таблицу регистра? а не выборочно, как в ручном режиме?
#11
by selenat
если кто не заметил, в стоит не уверенность, а вопрос. У тебя есть другие предположения по поводу вопроса в ?
#13
by selenat
если бы быстрее было, то они бы не отключили во всех конфах автоматическое удаление...
#17
by selenat
я в курсе. В клиент-серверной версии используется индексирование полей для блокировок. Но почему при автоматическом удалении движений блокировки отрабатываеют хуже?
#18
by Maxus43
без автоматического удаления скорее всего быстрей загружаются новые документы... чем не вариант)
#20
by Fragster
платформа не умеет на постгре автоматом блокировки по строкам, а не по таблицам, делать - для того и сделано.
#22
by Maxus43
При загрузке каких либо документов программно например. Загрузке остатков и т.д. В типовых доках стоит код что если документ новый - то движения не удалять. Т.е. платформа не лазиет по регистрам и не смотрит есть ли движения у документа. Это не только при загрузке, а просто при создании и проведении нового дока. Может так новые проводятся быстрее. Надо замерить
#24
by ОбычныйЧеловек
ап, тема интересная, не хотелось бы что ветка утонула, такое ощущение, что точного ответа не знает никто а жаль. Если это так - то это полная глупость со стороны платформы.
#25
by Fragster
поиск существующих движений - это такой микроскопический по времени запрос, что даже не смешно...
#26
by Maxus43
это только предположение) не ругайте. Посмотрев на код Удаления движений в УПП - не совсем быстродействующий имхо... там и запросы, и обращение к метаданным документов, выгрузки-загрузки в ТЗ и т.д.
#29
by NcSteel
При проведении нового документа , блокируются вся таблица. Так что нужная вещь . иМХО.
#30
by Maxus43
я не говорю что для ускорения сделано, я говорю что такой эффект при проведении новых документов тоже имеет место, имхо. Ради этого конечно такое делать - бред)
#32
by ОбычныйЧеловек
можно для "особо одаренных" (это я о себе) - платформа все таки настолько тупая, что не в состоянии "нормально" отработать автоматического удаление движений регистров, поэтому необходимо извращаться с ручным удалением так?
#33
by Mitriy
если тебе хочется думать, что платформа тупая, то вряд ли кто-либо сможет тебя убедить в обратном...
#35
by DmitrO
Все очень просто. Вот описание главной причины. Проведение документа в конфигурации может двигать множество регистров, причем какие именно регистры будут двигаться зависит от логики данных документа (хороший пример ПКО в БП, в зависимости от вида операции он может двигать достаточно разный набор регистров), однако для платформы он может двигать все которые ему определено в метаданных, соответственно и чистить платформа будет все. Если чистить будет конфигурация, а не платформа то она будет чистить только те регистры по которым она могла сформировать движения в данном режиме документа (на примере ПКО: вид операции). Соответственно регистров блокировться будет меньше и паралелизм увеличится. А на счет скорости непосредственной операции удаления движений, выполняется она модулем или платформой разница незначительна по сравнению со временем работы БД (сервера или файловых операций).
#39
by ОбычныйЧеловек
Спасибо за ответ. Только не понятно почему платформа не работает по такому же принципу, почему бы ей не бегать мо метаданным а смотреть какие движения сделал документ и только эти движения чистить?!
#40
by selenat
у меня нет под рукой БП. Но в тех документах, которые мне попадались, всюду вызывается просто банально процедура общего модуля, которая чистит движения ВСЕХ регистров...
#41
by Fragster
да блин, при автоматическом удалении движений на postgre будет блокироваться вся таблица итогов и движений по тем регистрам, по которым происходит удаление движений. а при ручном - идет ручная расстановка блокировок - и паралельно с этим другие могут по другим значениям измерений проводить/распроводить документы
#42
by DmitrO
думаю (не проверял) что там нет ни какой проверки, т.к. с точки зрения программиста БД она не имеет ни какого смысла, т.к. проверку эту надо выполнять в той же транзакции и она должна установить ту же блокировку.
#46
by selenat
думаю, что ты не прав. Вот смотри. Открываем проведенный документ. Меняем там вид операции. Новые движения сформируются по новому списку регистров. Но почистить нужно все старые движения, независимо от того, какой вид операции был до этого. Я не видел, чтобы где-то в типовых кто-то скрупулезно прописывал удаление по определенным регистрам в зависимости от значений реквизитов конкретного документа...
#47
by ОбычныйЧеловек
ясно, могу ошибаться но в типовых (у меня нет последних релизов) вроде как нет ручной расстановки блокировок, т.е. тупо чистятся все регистры по которым были движения.
#48
by Maxus43
там не прописывается. Там ищутся сначала есть ли движения по регистрам... в тех в которых есть - чистятся, другие не трогаются. А как я понял платформа трогает ВСЕ регистры данного документа. а так - не все.
#49
by Рыжий Лис
При отсутствии записей по регистратору в регистре, а они отсутствуют всегда у нового документа, СУБД блокирует весь регистр. И блокировка снимается только по окончании проведения, т.к. выполняется внутри транзакции проведения. Понятно что в это время никто другой не может провести свой документ. Причем блокировка будет наложена не только в момент записи, но и при попытке чтения, для проверки наличия записей в регистре.
#52
by nbIx
Я так понимаю, при автоматическом удалении движений у тебя в начале проведения набор записывается пустой набор, далее после проведения уже заполенный - то есть идет запись 2 раза. При не автоматическом перезаписывается только в конце проведения.
#53
by Maxus43
я уже не про поиск, а про блокировку регистров. если удалять по найденным - Блокируются найденные регистры, а не ВСЕ регистры, по которым документ может сделать движения
#55
by Maxus43
нет. В типовых прописано что при неавтоматическом - УДАЛЯТЬ движениея. Т.е. запись 2 раза также. Сначала удаляет, потом записывает
#60
by selenat
а как там с рекомендацией от 1С не записывать движения по регистрам в явном виде в обработке проведения? Чтоб они записывались автоматически про окончании обработки проведения. Вроде ж была такая рекмендация именно для устранения проблем с блокировками...
#61
by MM
Не буду утверждать наверняка, но платформа чистит все регистры не проверяя есть ли в них движения, а это приводит к эксклюзивной блокировке всех регистров документа, даже пустых. Проверка из конфигурации проверяет все регистры на наличие записей (разделяемая блокировка), и только если движения есть, чистит их (эксклюзивная блокировка), что при большом количестве пустых регистров увеличивает параллельность проведения.
#62
by ASU_Diamond
а может это задел на то что в дальнейшем будут анализироваться текущие движения со старыми и будут прописываться в движения только изменения?
#64
by nbIx
В принципе 2 раза движения записывать это не кошерно. Представим большой объем данных в наборе. Так при записи набора идет еще и перерасчет итогов в транзакции, короче для регистра бух. это пипец.
#65
by Maxus43
УПП. ПТУ по регистру Хозрасчетный - Записывает вобще несколько раз. Первый - пустые движения. Второй и последующие - проводки из модуля ПТУ, общих модулей, подписок на события. вот тебе и рекомендации.
#67
by MM
это говориться не только для повышения скорости записи, но и чтобы гарантировать правильный порядок записи в таблицы, чтобы побороть дедлоки. Но если при проведении нужно иметь записанные данные (для запроса, например), то это правило только требует соблюдать только порядок записи в таблицы из всех документов, которые в них пишут.
#69
by Maxus43
да нет вроде, ничего там решать не пытаются) одно узкое место при автоматическом удалении движений закрыли только. А что пишется несколько раз - к удалению движений уже отношения не имеет. Такая вот УПП. Ещё раз повторюсь, что в УПП код по удалению движений стоит в самом начале Процедуры Обработка проведения: т.е. Он просто затирает движения, если надо.
#70
by MM
Если разные документы (независимо от их вида) пишут регистры в разном порядке, то возрастает риск взаимоблокировки. Первый док записал 1й регистр, а 2й док - 2й регистр, потом 1й док хочет писать 2й регистр, а 2й док - 1й регистр, и всё тушите свет. УдалитьДвиженияРегистратора в УПП очищает не все регистры, он не трогает регистры отложенного проведения и партий, работа с которыми особо ресурсоёмка.
#71
by selenat
не оптимальнее ли для распараллеливания работать с ТЗ, которая будет формироваться и передаваться во все процедуры общего модуля параметром, вместо запросов к предварительно записанным таблицам БД?
#72
by selenat
а работа с партиями в УПП сделана всегда отложенной? Или это регулируется пользователем все-таки?
#73
by MM
УПП работает по принципу разделяй и властвуй. И не факт что таскать ТЗ на сервер и обратно это хорошо, особенно если придётся тащить на клиента громоздкие записи по партиям. Всё настраивается, но для больших баз выбор не велик. И я писал не только про партии, но и про проводки БУ.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Проверка пустых субконто
- Купюросчётная машина - "БАНКНОТА 1. Нужна схема пассиков.
- Учет откатов, бонусов, взяток и т.п.
- v7: 1С:7.7 Как получить интерфейс пользователя?
- Стандартные вычеты и совместители
- ЗУП 8.1. К выплате меньше, чем начислено.
- КА:Отчет о розничных продажах
- Свертка панели в форме
- Переключить активность проводок
- Консоль запросов
- как в 1С 8.2 вызвать "Сохранить КАК..." для печатной формы....
- v8.1 Логирование в внешнюю БД
- Как из COM объекта вытащить имя пречисления
- Загрузка данных из Excel в 1С 8.2
- прогнозирование в 1С?
- Посоветуйте обработку для переноса документов БП > УПП
- Неверно проставляются записи о стаже в СЗВ 6-1
- Подключение к компу вне домена
- Можно ли ресурс (поле) выводить только в общих итогах в СКД?
- СКД: перехват данных из отчета "РасчетныеЛисткиорганизации"