Бухгалтерский учет, налогообложение, отчетность, МСФО, анализ бухгалтерской информации, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[Прочее]

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

newbie2010
читатель
офлайн
Дата регистрации: 17.11.2009
Сообщений: 15
Пост №1
 
17.02.2010 22:46

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

Кстати, какой сейчас по умолчанию в платформе используется тип блокировок (пессимистическая или оптимистичная)? В документации есть их описание, но в каких случаях какая применяется что-то не нашел.
"

EAX88
читатель
офлайн
Дата регистрации: 23.06.2008
Сообщений: 159
Пост №2
 
18.02.2010 09:07

Не надо путать объектные и транзакционные блокировки, пессимистическая и оптимистичная блокировки относятся к объектным и используются обе 1С. А то что вы имеете ввиду это транзакционные блокировки которые бывают автоматическими и управляемыми, по умолчанию автоматические. Подробнее о блокировках можно почитать в книге "1С предприятие от 8.0 к 8.1"

newbie2010
читатель
офлайн
Дата регистрации: 17.11.2009
Сообщений: 15
Пост №3
 
19.02.2010 09:27

Прочел главу про блокировки. В первом приближении разобрался. Несколько вопросов на понимание, если позволите:

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

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

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

Заранее благодарен, что поможете разобраться!

cherserver
читатель
офлайн
Дата регистрации: 06.04.2010
Сообщений: 1
Пост №4
 
06.04.2010 15:31

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

Показывать по 10 20 40 сообщений

Читают тему:

1 гостей
Быстрый переход
Для технических специалистов
  • Учет, налогообложение, автоматизация
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • ЕГАИС
Предложения партнеров
Обучение пользователей продуктов 1С

1С бесплатно 1С-Отчетность 1С:ERP Управление предприятием 1С:Бесплатно 1С:Бухгалтерия 8 1С:Бухгалтерия 8 КОРП 1С:Бухгалтерия автономного учреждения 1С:Бухгалтерия государственного учреждения 1С:Бюджет муниципального образования 1С:Бюджет поселения 1С:Вещевое довольствие 1С:Деньги 1С:Документооборот 1С:Зарплата и кадры бюджетного учреждения 1С:Зарплата и кадры государственного учреждения 1С:Зарплата и управление персоналом 1С:Зарплата и управление персоналом КОРП 1С:Комплексная автоматизация 8 1С:Лекторий 1С:Предприятие 1С:Предприятие 7.7 1С:Предприятие 8 1С:Розница 1С:Управление нашей фирмой 1С:Управление производственным предприятием 1С:Управление торговлей 1СПредприятие 8

Все теги