|
Как узнать транзакция в текущий момент есть ? | ☑ | ||
---|---|---|---|---|
0
DolpXin
04.06.08
✎
15:02
|
Как узнать транзакция в текущий момент есть ? может есть какая нибудь функция которая возвращает какой нибудь флажок ?
|
|||
1
ShoGUN
04.06.08
✎
15:05
|
(0) Неужто всё так запутано, что это нельзя выяснить по коду?
|
|||
2
Лефмихалыч
04.06.08
✎
15:06
|
штатно - нет. Можно каким-нить хитровыпученым прямым SQL запросом наверное.
Но подумай сначала, о какой именно транзакции ты хочешь узнать. И зачем? |
|||
3
IronDemon
04.06.08
✎
15:06
|
Нет такой функции в 1С
|
|||
4
Леха Дум
04.06.08
✎
15:08
|
(0) Необходимо использовать объект "Тело" и один из методов этого объекта "ПрямыеРуки(Уровень)" с параметром в виде системного перечисления "Пришиты.Правильно"
|
|||
5
Леха Дум
04.06.08
✎
15:11
|
+(4) - объявляется конкурс на разработку дополнительных методов и свойств для бурноразвивающегося объекта "Тело", сделаем жизнь прекраснее!
|
|||
6
Кураж
04.06.08
✎
15:15
|
Все дятлы в ветке отметились? Можно отвечать?...
|
|||
7
Леха Дум
04.06.08
✎
15:16
|
(6) клюв проапргейдил?
|
|||
8
Лефмихалыч
04.06.08
✎
15:17
|
(5) с этим сюда v8: Как узнать - Четное число или нет?
(6) просвети нас, о великий! |
|||
9
iSeRG
04.06.08
✎
15:17
|
ТранзакцияАктивна() только у меня есть?
|
|||
10
Леха Дум
04.06.08
✎
15:18
|
(8) ща перлу закатаю!
|
|||
11
Кураж
04.06.08
✎
15:18
|
Вот исключительно по просьбе (8):
Глобальный контекст ТранзакцияАктивна (TransactionActive) Синтаксис: ТранзакцияАктивна() Возвращаемое значение: Тип: Булево. Истина - в системе имеется активная транзакция, Ложь - в текущий момент в системе не имеется активных транзакций. Описание: Получить текущее состояние транзакции. |
|||
12
Dziden2
04.06.08
✎
15:18
|
(0) если проигнорировать транзакции до 1 сек. тогда можно через выполнение регламентных заданий на сервере сделать два запроса с разницей в 1 секунду типа:
пр Запрос1(Таблица) об = Таблица.ПолучитьОбъект(); об.ТранзакцияЗавершена = истина; об.Записать() кпр пр Запрос2(Таблица) Запрос("ВЫБРАТЬ ТранзакцияЗавершена ИЗ Таблица ГДЕ ТранзакцияЗавершена = истина" ); Возврат запрос.выполнить.Выбрать.Следующий(); кпр |
|||
13
Dziden2
04.06.08
✎
15:18
|
(11) вот блин =)
|
|||
14
Лефмихалыч
04.06.08
✎
15:19
|
(11) вах!
/me посыпает голову пеплом |
|||
15
Леха Дум
04.06.08
✎
15:21
|
(11) не забываем указывать что это появилось в 8.1 :)
|
|||
16
IronDemon
04.06.08
✎
15:22
|
ТранзакцияАктивна() работает в локальном контексте. Она позволяет определить текущее состояние начатой транзакции.
|
|||
17
DolpXin
04.06.08
✎
15:23
|
(11) (12) огромное спасибо !
|
|||
18
IronDemon
04.06.08
✎
15:23
|
А (0) нужно, судя по тексту, все транзакции(блокировки)
|
|||
19
Dziden2
04.06.08
✎
15:26
|
(16) значит мой метод подойдет =)
А вообще я думаю в СКЛ есть стандартные функции определения блокировок таблиц. |
|||
20
iSeRG
04.06.08
✎
15:26
|
(18) судя по (18) нет
|
|||
21
iSeRG
04.06.08
✎
15:27
|
т.е. судя по (17)
|
|||
22
Лефмихалыч
04.06.08
✎
15:28
|
(16) а! Ну, да! Ведь НачатьТранзакцию() увеличивает счетчик транзакций, но не обязательно по факту начинает транзакцию.
Отставить посыпать голову пеплом! :) |
|||
23
Dziden2
04.06.08
✎
15:30
|
(20) если локальный контекст, то программист и так понимает, что данный код в транзакции, это видно для рекурсии разве что какойнибудь сделано.
|
|||
24
IronDemon
04.06.08
✎
15:30
|
(19) А вдруг у автора файловая?
|
|||
25
Dziden2
04.06.08
✎
15:33
|
(24) эээ, ну тогда конечно лучше застрелиться, но если теоретически предположить, то можно сделать двумя клиентами через механизм того же регламентого задания с выделенным клиентмо или с помощью Задач =))
|
|||
26
Леха Дум
04.06.08
✎
15:34
|
(0) автор, не напрягай людей вариантами, опиши для чего это тебе нужно и возможно будет помощь качественней :)
|
|||
27
iSeRG
04.06.08
✎
15:35
|
(23) а какое ему дело до транзакций вне локального контекста?
|
|||
28
Dziden2
04.06.08
✎
15:36
|
(26) афтар свалил уж, остались только программеры которым на работе делать нефиг а баш.орг порезан файрволом.
|
|||
29
AndreYAN
04.06.08
✎
15:37
|
(28) ну не обязательно пореза, уже просто перечитан :)
|
|||
30
Qvz
04.06.08
✎
15:37
|
(18)(24)
Понятие транзакции для того и существует, чтобы согздать у клиента видимость его монопольной работы с БД. Поэтому информация о том есть ли сейчас у какого-либо клиента БД открытая транзакция противоречит принципам обработки данных СУБД. И если у вас возникает такая необходимость - пересматривайте архитектуру вашей системы. Речь не идет о монопольном доступе в БД. Поэтому понятие активной транзакции есть только внутри сессии. |
|||
31
Леха Дум
04.06.08
✎
15:37
|
(28) верхние строки баша:
1)(15:38:15 2/06/2008) так что ты целый день на работе делаешь? 2) (15:39:28 2/06/2008) рисую разноцветными фламастерами, делаю фигурки из пластелина, кушаю, и играю с остальными программистами.. |
|||
32
Лефмихалыч
04.06.08
✎
15:37
|
(27) например вот:
Если ТранзакцийНетЗаПределамиЛокальногоКонтекста() Тогда Предупреждение("Ни кто не работает, можно сокращать штат!"); |
|||
33
IronDemon
04.06.08
✎
15:37
|
Если SQL, то перебираешь текущие соединяя и смотришь "QtyLock"
Или: Блокировка (IObjectLock) Свойства: Connection (Connection) LockDescr (LockDescr) LockedAt (LockedAt) Object (Object) Описание: Объекты содержат информацию обо всех блокировках, хранимых в реестре информационных баз. Среди них: блокировки объектов базы данных; блокировки информационных баз клиентскими приложениями, другие блокировки. Представляет собой объект с интерфейсом IObjectLock. |
|||
34
Dziden2
04.06.08
✎
15:38
|
(27) я бы такую функцию хотел бы только в случае, например, разделения часто используемых таблиц на две и если в одной таблице транзация то работаем со второй и т.д. а потом в запросах соединять эти две таблицы.
|
|||
35
AndreYAN
04.06.08
✎
15:38
|
(30) как всех на корню обломал :(
|
|||
36
iSeRG
04.06.08
✎
15:44
|
(37) а если полштата сидят отчеты формирует? ;)
|
|||
37
iSeRG
04.06.08
✎
15:46
|
(34) "если в одной таблице транзакция"? Транзакция это тебе не блокировки
|
|||
38
Dziden2
04.06.08
✎
15:46
|
(30) Почему обламал, все нормально, 1с пока далека от идеала масштабируемости, поэтому обсуждаем дальше ...
|
|||
39
Dziden2
04.06.08
✎
15:49
|
(37) ??? Транзакция не бывает без блокировок, бывают только разные уровни изоляции этих блокировок.
|
|||
40
AndreYAN
04.06.08
✎
15:50
|
Была идея вааше супер, меньше проблем. Создаем в сети файл с общим доступом к нему, туда записываем документы которые сейчас находятся на проведении, после проведения ссылку на документ удаляем, ну соответственно и считываем инфу из этого файла есть транзакция или нету её.
|
|||
41
Лефмихалыч
04.06.08
✎
15:53
|
(40) долго думал?
|
|||
42
iSeRG
04.06.08
✎
15:53
|
(39) уровни изоляции транзакций, а не блокировок.
Что ты имел ввиду под "если в одной таблице транзакция" ? |
|||
43
AndreYAN
04.06.08
✎
15:56
|
(41) нет, а что надо было долго думать?
|
|||
44
Лефмихалыч
04.06.08
✎
15:57
|
(43) ну, вообще иногда полезно
|
|||
45
Леха Дум
04.06.08
✎
15:58
|
(43) особенно для числа пользователей больше 10. Да чего там документы на проведении, давай мыслить шире - писать в этот файл все апчхи пользователей...
|
|||
46
AndreYAN
04.06.08
✎
15:58
|
(44) ты только в своем отделе это не применяй, у моего отдела на это патент :)
|
|||
47
Лефмихалыч
04.06.08
✎
16:00
|
(46) да поздняк метаться, я уже подавана отправил на рынок твою идею продавать
|
|||
48
AndreYAN
04.06.08
✎
16:00
|
(40) это альтернатива запроса к базе SQL (45) а записывать можно что угодно по желанию тр...х тб...х :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |