|
Как запретить одновременное выполнение обработки разными пользователями | ☑ | ||
---|---|---|---|---|
0
Drufa
20.04.12
✎
16:45
|
1С 8.1
Как запретить одновременное выполнение обработки разными пользователями? Если я запустил обработку то у другого пользователя при нажатии на кнопку выполнить должно выскочить сообщение о том что эта обработка запущена "Ивановым Иваном Ивановичем" Сохранять данные на время обработки в константу или регистр не вариант. т.к. могут закрыть программу аварийно и тогда вообще никто не сможет запустить эту обработку, пока эту константу или регистр не очистить. |
|||
1
Нуф-Нуф
20.04.12
✎
16:47
|
сделай документ
|
|||
2
Drufa
20.04.12
✎
16:48
|
(1) Для чего?
|
|||
3
Нуф-Нуф
20.04.12
✎
16:48
|
хз. сам еще думаю
|
|||
4
mikecool
20.04.12
✎
16:49
|
(1) +1
|
|||
5
pumbaEO
20.04.12
✎
16:49
|
Блокируй элемент справочника : внешние обработки.
|
|||
6
mikecool
20.04.12
✎
16:49
|
(3) а чо думать - создавать один в день
проверять заблокированность |
|||
7
Ненавижу 1С
гуру
20.04.12
✎
16:49
|
(0) блокировать запросом ДЛЯ ИЗМЕНЕНИЯ, по идеи не прочтут, пока транзакция не окончится
|
|||
8
mikecool
20.04.12
✎
16:50
|
хотя с блокировкой - овно, не факт , что первый нажал Выполнить
задача - тоже овно, не стоит ее делать ))) |
|||
9
NS
20.04.12
✎
16:50
|
Блокировка служебного элемента справочника.
|
|||
10
mikecool
20.04.12
✎
16:50
|
(7) под постгри я не был бы так уверен
|
|||
11
Drufa
20.04.12
✎
16:52
|
Не получилось с методом Заблокировать() например справочника.
И не получилось с запросом ДЛЯ ИЗМЕНЕНИЯ вроде запрос выполняется в транзакции но 2-я сессия все ровно читает объект. |
|||
12
pumbaEO
20.04.12
✎
16:54
|
[Сохранять данные на время обработки в константу или регистр не вариант. ] - ну сделай на обработке "Секретную кнопку" которая будет обходить этот вариант.
|
|||
13
NS
20.04.12
✎
16:54
|
(11) Не понял - два пользователя одновременно могут заблокировать один элемент справочника? Это шутка?
|
|||
14
Stim
20.04.12
✎
16:55
|
можно ЖР читать при открытии обработки. наверное..
|
|||
15
Drufa
20.04.12
✎
16:55
|
13 еще проверяю
Я использовал проверку Заблокирован() он говорит что не заблокирован. Счас пробую по попытке заблокировать повторно другой сессией. |
|||
16
NS
20.04.12
✎
16:56
|
(15) Зачем по попытке?
|
|||
17
mikecool
20.04.12
✎
16:56
|
(15) Заблокировать делай, когда начинает выполняться отчет
|
|||
18
Drufa
20.04.12
✎
17:01
|
Все получилось
Блокировка = Справочники.Блокировки.Выгрузка.ПолучитьОбъект(); Попытка Блокировка.Заблокировать(); Результат = "Зашибись"; Исключение Сообщить(ОписаниеОшибки()); Результат = "Заблокирован"; КонецПопытки; Сообщить(Результат); |
|||
19
Ненавижу 1С
гуру
20.04.12
✎
17:03
|
(11) разве читает? а мне Митичкин говорил, что и прочитать не сможет
|
|||
20
kosts
20.04.12
✎
17:04
|
+ к (18) Переменную Блокировка на уровень модуля вынести
|
|||
21
Drufa
20.04.12
✎
17:04
|
(19) Я думаю в обработке проведения не прочитает.
Но в обработке прочитал. |
|||
22
ssh2006
20.04.12
✎
17:04
|
Или режим управления блокировками - управляемый или не в транзакции запрос
|
|||
23
Argon
20.04.12
✎
17:04
|
аварийный выход снимет блокировку?
|
|||
24
Drufa
20.04.12
✎
17:05
|
(22) Я в обработке начинал транзакцию не помогло.
|
|||
25
Drufa
20.04.12
✎
17:05
|
(23) Должен.
|
|||
26
ssh2006
20.04.12
✎
17:06
|
(22) режим управления блокировками в конф-ии какой?
|
|||
27
NS
20.04.12
✎
17:06
|
(18) У меня обработка загрузки с ФТП была написана так что может глюкнуть только если запустить с двух машин одновременно, на счет раз-два-три (файл после загрузки документа сразу удаляется).
Не поверишь - но начальник ночной смены с оператором именно так и сделали :) Пришлось добавить блокировку на справочнике. С дебилами иначе бороться бесполезно. Надо было их еще и оштрафовать на всякий случай. (24) На справочнике самое то, нет смысла делать иначе. |
|||
28
ssh2006
20.04.12
✎
17:06
|
(26)2(24)
|
|||
29
Конфигуратор1с
20.04.12
✎
17:06
|
(0) в настройки пользователя писать, а при начале работы системы этого пользователя сбрасывать флаг
|
|||
30
NS
20.04.12
✎
17:07
|
(23) Да, снимет.
|
|||
31
Ненавижу 1С
гуру
20.04.12
✎
17:07
|
(21) просто транзакцию надо явно открыть
|
|||
32
Конфигуратор1с
20.04.12
✎
17:07
|
(29)+ естественно вручную настройку не давать менять
|
|||
33
Тим
20.04.12
✎
17:09
|
если не блокировки, то можно попробовать сохранять сведения
о сеансе, запустившем обработку. В случае, когда не почистили данные, делать опрос текущих сеансов, и если он не идентифицирован - снимать лок, т.е. чистить данные, писать свои. |
|||
34
Тим
20.04.12
✎
17:10
|
В прнципе, у запустившего сеанса время начала работы достаточно уникально. Если не найден сеанс под тем же номером
и с тем же временем - можно снимать лок. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |