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