|
ДЛЯ ИЗМЕНЕНИЯ в тексте запроса и Упр.Блокировки | ☑ | ||
---|---|---|---|---|
0
ВПоискахИстины
02.07.13
✎
00:37
|
ДЛЯ ИЗМЕНЕНИЯ в запросе служит для блокировки таблиц в транзакции, но следует ли использовать при этом в транзакции управляемые блокировки? Т.е. блокирует ли сама по себе команда ДЛЯ ИЗМЕНЕНИЯ таблицы? Или же она блокирует в старом варианте когда не было упр.блок, а теперь когда они есть, то уже не надо писать ДЛЯ ИЗМ-Я?
|
|||
1
GROOVY
02.07.13
✎
00:44
|
Конструкция "Для Изменения" работает в автоматическом режиме и накладывает исключительную блокировку на таблицы и пакеты записей выбранных данных из этих таблиц.
|
|||
2
ВПоискахИстины
02.07.13
✎
00:48
|
(1) Спасибо, Павел. А можно ли таким образом заблокировать виртуальную таблицу регистра с указанными параметрами? Т.е. не весь регистр, а часть записей, подобно как управляемой блокировкой в коде в управляемом режиме.
|
|||
3
GROOVY
02.07.13
✎
00:56
|
1. На виртуальную таблицу блокировка не накладывается. Виртуальная таблица есть функция, и ничего более.
2. Блокировка накладывается на пакет записей данные которых были выбраны запросом. К примеру: выбрали Ложки, заблокировался пакет содержащий ложки и в таблице движений и в таблице остатков. Для изменения не предоставляет нам возможности более точного указания области блокировок. |
|||
4
ВПоискахИстины
02.07.13
✎
01:08
|
(3) 2. Можно ли заблокировать только пакет записей содержащий ложки в таблице остатков? Полагаю, что да.
В самой последней строке блокируется только таблица остатков (пример из типовой УТ).. Или нет? ВЫБРАТЬ Док.Дата, Док.Ссылка, Док.ВидОперации, Док.Организация, Док.ОтражатьВРегламентированномУчете, Док.ОтражатьВУправленческомУчете, Док.ПодразделениеКомпании, Док.Контрагент, Док.ДоговорВзаиморасчетов, Док.СкладКомпании, Док.Сделка, Док.Сделка.ВидОперации КАК ВидЗаказаПокупателя, Док.КурсДокумента, Док.КратностьДокумента, Док.ВалютаДокумента, Док.СуммаДокумента, Док.КурсВзаиморасчетов, Док.КратностьВзаиморасчетов, Док.СкладКомпании.Розничный КАК СкладКомпанииРозничный, Док.ДоговорВзаиморасчетов.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов, Док.ДоговорВзаиморасчетов.ВедениеВзаиморасчетов КАК ВедениеВзаиморасчетов, Док.ДоговорВзаиморасчетов.КонтролироватьЧислоДнейЗадолженности КАК КонтролироватьЧислоДнейЗадолженности, Док.ДоговорВзаиморасчетов.ДопустимоеЧислоДнейЗадолженности КАК ДопустимоеЧислоДнейЗадолженности, Док.ДоговорВзаиморасчетов.КонтролироватьСуммуЗадолженности КАК КонтролироватьСуммуЗадолженности, Док.ДоговорВзаиморасчетов.ДопустимаяСуммаЗадолженности КАК ДопустимаяСуммаЗадолженности, Док.ДоговорВзаиморасчетов.ПроцентПредоплаты КАК ПроцентПредоплаты, Док.УчитыватьНДС, Док.УчитыватьНП, Док.СуммаВключаетНДС, Док.СуммаВключаетНП, Константы.ВалютаУправленческогоУчетаКомпании КАК ВалютаУправленческогоУчета, КурсыВалютСрезПоследних.Курс КАК КурсВалютыУпрУчета, КурсыВалютСрезПоследних.Кратность КАК КратностьВалютыУпрУчета, ВзаиморасчетыПоДоговору.СуммаВалОстаток КАК СуммаВалОстатокПоДоговору, ВзаиморасчетыПоСделке.СуммаВалОстаток КАК СуммаВалОстатокПоСделке, ПерваяСделка.ДатаПервойСделки, СуммыЗаказов.СуммаЗаказаОборот, СуммыЗаказов.СуммаОплатыОборот ИЗ Документ.РеализацияТоваров Док, Константы ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаДокумента,) КАК КурсыВалютСрезПоследних ПО Константы.ВалютаУправленческогоУчетаКомпании = КурсыВалютСрезПоследних.Валюта ЛЕВОЕ СОЕДИНЕНИЕ // Для контроля суммы задолженности по договору // (ведение взаиморасчетов - любое) и числа дней задолженности по договору // (ведение взаиморасчетов - по расчетным документам) РегистрНакопления.КонтрагентыВзаиморасчетыКомпании.Остатки(, ДоговорВзаиморасчетов = &ДоговорВзаиморасчетов) КАК ВзаиморасчетыПоДоговору ПО Истина ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ // Выбирает даты самых ранних сделок по договорам, указанным в т.ч. МИНИМУМ(Сделка.Дата) КАК ДатаПервойСделки, ДоговорВзаиморасчетов ИЗ РегистрНакопления.КонтрагентыВзаиморасчетыКомпании.Остатки(, ДоговорВзаиморасчетов = &ДоговорВзаиморасчетов) ГДЕ СуммаВалОстаток > 0 // Дебиторская задолженность больше 0 И ДоговорВзаиморасчетов.ВедениеВзаиморасчетов = &ПоРасчетнымДокументам И ДоговорВзаиморасчетов.КонтролироватьЧислоДнейЗадолженности СГРУППИРОВАТЬ ПО ДоговорВзаиморасчетов) КАК ПерваяСделка ПО Истина ЛЕВОЕ СОЕДИНЕНИЕ // Для контроля суммы задолженности по расчетному документу //(ведение взаиморасчетов - по расчетным документам) РегистрНакопления.КонтрагентыВзаиморасчетыКомпании.Остатки(, ДоговорВзаиморасчетов = &ДоговорВзаиморасчетов И Сделка = &Сделка ) КАК ВзаиморасчетыПоСделке ПО Истина ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СуммыЗаказов.Обороты(,,, Заказ = &Сделка) КАК СуммыЗаказов ПО Истина ГДЕ Док.Ссылка = &ДокументСсылка ДЛЯ ИЗМЕНЕНИЯ РегистрНакопления.КонтрагентыВзаиморасчетыКомпании.Остатки |
|||
5
GROOVY
02.07.13
✎
01:13
|
(4) ЙогуртБезДаты! Вот это запрос...
Только остатки - нет (а как?). Установится исключительная блокировка на итоги и на движения. |
|||
6
ВПоискахИстины
02.07.13
✎
01:24
|
(5) Гм, а ведь точно. Спасибо, теперь стало понятно:)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |