| 
    
        
     
     | 
    
    
  | 
Уменьшение количества блокировок при проведении | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        DEVIce    
     11.11.11 
            ✎
    08:25 
 | 
         
        Как считаете, какая реализация будет способствовать блокировке транзакции:
  
        Движения = Движения.Хозрасчетный; ... (тра-ля-ля) Движения.Записать(Ложь); или Движения = Движения.Хозрасчетный; Движения.Прочитать(); ... (тра-ля-ля) Движения.Записать(Истина);  | 
|||
| 
    1
    
        DEVIce    
     11.11.11 
            ✎
    08:28 
 | 
         
        Второй вариант в случае если набор еще не был записан однозначно приводил к падению производительности (значительно увеличивалось время проведения документа) и пока документ проводился все остальные ждали, причем долго ждали.
  
        Сейчас возникло подозрение, что первый вариант тоже работает не гуд в случае если набор записан.  | 
|||
| 
    2
    
        ОбычныйЧеловек    
     11.11.11 
            ✎
    08:36 
 | 
         
        (0) надеюсь ты понимаешь разницу между эти двумя приведенными тобой вариантами?     
         | 
|||
| 
    3
    
        ОбычныйЧеловек    
     11.11.11 
            ✎
    08:38 
 | 
         
        И зачем там вообще "записать" ?     
         | 
|||
| 
    4
    
        DEVIce    
     11.11.11 
            ✎
    08:46 
 | 
         
        (2). Понимаю. Только не понимаю почему чтение незаписанного набора приводит к резкому падению производительности. Есть конечно предположение, что записей по регистратору (читай отбору) в таблице нет и поэтому блокируется вся таблица.
  
        (3). Да, можно и без Записать, но в первом случае ранее записанные данные сотрутся. А так как код выполняем в подписке и по бух.регистрам в типовой запись указывается явно, то если набор не читать предварительно, то потрутся типовые движения.  | 
|||
| 
    5
    
        milan    
     11.11.11 
            ✎
    08:47 
 | 
         
        При входе в обработку проведения не блокируются движения документа ? 
  
        (4) Если набор записан, то блокируется по измерениям набора записей, а если пустой, походу все блокируется  | 
|||
| 
    6
    
        DEVIce    
     11.11.11 
            ✎
    08:48 
 | 
         
        Короче, в типовой намутили так, что что-то явно записывается и нужно читать предварительно, а что-то записывается уже автоматом при завершении проведения (что согласно описалову предпочтительнее). В итоге, приходится опытным путем высекать с каким регистром в каком документе как поступили. Ибо если читать движения, которые еще не записаны, то все встает колом.     
         | 
|||
| 
    7
    
        DEVIce    
     11.11.11 
            ✎
    08:51 
 | 
         
        (5). Нет, специально не блокирую, работаю с существующим набором. Просто он может быть и записан и не записан.     
         | 
|||
| 
    8
    
        DEVIce    
     11.11.11 
            ✎
    08:54 
 | 
         
        Посему и вопрос. С точки зрения производительности для записанного набора данных, что лучше:
  
        1. Прочитать, добавить свои записи и записать с замещением. 2. Добавить записи и записать без замещения. Умом понимаю что в любом случае должны заблокироваться все записи по регистратору. А вот на практике как бы проверить.  | 
|||
| 
    9
    
        milan    
     11.11.11 
            ✎
    14:44 
 | 
         
        (8) по измерениям движений регистратора блокируется.     
         | 
|||
| 
    10
    
        Axel2009    
     11.11.11 
            ✎
    14:46 
 | 
         
        блокируется по периоду. если в регистре нет записей старше чем твоя запись, то будут блочиться любые даты, выше самой старшей из регистра.     
         | 
|||
| 
    11
    
        Лефмихалыч    
     11.11.11 
            ✎
    14:47 
 | 
         
        (0) Конструкция Движения.Записать(Истина) приводит к последовательной записи двух наборов - сначала пустого, чтобы очистить, а потом того, который ты в обработке проведения заполнил.     
         | 
|||
| 
    12
    
        Лефмихалыч    
     11.11.11 
            ✎
    14:52 
 | 
         
        +(11) хотя это справедливо только для сведений     
         | 
|||
| 
    13
    
        milan    
     11.11.11 
            ✎
    15:09 
 | 
         
        (11) кстати не исключено, в апдейтах писали, что оптимизировали алгоритм записи регистров, по идее авто запись движений пройдет быстро ежели оне не поменялись. а вот очстка и запись новых, это зело тяжко как для самого регистра, так и для таблицы итогов     
         | 
|||
| 
    14
    
        Axel2009    
     11.11.11 
            ✎
    15:11 
 | 
         
        (13) ежели записи не менялись, то запись пройдет быстро еще со времен далеких 8.1     
         | 
|||
| 
    15
    
        DmitrO    
     11.11.11 
            ✎
    15:17 
 | 
         
        (0)во втором варианте пересчет итогов от штатных движений шел дважды: первый раз когда записывался набор от штатного функционала; а второй, когда набор записывался второй раз (в подписке), т.к. записывался снова весь набор (в том числе и штатные движения).     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |