Имя: Пароль:
1C
 
Как узнать транзакция в текущий момент есть ?
,
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) а записывать можно что угодно по желанию тр...х тб...х :)
Ошибка? Это не ошибка, это системная функция.