0
Arxangel06
23.07.13
✎
10:29
|
Платформа 8.1.15.14, самописка. Открываю транзакцию, делаю запрос к таблице документов: Запрос = Новый Запрос("ВЫБРАТЬ
| ЗаказПокупателя.Ссылка
|ИЗ
| Документ.ЗаказПокупателя КАК ЗаказПокупателя
|ГДЕ
| ЗаказПокупателя.Ссылка = &Ссылка
|
|ДЛЯ ИЗМЕНЕНИЯ");
Запрос.УстановитьПараметр("Ссылка",Ссылка);
Попытка
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Ссылка = Выборка.Ссылка;
КонецЕсли;
Исключение
Сообщить(ОписаниеОшибки(), СтатусСообщения.ОченьВажное);
Отказ = Истина;
КонецПопытки;
Так вот при запуске трех и более клиентов этот запрос выполняется только в двух из них, остальные пропускают. Пропуск ведет к дэдлокам на более поздних этапах транзакции. Запрос нужен, чтобы приостановить транзакцию в самом начале. Т.е. все клиенты в начале транзакции пытаются заблокировать один и тот же служебный документ, таким образом в любой момент времени активна только одна транзакция, остальные ждут своей очереди. Точнее, должны ждать. SQL Profiler вполне ясно говорит, что запрос не выполняется. Кто сталкивался с подобным? От чего может зависеть такое поведение? Или подскажите другой способ приостановить транзакцию?
|
|