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