1C 8 платформа. Блокировки данных

Новая тема
"Здравствуйте, друзья!
Вопрос о блокировках.
Правильно ли выбирать данные запросом (с параметром ДЛЯ ИЗМЕНЕНИЯ) для последующей их обработки. А затем записывать их назад в базу с помощью менеджера записи соответствующего регистра. Не происходит ли в этот момент запись данных которые я же и заблокировал запросом. Грамотно ли так выполнять чтение и последующую запись данных?
Если не удачно сформулировал вопрос приведу краткий пример:
Например, вот так читаю данные:
Запрос = Новый Запрос();
Запрос.Текст = "ВЫБРАТЬ
               | РеквизитыБанкаСрезПоследних.Банк,
               | РеквизитыБанкаСрезПоследних.БИК,
               | РеквизитыБанкаСрезПоследних.Период,
               | СправочникБанков.Наименование,
               |ИЗ
               | РегистрСведений.РеквизитыБанка.СрезПоследних(&Дата, ) КАК РеквизитыБанкаСрезПоследних
               | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СправочникБанков КАК СправочникБанков
               | ПО РеквизитыБанкаСрезПоследних.Банк = СправочникБанков.Ссылка
               |ГДЕ
               | СправочникБанков.Наименование = &Наименование"
                       | ДЛЯ ИЗМЕНЕНИЯ;
Запрос.УстановитьПараметр("Дата", Дата);
Запрос.УстановитьПараметр("Наименование", Банк.Наименование);
Выборка = Запрос.Выполнить().Выбрать();
.....
тут далее некая обработка данных
.....
и потом записываю их:
МенеджерЗаписи = РегистрыСведений.РеквизитыБанка.СоздатьМенеджерЗаписи();
МенеджерЗаписи.БИК = Выборка2.БИК;
           МенеджерЗаписи.Период = Дата;  
МенеджерЗаписи.Записать();

Кстати, какой сейчас по умолчанию в платформе используется тип блокировок (пессимистическая или оптимистичная)? В документации есть их описание, но в каких случаях какая применяется что-то не нашел.
"
Не надо путать объектные и транзакционные блокировки, пессимистическая и оптимистичная блокировки относятся к объектным и используются обе 1С. А то что вы имеете ввиду это транзакционные блокировки которые бывают автоматическими и управляемыми, по умолчанию автоматические. Подробнее о блокировках можно почитать в книге "1С предприятие от 8.0 к 8.1"
Прочел главу про блокировки. В первом приближении разобрался. Несколько вопросов на понимание, если позволите:

Верно понимать, что объектная пессимистическая блокировка (сопоставляемая с объектом концигугации, в данном примере с документом) в данном случае срабатывает при инициации формы документа. При создании объекта формы блокировка устанавливается, при закрытии - снимается. При этом само изменение данных возможно (поэтому в самом модуле формы в хэндлерах событий без ошибок данные читаются и записываются). Исключение возникает только при попытке установки блокировки на эти же данные другим или этим же объектом (т.е. если бы вызвал бы метод установки блокировки в явном виде Заблокировать() возник бы эксцепшн). При этом если бы я скажем из какой-либо другой формы конфигурации попытался бы прочитать данные без установки блокировки в последующем если считанные данные были изменены возникло бы исключение, т.к. сработала бы оптимистическая блокировка (проверка версий данных). Верно?

Транзакционная блокировка в автоматическом режиме устанавливается при начале обновления данных и снимается после завершения последней манипуляции с заблокированными данными. Т.е. При открытии скажем той же формы она не устанавливается, а вот при сохранении изменений она устанавливается на период записи данных и снимается после завершения записи. Верно?

И еще, для чего служит параметр "ДЛЯ ИЗМЕНЕНИЯ" в запросе? Вероятно,чтобы установить блокировку на прочитанные данные, но какую? и в какой момент она снимается? Если ставится блокировка на данные в запросе (в примере выше) почему без проблем записываются данные через менеджер записи регистра после выполнения данного запроса?

Заранее благодарен, что поможете разобраться!
Конструкция "ДЛЯ ИЗМЕНЕНИЯ" устанавливает исключительную транзакционную блокировку на прочитанные данные.
Обработка проведения выполняется в любом случае в ОДНОЙ транзакции, даже если вы ее не вызывали явно.
Исключительная блокировка устанавливается на записи в таблице (если есть СУБД, к примеру Microsoft SQL Server, но не PostgreSQL), либо на таблицы в целом (файловый вариант, PostgreSQL). Внутри этой транзакции вы можете читать эти данные, можете писать в эту таблицу. Из другой транзакции данные, на которые распространена конструкция "ДЛЯ ИЗМЕНЕНИЯ" не могут быть ни прочитаны, ни записаны. То есть запись менеджером производится в любом случае в той же транзакции, в которой вы читаете эти данные, поэтому и писать, и читать можете. Транзакционные блокировки не работают для, к примеру, отчетов, которые по умолчанию читают данные в режиме "грязного чтения".
Вообще, конструкция "ДЛЯ ИЗМЕНЕНИЯ" служит для того, чтобы избежать дедлоков при так называемом повышении уровня блокировок.
Читают тему
(гостей: 1)

Быстрый переход