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