Управляемые блокировки и партии товаров на складах #563302


#0 by BlueBird
Добрый день. Может кто переводил УТ 10.3 на управляемые блокировки, посоветуйте, пожалуйста. Перевожу документ "Реализация товаров и услуг" на управляемые блокировки. Возникли вопросы по изменению проведения его по партиям. Насколько я поняла, в запросе получения остатков по партиям не было "ДЛЯ ИЗМЕНЕНИЯ" - т.е. полученные остатки партий не блокировались? Стоит ли ставить исключительную блокирововку на остатки партий по товарам? Если блокировать только по номенклатуре, то заблокируется очень много наверное, другие транзакции не смогут списать партии этого товара. А не ставить - партии могут списываться повторно. Но получается, что с автоматическими блокировками так и было. И еще, может кто сталкивался: партии иногда списываются по несколько раз при проведении документа. Более низкий уровень блокировок не решит эту проблему?
#1 by Reaper_1c
Проблему решит отказ от оперативного списания партий.
#2 by Господин ПЖ
>Насколько я поняла, в запросе получения остатков по партиям не было "ДЛЯ ИЗМЕНЕНИЯ" - т.е. полученные остатки партий не блокировались? "ДЛЯ ИЗМЕНЕНИЯ" служит для того чтобы другие транзакции не могли прочитать этих данных. Т.е. для уменьшения взаимоблокировок - когда два сеанса прочитали одни и те же данные и хотят их изменить
#3 by fisher
Если нет ДЛЯ ИЗМЕНЕНИЯ - всё равно блокируется. Просто параллельная сможет прочитать данные. Но изменить не сможет.
#4 by BlueBird
Т.е. нужно блокировать все партии по списываемой номенклатуре?
#5 by fisher
Не только. По хорошему, тут как раз исключительная блокировка должна быть на прочитанные партии. Иначе даже без дедлока может быть фигня - оба дока прочитали партии, первый изменил остатки по ним, а второй двинул по старой информации о партиях. С управляемыми блокировками нужна именно исключительная блокировка по номенклатуре, как я понимаю. Ну а лучше, как уже сказали, перейти к регламентному списанию партий, если критична параллельность.
#6 by fisher
Вернее, блокировать нужно именно номенклатуру, а не партии.
#7 by dimaldinho
Про УТ 10.3 не в курсе, а в типовой УПП 1.3.14.1 режим управления блокировками установлен в Управляемый, есть смысл посмотреть, как там решен этот вопрос, чтобы не изобретать велосипед.
#8 by dimaldinho
Кстати, зачем на управляемые блокировки переводите? Если есть проблема с параллельностью работы с документами Реализация, то первое, что нужно сделать - отказаться от списания партий при проведении. Если проблема не с реализацией, а с другими документами, то режим управления для конфы можно поставить в Автоматический и управляемый, и перевести в управляемый режим "проблемные" документы и регистры, по которым они делают движения.
#9 by BlueBird
Да, параллельность нам критична. Очень много документов создается. Поэтому и боюсь, что будет долгое ожидание при проведении. Думаю, сначала попробуем оставить как есть (списание партий при проведении), на списание ну я имела в виду блокировка ПартииТоваровНаСкладах по номенклатуре.
#10 by BlueBird
Проблема у нас с одновременным проведением 3-х документов: Реализация товаров и услуг, Отчет о розничных продажах (в течение дня каждые полчаса загружаются из Фронтола), Чек ККМ (измененный, как реализация товаров и услуг, только чек на ККМ пробивает). Все 3 и переводим на управляемые блокировки. Хотим пока оставить списаие партий документами - если все равно будут возникать блокировки, то будем списывать партии обработкой в регламентном задании. В-общем как это все сделать я уже разобралась, вопрос только в партиях возник, сомневалась насчет блокировки по списку номенклатуры - не слишком ли много будет блокироваться.
#11 by fisher
"сомневалась насчет блокировки по списку номенклатуры - не слишком ли много будет блокироваться" А выхода другого нет. В противном случае возможны некорректные проведения. А если, как часто бывает, есть ходовые товарные позиции, присутствующие почти во всех документах - то особого прироста и не получите.
#12 by Господин ПЖ
я вообще не вижу применения упр. блокировок в запросах по партиям в УПП 1.3 товары на складах, резервы и т.п. где нет партий. По крайней мера там используется вызов функции общего модуля устанавливающего упр. блокировку... больше вообще "= Новый БлокировкаДанных" нигде не встречается кроме переоценки валюты
#13 by Господин ПЖ
в самой конфе стоит "Упр. блокировки", в документах - "авто", но ведь в данном случае общее свойство конфы выше по приоритету чем каждый документ
#14 by BlueBird
В тестовой базе перевела 3 документа по реализации на управляемые блокировки, запустила тест: в одном сеансе проводятся через групповую обработку отчеты о розничных продажах (много подряд, от 10 до 600 строк), в другом сеансе вручную провожу отчет о розничных продажах - база задумалась и во втором сеансе выдала "Превышено максимальное время ожидания предоставления блокировки из-за ожидания сессии" при проведении по партиям. Скажите, это очень плохой признак? В реальной жизни отчеты о розничных продажах проводятся автоматически каждые полчаса, но с некоторыми промежутками по времени (загрузили из Фронтола по 1 кассе - провели, загрузили из 2-й кассы - провели). Но и сенасов пользователей не 2, а 200.
#15 by dimaldinho
> Скажите, это очень плохой признак? Очевидно, это означает, что ваше решение "перевела 3 документа по реализации на управляемые блокировки" не устранило проблему. Можно отказаться от списания партий при проведении. А можно ЦУПом посмотреть детальную информацию об ожиданиях на блокировках (объект метаданных, таблица, заблокированный запрос, блокирующий запрос). Может, у вас там другие проблемы: неоптимальные планы запросов, методические ошибки (запись констант, явная запись движений и т.п.) Но скорее всего нужно отказаться от списания партий при проведении.
#16 by Reaper_1c
А правильный ответ был дан на второй минуте...
#17 by МаленькийВопросик
списание партий будет производиться при выполнении регламентной обработки «Проведение по партиям» в неоперативном режиме?
#18 by МаленькийВопросик
Обработка "Проведение по партиям"
#19 by МаленькийВопросик
непонятно - как часто ее делать?
#20 by Reaper_1c
Каждую ночь...
#21 by BlueBird
ну теперь по крайней мере dealock'ов нет. Добрались до списания партий в регламентном задании. Проблема в том, что последовательность "партионный учет" мы не используем (если кто-то исправит документ прошлого месяца (редко, но бывает), входящий в последоатеьность, то на восстановление последовательности уйдет несколько дней, у нас оно того не стоит). Есть следующая идея: при неоперативном проведении документы проводить по партиям, а при оперативном партии не списывать, это будет делать обработка в регламентном задании. Будет запоминаться документ, на котором обработка закончила списание партий, либо момент времени. Совсем ли это плохое решеие с точки зрения опытных разработчиков? :) Как посоветуете "запоминать" последний списанный по партиям документ - новая последовательность? константа?
#22 by dimaldinho
> Будет запоминаться документ, на котором обработка закончила списание партий А если кто-то исправит документ прошлого месяца, партии все равно придется пересписывать? Т.е. чем это лучше последовательности "партионный учет"?
#23 by BlueBird
Не, если кто-то исправит документ прошлого месяца, то партии спишутся при проведении документа. А обработка на чем закончила, с того и продолжит.
#24 by dimaldinho
Так она спишет уже неактуальные партии, раз в прошлом месяце партии пересписали.
#25 by dimaldinho
Или если мы принимаем, что изменения в документе прошлого месяца не приведут к изменению списанных партий, то можно предложить схему: - используется стандартная последовательность партионный учет - при необходимости внести изменение в "документ прошлого месяца", гарантированно не приводящее к изменению списанных партий (поменять ответственного в документе и т.п.): 1)запоминается граница последовательности ПУ, 2)изменяется "документ прошлого месяца", 3)граница последовательности ПУ возвращается программно на место
#26 by BlueBird
Да, в общем случае неактуальные. Но для нас это не критично, к тому же другого выхода не вижу. Проблема даже не в том, что могут исправить документ прошлого месяца раз в несколько месяцев, а что в течение дня могут исправлять вчерашние документы, и те что были 2 дня назад. И постоянно будут перепроводиться по партиям одни и те же документы.
#27 by dimaldinho
Можно, например, еженочно проводить по партиям не до текущей даты, а до текущей даты минус 2 недели и закрывать период ранее даты текущая минус 2 недели. При необходимости внести изменения в закрытый период использовать .
#28 by BlueBird
С одной стороны подходит, у нас уже период доступности редактирования документов - 2 недели (более ранние документы редактирует толлько польз. с Полными правами и по особым случаям). Но тогда у нас не будет актуальной себестоимости остатков товаров для инвентаризации. Инвентаризации проводятся ежедневно, по 10-20 документов создают. К тому продажи приблизительно хотя бы надо оценивать до окончания месяца, а 1-2 числа уже формируют отчеты по прибыли за прошедший месяц. Поэтому нужно ежедневное списание партий, желательно к тому же хотя бы периодически в течение дня.
#29 by fisher
Можно вести очередь проводимых/перепроводимых документов. Чтобы регламентное задание проводило по партиям только те документы которые только что проводили и именно в той же последовательности. А восстановление последовательности как было отдельной задачей так и останется. А типовых не так разве, кстати?
#30 by fisher
"в типовых"
#31 by BlueBird
Спасибо. Так и решили сделать.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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