Имя: Пароль:
1C
1С v8
Ошибка SQL при записи данных в регистр сведений
0 AnisaL
 
11.02.14
14:07
Добрый день!
УТ 10.3, платформа 8.2.18.109. Интегрирована с Астериском для создания звонков. Запущено параллельно 3 сессии 1с под разными пользователями, подключенными к Астериску. В ОбработкаВнешнегоСобытия сработало событие Астериска, которое обрабатывается через функцию, в ней есть запись в регистр сведений, которая выдала ошибку:

{МодульОбычногоПриложения(1829)}: Ошибка при вызове метода контекста (Записать)
по причине:
Конфликт блокировок при выполнении транзакции:
Microsoft SQL Server Native Client 10.0: Транзакция (идентификатор процесса 59) вызвала взаимоблокировку ресурсов блокировка с другим процессом и стала жертвой взаимоблокировки. Запустите транзакцию повторно.
HRESULT=80004005, SQLSrvr: SQLSTATE=40001, state=33, Severity=D, native=1205, line=1
1 AnisaL
 
11.02.14
14:07
(0) вот где выдается ошибка:
    Набор = РегистрыСведений.ВсеВходящиеЗвонки.СоздатьНаборЗаписей();
    Набор.Отбор.Uniqueid.Установить(Uniqueid);
    
    
    НовЗапись = Набор.Добавить();
    НовЗапись.Период = ТекущаяДата();
    НовЗапись.Uniqueid = Uniqueid;
    НовЗапись.CallerIDNum = CallerIDNum;
    НовЗапись.CallerIDName = CallerIDName;
    Набор.Записать();
2 AnisaL
 
11.02.14
14:08
(1) + причем ошибка выдается у одного пользователя, у других не выдается
3 AnisaL
 
11.02.14
14:13
(0) Как обойти эту ошибку? Если одновременно подключенных к Астериску обычно 5 человек
4 МихаилМ
 
11.02.14
14:40
блокируйте перед записью.
5 MrStomak
 
11.02.14
14:45
В этой функции где-то вызывается явная транзакция через НачатьТранзакцию()?
6 AnisaL
 
11.02.14
14:50
(5) нет
7 AnisaL
 
11.02.14
14:52
(4) в этом наборе записей я добавила отбор по периоду, пока не выходит эта ошибка
Набор.Отбор.Период.Установить(ТекущаяДата());
8 MrStomak
 
11.02.14
14:53
(6) Режим блокировок конфы - автоматический, управляемый?
9 AnisaL
 
11.02.14
14:54
(8) а.. где посмотреть?
10 MrStomak
 
11.02.14
14:56
(9) В свойствах конфигурации в метаданных
11 AnisaL
 
11.02.14
14:57
(10) автоматический
12 MrStomak
 
11.02.14
15:11
(11) Я так понимаю, регистр сведений независимый, его лучше писать через МенеджерЗаписи. Это может повлиять на генерируемые платформой запросы при записи, что может снизить блокировки.
Также можно попробовать частично перевести конфигурацию на управляемый режим, задав его для регистра, а для конфигурации выставив "Автоматический и управляемый".
Программист всегда исправляет последнюю ошибку.