![]() |
|
Конфликт блокировок при записи документа | ☑ | ||
---|---|---|---|---|
0
kupreeff
15.05.15
✎
09:44
|
Имеется обработка, в которой создаются документы.
В момент работы обработки, в базе работают пользователи. Они работают с данным видом документа, но пересечений по объектам нет (т.е. пользователь не открывает те документы, которые участвуют в обработке). Обработка спотыкается при записи документа и выдает сообщение: Конфликт блокировок при выполнении транзакции. Можно ли это как-то обойти, чтобы обработка при записи документа ожидала, пока освободится блокируемая таблица? |
|||
1
ИС-2
naïve
15.05.15
✎
09:52
|
если sql, то можно увеличить время ожидания блокировки на сервере (к админам). Но где-то в самой 1c видел такую настройку
|
|||
2
kupreeff
15.05.15
✎
10:19
|
(1) не sql
|
|||
3
Cyberhawk
15.05.15
✎
10:20
|
(0) "обойти, чтобы обработка при записи документа ожидала" она и ожидает, 20 секунд по умолчанию
|
|||
4
Cyberhawk
15.05.15
✎
10:21
|
Метод объекта Заблокировать() в попытке даст тебе пищу для размышлений
|
|||
5
H A D G E H O G s
15.05.15
✎
10:22
|
(2) Никак. На файловой блокируется вся таблица документа - только проводить в цикле, в попытке "попасть" в промежуток, когда никто другой не проводит.
|
|||
6
H A D G E H O G s
15.05.15
✎
10:22
|
(4) Не даст.
|
|||
7
H A D G E H O G s
15.05.15
✎
10:23
|
(1) Администрирование->Параметры ИБ в конфигураторе
|
|||
8
kupreeff
15.05.15
✎
10:24
|
(4)Заблокировать() блокирует целиком таблицу?
|
|||
9
ИС-2
naïve
15.05.15
✎
10:25
|
(2) можно в наглую заблокировать всю таблицу, но тогда у пользователей будут блокировки
|
|||
10
H A D G E H O G s
15.05.15
✎
10:26
|
(8) нет.
(9) Это, если ему дадут это сделать. |
|||
11
kupreeff
15.05.15
✎
10:29
|
(9) можно и в наглую. а как? прости за наглость :)
|
|||
12
Serg_1960
15.05.15
✎
10:29
|
(0) Если записать но не проводить - то Объект.ОбменДанными.Запись() - даже коврик из под ног юзвера выдергивает :)
|
|||
13
H A D G E H O G s
15.05.15
✎
10:30
|
(12) То есть?
|
|||
14
kupreeff
15.05.15
✎
10:31
|
(7) есть такое дело! что там лупануть, чтобы ни себя не людей не обидеть? Сейчас там 20 сек. Неужто этого мало? А может дело в том, что документы эти открыты в момент записи моего документа?
|
|||
15
Serg_1960
15.05.15
✎
10:31
|
Тьфу, не Запись - Загрузка = Истина. Оговорился. Тяпница :)
|
|||
16
H A D G E H O G s
15.05.15
✎
10:32
|
(15) И какой эффект это производит?
|
|||
17
kupreeff
15.05.15
✎
10:32
|
(12) я не провожу, я их записываю. А не поленишься еще раз другими словами написать? Спасибо.(В 8-ке туп я, как вы поняли)
|
|||
18
H A D G E H O G s
15.05.15
✎
10:33
|
(14) Нет. Тебе мешают только проводящиеся документы. Вообще, там у вас у всех должны быть конфликты блокировок.
|
|||
19
kupreeff
15.05.15
✎
10:36
|
(18) сказть им, чтоб пока я тут мудохаюсь, не проводили этот документ?
|
|||
20
H A D G E H O G s
15.05.15
✎
10:36
|
Даже если ты записываешь - могут блокироваться индексы документа, сомневаюсь что в файловой поддерживается блокировка части индекса, как в sql.
Переходи на sql. |
|||
21
H A D G E H O G s
15.05.15
✎
10:37
|
Сколько пользователей в базе?
|
|||
22
kupreeff
15.05.15
✎
10:38
|
(21) да это обработка на один раз, переношу из другой программы данные.
|
|||
23
Serg_1960
15.05.15
✎
10:42
|
(17) Это старый баян. Отключаются проверки и запись будет выполнена даже если этот документ открыт у какого-либо юзвера - он получит ошибку типа "Операция не может быть выполнена из-за несоответствия версии..."
ОбъектДокумент.ОбменДанными.Загрузка = Истина; ОбъектДокумент.Записать(); |
|||
24
H A D G E H O G s
15.05.15
✎
10:43
|
(23) Ясно.
|
|||
25
Альбатрос
15.05.15
✎
10:44
|
(23) куясе...
|
|||
26
Serg_1960
15.05.15
✎
10:45
|
(24) Это в ответ на "А может дело в том, что документы эти открыты в момент записи моего документа?"(14)
|
|||
27
ИС-2
naïve
15.05.15
✎
10:59
|
(11) хороший вопрос. Например, выбрать в запросе 1 документ с блокировкой таблиц (см. закладку Дополнительно, галка Блокировать таблицы для изменения). Не - как тогда самому писать.
Задаю вопрос. Как можно заблокировать таблицу документов для всех пользователей, кроме себя? |
|||
28
H A D G E H O G s
15.05.15
✎
11:09
|
(27) В файловой ИБ это делается так:
НачатьТранзакцию(); Запрос=Новый Запрос; Запрос.текст= "Выбрать Первые 1 Из Документ.ПКО"; Запрос.Выполнить(); ........ |
|||
29
Serg_1960
15.05.15
✎
11:33
|
"Блокировка = Новый БлокировкаДанных;" спачет отца русской демократии? :)
Имхо, в файловой версии блокировки на уровне таблиц и любое блокирование любой записи = блокирование всей таблицы записей. |
|||
30
H A D G E H O G s
15.05.15
✎
11:34
|
(29) нет.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |