Имя: Пароль:
1C
 
deadlock и run time error при записи элемента подчиненного справочника
0 diggerr
 
24.09.09
15:12
Здравствуйте! Прошу помочь в решении такой проблемы:
Имеется кусок кода

Спр = СоздатьОбъект("Справочник.МойСправочник");
Спр.ИспользоватьВладельца(ОбъектИзСвязанногоСправочника);
   
   Если Спр.ВыбратьЭлементы() = 0 Тогда
       Спр.Новый();
   Иначе
       Спр.ПолучитьЭлемент();
   КонецЕсли;

//  заполнение значений реквизитов справочника
//  ...

Спр.Записать();

он выполняется периодически в процедуре ожидания, на строке Спр.Записать(); иногда вываливаются deadlocks и в следующем проходе run time error. Это происходит только для элементов которые уже есть в подчиненном справочнике, для вновь созданных таких ошибок не возникает.
суть в том что это единственное место в конфигурации, которое работает с этим справочником. В чем здесь может быть проблема?

релиз 1С 7.7.027 конфигурация доработанная торговля, используется ВК 1С++
1 ТелепатБот
 
гуру
24.09.09
15:12
2 Sadovnikov
 
24.09.09
15:13
(0)
1. А что это вообще за странные действия?
2. Какой именно дидлок происходит?
3 diggerr
 
24.09.09
15:18
(2)
1.Ну тут вообщем проверяется есть ли запись в подчиненном справочнике для данного элемента, если есть модифицируем ее, если нет создаем новую.

2.SQL State: 40001 Native: 1205 Message: [Microsoft][ODBC SQL Server Driver][SQL Server]Transaction (Process ID 78) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
4 Дык ё
 
24.09.09
15:24
(0) попробуй после ПолучитьЭлемент вставить Блокировка(1)
5 Sadovnikov
 
24.09.09
15:26
(3)
1. Да я понимаю, что делает этот кусочек кода :) Я не понимаю - зачем?
2. А точно этот справочник больше нигде не юзается? Как-то это сомнительно...
6 diggerr
 
24.09.09
15:43
(5)
1. ну вкратце это часть процедуры периодического обмена с MySQL сервером, в этом справочнике, подчиненном справочнику номенклатура хранится информация об остатках уже выгруженных на MySQL и при каждом обмене обновляется чтобы несколько раз одно и тоже не выгружать.
2. точно справочник пользует только эта процедура
7 diggerr
 
24.09.09
15:44
(4)
спс, попробую сейчас.
8 Sadovnikov
 
24.09.09
15:45
(6) Дык у тебя п 1 не стыкуется с п 2.
9 diggerr
 
24.09.09
15:49
(8)
Я имел ввиду что больше справочник этот нигде не используется кроме как в этой процедуре в нескольких местах.