Имя: Пароль:
1C
1С v8
Конфликт блокировок. Снова :-)
0 lanc2233
 
27.09.12
14:12
8.2  версия SQL
В цикле такой код :

Запись = РегистрыСведений.ИмяРег.СоздатьМенеджерЗаписи();
Запись.Измерение1 = Значение1;
Запись.Измерение2 = Значение2;
Запись.Прочитать(); //
Запись.Измерение1 = Значение1;
Запись.Измерение2 = Значение2;
Запись.Ресурс1 = Значение3;
Запись.ресурс2 = Значение4;
Запись.Записать();

Через некоторое время возникает конфликт блокировок. Выгнал всех пользователей сделал то-же самое, не поменялось. В чем может быть причина при одном пользователе?
1 trambalda
 
27.09.12
14:15
А строки 2-3 (и возможно 4) они для какой цели присутствуют?
2 lanc2233
 
27.09.12
14:17
Найти запись по определенным значениям измерений, и присвоить ей новые значения ресурсов.
3 НайдуУбъю
 
27.09.12
14:18
можно запопытить запись раз 5
4 lanc2233
 
27.09.12
14:18
Несколько месяцев такая конструкция работала нормально.
5 lanc2233
 
27.09.12
14:19
(3) Забыл сказать, при чтении возникает.
6 Struk
 
27.09.12
14:19
Если Запись.Выбран() Тогда Запись.Ресурс1 = Значение3
7 Struk
 
27.09.12
14:19
режим блокировок какой?
8 trambalda
 
27.09.12
14:20
(2) А зачем, в этом случае строки 5-6?
9 lanc2233
 
27.09.12
14:21
(8) иначе запись будет с пустыми значениями измерений. проверено.
10 rmrush
 
27.09.12
14:23
может так писать?
Запись = РегистрыСведений.ИмяРег.СоздатьМенеджерЗаписи();
Запись.Отбор.Измерение1.Установить(Значение1);
//Запись.Измерение2 = Значение2; и т.д.
Запись.Прочитать(); //

Запись.Измерение1 = Значение1;
Запись.Измерение2 = Значение2;
Запись.Ресурс1 = Значение3;
Запись.ресурс2 = Значение4;
Запись.Записать();
11 Maxus43
 
27.09.12
14:24
Запись = РегистрыСведений.ИмяРег.СоздатьМенеджерЗаписи();
Запись.Измерение1 = Значение1;
Запись.Измерение2 = Значение2;
Запись.Ресурс1 = Значение3;
Запись.ресурс2 = Значение4;
Запись.Записать();
12 НайдуУбъю
 
27.09.12
14:25
Запись = РегистрыСведений.ИмяРег.СоздатьМенеджерЗаписи();
Запись.Измерение1 = Значение1;
Запись.Измерение2 = Значение2;
Запись.Прочитать(); //
Если Запись.Выбран() Тогда
 Запись.Ресурс1 = Значение3;
 Запись.Ресурс2 = Значение4;
 Запись.Записать();
КонецЕсли;

Этого достаточно
13 trambalda
 
27.09.12
14:25
(9) А попробовать через создатьнаборзаписей?
14 zladenuw
 
27.09.12
14:25
а если без прочтения. сразу записывать :)
15 zladenuw
 
27.09.12
14:26
(0) у тебя же нет условий на проверку
16 rmrush
 
27.09.12
14:29
Да, не правильно прочитал первую строку.
нужно не
Запись = РегистрыСведений.ИмяРег.СоздатьМенеджерЗаписи();
А
Запись = РегистрыСведений.ИмяРег.СоздатьНаборЗаписей();
17 zladenuw
 
27.09.12
14:32
sql  какой ?
18 lanc2233
 
27.09.12
14:32
Выяснил что спотыкается на одной и той-же строчке.  Скорее всего надо будет ТИИ сделать.
19 jump if overflow
 
27.09.12
14:34
Запись.Выбран() не важно он хочет перезаписать значения ресурсов или создать новую запись,
там щеще может быть ИндекСкан хрен прочитаешь
20 lanc2233
 
27.09.12
14:36
(17) 2005
21 НайдуУбъю
 
27.09.12
14:38
(18) на какой?
22 zladenuw
 
27.09.12
14:42
23 lanc2233
 
27.09.12
14:43
(21) ничем не примечательная запись. По счету тысяча какая-то.
В цикле сделал на нее исключение, все прошло ок.