Как разблокировать период в 1с
Допустим, компания занимается продажей товаров и состоит из нескольких отделов. Очевидно, что процесс начисления премии сотрудникам каждого отдела будет состоять из нескольких операций:. Тогда при одновременной работе транзакций может возникнуть ситуация, показанная на рис. Нельзя вводить новые данные удалить имеющиеся , если они могут попасть в уже один раз прочитанные данные при повторном чтении. Итак, ради увеличения производительности системы мы должны допустить параллельное выполнение транзакций.
Механизм объектных блокировок как раз и позволяет осуществлять конкурентный доступ пользователей к данным 1С: Предприятия в терминах объектов информационной базы. Как правило в большинстве случаев это связано с интерактивной работой пользователей в формах: В то же время все данные информационной базы хранятся в некоторой СУБД. А любая СУБД должна обеспечивать целостность и непротиворечивость хранимых данных. Для согласованного изменения данных в СУБД используется механизм транзакций, а для обеспечения конкурентного доступа к данным - механизм транзакционных блокировок.
Таким образом и тот, и другой механизмы обеспечивают конкурентную работу пользователей, однако области их действия и смысл устанавливаемых блокировок являются совершенно разными. Пессимистическая блокировка объектов базы данных предназначена для того, чтобы запретить изменение данных определенного объекта другими сеансами или данным сеансом до тех пор, пока блокировка не будет снята этим объектом встроенного языка.
Этот процесс, состоящий из нескольких взаимосвязанных действий выбор яблока, отсчитывание денег, передача денег продавцу, передача яблока покупателю называется транзакцией. Тем временем подходит Петров и тоже хочет купить яблоко. То есть, Петров находится в состоянии ожидания на блокировке. Из приведенного примера понятно, что блокировки - это необходимый механизм при конкурентном доступе к общим ресурсам.
Понятие транзакционной блокировки неразрывно связано с понятием транзакции. Если по каким-либо причинам одно из действий транзакции невыполнимо или произошло какое-либо нарушение работы системы, база данных возвращается в то состояние, которое было до начала транзакции происходит откат транзакции. Работа в многопользовательской среде требует соблюдения определенного компромисса между требованиями предсказуемости, целостности и непротиворечивости данных информационной базы и требованиями параллельности работы.
Режим автоматических блокировок в 1С:
Если бы этих блокировок не было, то Петров, возможно, тоже купил бы яблоко. Именно благодаря им обеспечивается предсказуемость действий пользователей, целостность и непротиворечивость данных. Причины возникновения плохих блокировок могут быть самыми разнообразными: В данной статье мы познакомимся лишь с механизмами системы 1С: Тема же анализа существующих блокировок и их оптимизации достаточно сложная и объемная, и выходит за рамки данной статьи. Предприятие 8 существуют два механизма, при работе которых используется термин блокировка.
Элемент справочника может содержать большое количество реквизитов, несколько табличных частей, но все эти данные необходимо изменять одновременно и согласованно.
Откроем форму того же элемента справочника и попробуем изменить значение какого-либо реквизита. Любая попытка изменения приведет к появлению специального окна с сообщением об ошибке рис. Таким образом пессимистическая блокировка гарантирует, что пользователь, начав изменять данные объекта, сможет записать эти изменения в информационную базу. В то же время, разработчик имеет возможность задействовать рассматриваемый механизм, используя средства встроенного языка.
Если блокировка объекта вызвала исключение, то оно, как было указано выше, может быть обработано разработчиком конфигурации и не приведет к обязательному откату транзакции. С другой стороны, блокировки объектов, установленные в течение транзакции, сохраняются при фиксации транзакции и снимаются при откате транзакции. Оптимистическая блокировка запрещает запись объекта в базу данных, если после считывания объекта он был изменен в базе данных другими сеансами или другими программными объектами этого же сеанса.
Таким образом оптимистическая блокировка гарантирует, что пользователь изменяет актуальные данные объекта, которые хранятся в информационной базе, а не какой-то их предыдущий вариант. Прежде чем перейти к рассмотрению механизмов платформы 1С: Предприятие, познакомимся в общих чертах с понятиями, которые будут использованы далее.
При одновременной работе нескольких пользователей с одной и той же информационной базой периодически возникают ситуации, когда два или более пользователей пытаются не только одновременно прочитать одни те же данные, но и внести в них какие-то изменения.
Петров ждет некоторое время, обижается и уходит рис. Это событие соответствует ошибке "Превышение времени ожидания блокировки". А Иванов, в результате, выбирает одно единственное яблоко самое лучшее и покупает только его рис. Таким образом все остальные яблоки были заблокированы зря.
Если после этого другой пользователь, например, попытается выполнить редактирование того же объекта, ему будет выдано сообщение о том, что не удалось заблокировать объект. Когда пользователь, редактировавший объект, закроет форму объекта, расширение формы снимет пессимистическую блокировку. Войдем в прилагаемую к работе информационную базу под пользователем Иванов , откроем форму элемента 1С: Управление торговлей справочника Номенклатура код 12 и изменим цену продажи с ,00 на , Не сохраняя сделанные изменения , войдем в информационную базу еще раз, но теперь под именем пользователя Петров.
Так получилось, что продавец очень рассеян и ему приходится абсолютно все записывать. По этой же причине все яблоки у него пронумерованны.
Очевидно, что если в таких случаях не предусмотреть возможности подключения специальных механизмов системы, то могут возникнуть проблемы, связанные с целостностью и достоверностью данных, хранимых в информационной базе. Описанию возникающих проблем, а также путей их решения в системе 1С: Прежде чем начать изучение механизмов 1С: Предприятия, обеспечивающих конкурентный доступ пользователей к данным, познакомимся с тем, что такое блокировки, когда они возникают и можно ли обойтись без блокировок.
В самом деле, что бы было, если бы продавец не записал в своей книге, что яблоко из четвертой ячейки нельзя предлагать другим покупателям? В любом случае, если запись в книге продавца отсутствует, исход данной ситуации становится непредсказуемым. Неизвестно, кому достанется это яблоко, неизвестно у кого окажутся деньги, которые Иванов за него отдал и так далее. Иванов гарантированно сможет купить яблоко, если у него хватит денег.
Он хочет его купить. Иванов достает кошелек и отсчитывает деньги рис. Тем временем, продавец делает запись в своей книге: Эта запись и есть блокировка рис. Обратите внимание, что на самом деле яблоко все еще находится у продавца, Иванов его не купил. Может быть и не сможет купить например окажется, что не хватает денег. Но у продавца уже записано, что это яблоко нельзя предлагать другим покупателям до тех пор, пока Иванов не завершит процесс покупки.
При этом мы так же должны обеспечить необходимую нам степень целостности данных то есть, ограничить параллельность транзакций при работе с одними ресурсами. Строгость этих ограничений может быть различной, в зависимости от решаемой задачи.
Как известно, при одновременном чтении и изменении одних и тех же данных конкурирующими транзакциями могут возникнуть следующие проблемы одновременного доступа:. Управление торговлей и решила изменить значение реквизита ЦенаПродажи с на Распределение по времени описанных действий показано на рис. Управление торговлей и каждый раз считывает значение реквизита ЦенаПродажи. Графическое представление данной проблемы показано на рис. Нельзя повторно читать измененные и записанные данные, если эти же самые данные уже были прочитаны до внесения в них изменений;.
Поэтому нам необходим механизм гибкой настройки этих ограничений. В современных СУБД такая возможность реализуется путем применения уровней изоляции транзакций. В зависимости от используемого уровня изоляции, СУБД накладывает различные типы блокировок на различные объекты базы данных на различное время.
В основном механизм пессимистической блокировки используется системой 1С: В тот момент, когда пользователь начинает модификацию объекта в форме, расширение формы устанавливает пессимистическую блокировку.
Для того, чтобы установить пессимистическую блокировку объекта, можно использовать метод объекта Заблокировать. Для снятия пессимистической блокировки разработчик может использовать метод объекта Разблокировать , причем использовать его для того же самого экземпляра объекта, для которого ранее была установлена блокировка. Рассматривая возможность взаимного влияния механизмов объектных и транзакционных блокировок, напомним, что объектные блокировки не влияют на операции над данными и на процесс течения транзакций обратите внимание, на рис 8 они расположены на разных уровнях работы с данными.
Фактически, оптимистическая блокировка представляет собой проверку, которая выполняется перед записью объекта в базу данных. Эта проверка построена на анализе номера версии объекта, хранящейся в базе данных и номера версии, помещенной в память компьютера в момент считывания данных из информационной базы. Если при записи объекта номера его версий отличаются, то будет выдано предупреждение о том, что версия объекта изменилась или он был удален, то есть сработает оптимистическая блокировка.
Зачастую это приводит к путанице и позволяет думать, что речь идет об одних и тех же блокировках или об одном и том же механизме. На самом деле это не так. Каждый из этих механизмов предназначен для обеспечения конкуретной работы пользователей, однако в своей, определенной области, и при этом блокировки, используемые одним и другим механизмами, имеют совершенно различный смысл рис. Логическая модель данных 1С: Такими объектами, например, являются элементы справочников, документы и др.
Откроем два сеанса работы с прилагаемой к работе информационной базой: В обоих сеансах откроем откроем форму элемента Управление торговлей справочника Номенклатура код Теперь в сеансе, открытом от имени пользователя Иванов , изменим цену продажи с ,00 на ,00 и запишем сделанные изменения. После этого, в сеансе, открытом от имени пользователя Петров попробуем изменить значение какого-либо реквизита. Любая попытка изменения приведет к появлению другого окна с сообщением об ошибке рис.
Если же он откажется от покупки, то только в этом случае яблоко из 4 ячейки сможет купить Петров. Покупатель Иванов хочет купить одно яблоко. Он перебирает все яблоки из ящика по одному, выбирая, какое лучше. При этом продавец записывает в своей книге все яблоки, которые понравились Иванову рис. В это время подходит Петров и не может купить ни одного яблока, потому что они все заблокированы Ивановым рис.
16.08.2017 в 21:49:32 Для Android на сотку у меня нокиа 6700 2 января 2013Ренат: мобильный агент возможен по многим такие внешние.
17.08.2017 в 18:42:29 Потужне лібідо, здатне высокого качества так.