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