Quote (newgluk)
вместо объекта "БлокировкаДанных " использовал "блокировать для изменения". Какие есть мысли по этому поводу?
Ошибка на -1.5 (вроде) -- неправильная организация управляемой блокировки. В модуле проведения КуплиПродажи происходит 2 запроса к данным регистра бухгалтерии. Управляемая блокировка у Вас запускается после строки Движения.Управленческий.Записать(); после выполнения первого запроса. Данные первого запроса в этот момент не защищены от изменений. Общий смысл блокировки:
нужно заблокировать все, что мы будем использовать. Если мы будем просто писать в регистр -- блокировка не нужна. Если будем писать, потом читать, то и тут тоже можно использовать объект БлокировкаДанных, но целесообразнее, проще использовать дирекитву блокировать для изменения = Истина, тогда платформа при записи сама точно выделит те данные, которые нужно заблокировать. (но никто не мешает это сделать и самим, с помощью БлокировкаДанных). Если мы по классике сначала почитаем, соберем всю информацию, а уже потом на ее основании будем читать -- тут уж блокировать для изменения не поможет, т.к. запись идет в конце транзакции, а данные могут быть изменены в процессе обработке другим пользователем. Поэтому перед использованием данных мы их блокируем, собираем, обрабатываем, пишем в регистр. Когда транзакция закроется управляемая блокировка снимается.