Профессиональная разработка в 1С 8.2 и новая методика контроля остатков #664578


#0 by liurn
Здравствуйте, готовлюсь к сдаче специалиста, при чтении книги "Профессиональная разработка в системе 1С: Предприятие" обнаружил пример, который поламал мое представление о новой методике контроля остатков. Вот часть листинга документа Заказ покупателя (в книге страница 609): Запрос3 = Новый Запрос; ..... Далее идет контроль остатков Так вот, не понятно, для чего автор листинга выполняет запись пустого набора: и мотивирует это тем, что нужно читать резервы без учета данных в документе. Но ведь далее по тексту до очередного вызова Движения.Записать нигде не происходит этого самого чтения резервов. Кроме того, записью этого пустого набора новая методика контроля отрицательных остатков после записи движений сводится на нет практически, ведь здесь происходит блокировка пустого набора записей и такой же документ Заказ покупателя не проведется в другой сессии, будет ждать завершения текущей транзакции даже если в нем совсем другой перечень номенклатуры указан. Может кто задавался аналогичным вопросом и нашел на него ответ? Это ошибка автора или в этом скрыт какой то смысл, которого я не понимаю.
#1 by Maxus43
>>такой же документ Заказ покупателя не проведется в другой сессии, будет ждать завершения текущей транзакции даже если в нем совсем другой перечень номенклатуры указан. с чего вдруг? набор записей данного регистратора блокируется, а не весь регистр
#2 by shuhard_серый
[в этом скрыт какой то смысл, которого я не понимаю] 100500
#3 by Fragster
можно наложить управляемые блокировки руками, но так проще
#4 by Fragster
+ таким образом меньше время блокировок
#5 by Fragster
+ всегда одинаковый порядок наложения этих самых блокировок
#6 by liurn
выполнение Движения.РезервыНоменклатуры.Записать; для пустого набора записей блокирует пустой набор записей. В результате в другой сессии выполнение этого же метода вызовет конфликт блокировок. Т.е. любая попытка записать пустой набор записей этого же регистра будет заблокирована до завершения данной транзакции. Проверено на опыте, хотя явно в документации не встречал такого утверждения.
#7 by liurn
Я понимаю сам метод, понимаю для чего он был разработан. Мне не понятно для чего происходит запись пустого набора записей. На мой взгляд это безсмысленно.
#8 by liurn
Какой же смысл в этом скрыт? Может вы разъясните?
#9 by EasyRider
смысл в том чтобы не учитывать движения этого регистратора.А вот насчет блокировок,так если во время проведения можно кому-то еще писать,то получится грязное чтение и остатки уплывут в минус.
#10 by Fragster
кстати, отдельно записывать пустой набор там не нужно
#11 by liurn
Где не учитывать? Ведь движения нигде не читаются.
#12 by Fragster
кстати, вообще какой-то косячный пример - после Движения.РезервыНоменклатуры.Записать; сбросится признак Записывать и Движения.Записать не вызовет запись набора в случаеЮ, если стоит "записывать выбранные"
#13 by liurn
Т.е. ваше мнение, что это ошибка автора?
#14 by Fragster
типа того
#15 by EasyRider
не учитывать в контроле остатков "..... Далее идет контроль остатков "
#16 by liurn
Да, но перед этим контролем выполняется метод Движения.Записать который в любом случае перезапишет старые движения новыми.
#17 by Maxus43
да почему набор пустой? у данного набора отбор по регистратору, пусть не заполнен, но ограничен регистратором. Сама метода вызывает споры конечно, но что блокируется пустой набор - не согласен, он не пустой
#18 by EasyRider
ну.Запишет старые движения новыми пустыми.
#19 by liurn
Попробуйте выполнить простейший тест и убедитесь в этом, я спорить не стану. Да и вопрос мой не в том. Я хочу понять для чего в принципе нужен здесь этот вызов. На мой взгляд это лишнее как минимум.
#20 by liurn
Да и причем тут отбор вообще? Каким образом отбор в наборе записей влияет на блокировки? Я знаю из СП что на блокировки влияют комбинации измерений записываемого набора записей. А регистратор - это не измерение вроде как.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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