|
Блокировка записей регистра сведений |
☑ |
0
vovus
04.02.12
✎
21:40
|
Хочется найти определенную строку в регистре и сразу же записать. При этом никто другой данную строку с помощью этой же функции получить не должен. У регистра 2 измерения: Владелец и СтрокаНомер и куча ресурсов.
Народ, подскажите, плиз, правильно ли я накладываю блокировки? И не будет ли каких косяков при исполнении данного кода?
Запрос =
"ВЫБРАТЬ тарам-там-там
|ИЗ
| РегистрСведений.усСтрокиПриемки КАК усСтрокиПриемки
|ГДЕ тарам-там-там
| И усСтрокиПриемки.СтатусВыполнено = &ПустаяДата
|
|ДЛЯ ИЗМЕНЕНИЯ
| РегистрСведений.усСтрокиПриемки";
Запрос.УстановитьПараметр("ПустаяДата",'00010101');
НачатьТранзакцию();
Результат = Запрос.Выполнить();
ТЗ=Результат.Выгрузить();
Если ТЗ.Количество()>1 Тогда
Предупреждение("Найдено более одного владельца для данного штрихода!");
ЗафиксироватьТранзакцию();
Возврат Неопределено;
ИначеЕсли ТЗ.Количество()=1 Тогда
НабЗаписей=РегистрыСведений.усСтрокиПриемки.СоздатьНаборЗаписей();
НабЗаписей.Отбор.Владелец.Установить(ТЗ[0].Владелец);
НабЗаписей.Отбор.СтрокаНомер.Установить(ТЗ[0].СтрокаНомер);
НабЗаписей.Прочитать();
НабЗаписей[0].СтатусВыполнено=ТекущаяДата();
НабЗаписей.Записать();
ЗафиксироватьТранзакцию();
Возврат НабЗаписей;
Иначе
ЗафиксироватьТранзакцию();
тарам-там-там...
КонецЕсли;
|
|
1
aleks-id
04.02.12
✎
21:46
|
странный код. я бы сказал неоднозначный...
лениво все косяки перечислять, но лучше его в топку.
|
|
2
acsent
04.02.12
✎
21:50
|
а где владелец в запросе?
|
|
3
aleks-id
04.02.12
✎
21:51
|
(2) видимо в ГДЕ тарам-там-там
|
|
4
vovus
04.02.12
✎
21:52
|
(3) точно
|
|
5
vovus
04.02.12
✎
21:52
|
(3) без ГДЕ только, он в полях запроса, где просто тарам-там-там
|
|