Имя: Пароль:
1C
1С v8
Специалист платформа, вопрос по блокировкам
,
0 AndyTLT63
 
11.09.12
15:57
Готовлюсь к сдаче на специалиста по платформе. Город у нас небольшой так что курсов по спецу нету, все приходиться изучать самому.

Все пока понятно кроме блокировок .

прочитал в интернете что есть 2 варианта, можно использовать любой:

1 вариант
Движения.ОстаткиНоменклатуры.БлокироватьДляИзменения = Истина;
Движения.ОстаткиНоменклатуры.Записать();

2 вариант
Движения.ОстаткиНоменклатуры.Записать();
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить();
ЭлементБлокировки.Область = "РегистрНакопления.ОстаткиНоменклатуры";
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.ИсточникДанных = Движения.ОстаткиНоменклатуры.Выгрузить();
Для Каждого Измерение Из Метаданные.РегистрыНакопления.ОстаткиНоменклатуры.Измерения Цикл
   ЭлементБлокировки.ИспользоватьИзИсточникаДанных(Измерение.Имя, Измерение.Имя);
КонецЦикла;
Блокировка.Заблокировать();


Так в чем же разница между ними кто может объяснить на пальцах, и каковы особенности приминения каждого варианта. В интернете мало информации по этому вопросу, да к тому же часто нахожу противоречивую информацию..
1 golden-pack
 
11.09.12
16:00
А что синтаксис помошник говорит про БлокироватьДляИзменения
2 zladenuw
 
11.09.12
16:01
1 вариант блокировка всей таблицы, 2 ты можем по определенным измерения.
3 zladenuw
 
11.09.12
16:02
и там наглядные примеры.
4 СвинТуз
 
11.09.12
16:02
(2)
пиши еще

блокировать для изменения накладывают специфическую блокировку
5 СвинТуз
 
11.09.12
16:04
Имеет смысл использовать, если проверка итогов регистра выполняется после записи и заблокировать нужно именно те комбинации, по которым записываются записи. В этом случае можно не использовать объект БлокировкаДанных.


чего не ясно?
6 jump if overflow
 
11.09.12
16:05
1 это новая методика сначала пишем потом проверяем на отрицательный остаток.

2 методика сначала считваем остатки, если их  хвтает, то пишем
7 jump if overflow
 
11.09.12
16:06
2 Движения.ОстаткиНоменклатуры.Записать();
ипользуется для того чтобы не читать движения этого документа, в 1-ой  методике это не важно
8 zladenuw
 
11.09.12
16:10
вообще достаточно заглянуть в СП и смотреть и думать. все зависит от задачи и ситуации. когда нужно что использовать
9 jump if overflow
 
11.09.12
16:11
+7
в ут 11 этого нет
10 AndyTLT63
 
11.09.12
16:20
То есть я так понял если мы сначала формируем движения то используем конструкцию
Движения.ОстаткиНоменклатуры.БлокироватьДляИзменения = Истина;
Движения.ОстаткиНоменклатуры.Записать();
А потом формируем запрос


А если нам надо сразу делать запрос к регистру (допустим чтобы подсчитать себестоимость) то используем уже второй вариант

Движения.ОстаткиНоменклатуры.Записать();
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить();
ЭлементБлокировки.Область = "РегистрНакопления.ОстаткиНоменклатуры";
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.ИсточникДанных = Движения.ОстаткиНоменклатуры.Выгрузить();
Для Каждого Измерение Из Метаданные.РегистрыНакопления.ОстаткиНоменклатуры.Измерения Цикл
   ЭлементБлокировки.ИспользоватьИзИсточникаДанных(Измерение.Имя, Измерение.Имя);
КонецЦикла;
Блокировка.Заблокировать();

Я правильно понял?
11 Пип Пибип
 
11.09.12
16:24
пип
12 Vladal
 
11.09.12
16:28
(11) Эт чё? нажми кнопку Закладка и увидишь эту тему в списке.
13 GANR
 
11.09.12
16:37
(0)Варианты различаются по назначению, и, как следствие, они отличатся всем остальным

1. Вариант "БлокироватьДляИзменения" предназначен для блокировки данных когда сначала проводится запись, а потом проверка корректности остатков.

Может быть использован, например, когда нужно просто проверить не возникли ли отрицательные остатки после списания. На практике применим только в "простых" случаях списания.

2. Вариант "БлокировкаДанных", наоборот, предназначен для блокировки данных когда сначала необходима проверка, а потом запись.

При FIFO-LIFO методика из п.1 неприменима, поэтому возникает необходимость блокировать данные перед проверкой, как в п.2.

Всё понятно?
14 AndyTLT63
 
11.09.12
17:00
Да спасибо