Имя: Пароль:
1C
1С v8
Ошибка при записи...
,
0 ДенисЧ
 
08.11.13
13:36
Подскажите или напомните, плс...

В регламентном задании в одном вызове создаётся документ, заполняется и обрабатывается.
Потом записывается.

Эпизодически (периодичность и зависимости не выявлены) возникает ошибка:

Ошибка при вызове метода контекста (Записать): Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных (возможно, запись была изменена или удалена)!

С чем это может быть связано?
1 Wobland
 
08.11.13
13:37
оно пытается записать что-то кем-то изменённое
2 Maxus43
 
08.11.13
13:37
с тем что между получением объекта и записью его кто-то изменил и записал
3 Maxus43
 
08.11.13
13:38
блокируй на время изменения/записи объект
4 ДенисЧ
 
08.11.13
13:38
(1) (2) Нет, врядли кто-то успел бы открыть документ. Ибо контекст вызова не меняется. Идёт сразу Создать(), Заполнить(), Обработать(), Записать.

Да, блокировка на документ ставится.
5 Maxus43
 
08.11.13
13:40
>>Да, блокировка на документ ставится.
чудес не бывает, да
6 Wobland
 
08.11.13
13:40
обязательно документ?
7 ДенисЧ
 
08.11.13
13:41
(5) Я тоже так думал.
(6) Что?
8 Wobland
 
08.11.13
13:42
(7) ну ты ж не обязательно меняешь только документ, нам отсюда не видно
9 К_Дач
 
08.11.13
13:42
(7) а каких-нить кривых подписок на события документа нет?
10 ДенисЧ
 
08.11.13
13:43
(9) Кривых - вроде нет, стандартные для ут10...
(8) нет, только документ.
11 К_Дач
 
08.11.13
13:45
(10) а если в базе нет других сеансов пользователей, твое задание выполняется?
12 Maxus43
 
08.11.13
13:46
как блокируешь?
13 ДенисЧ
 
08.11.13
13:48
(12) докОбъект.Заблокировать(Истина)
14 ДенисЧ
 
08.11.13
13:48
(11) Да кто ж его знает, оно и так обычно выполняется. Ошибка возникает иногда.
15 kosts
 
08.11.13
13:52
Вроде где-то проскакивало, что блокировка в 8.2 на самом деле и не блокировка, и запись при блокировке в другом сеансе вполне возможна. Но заблокировать в другом сеансе не удастся. Как-то так...
16 kosts
 
08.11.13
13:55
(15) Не, спутал с Заблокирован()
Описание:
Определяет, заблокирован ли документ данным объектом.
Примечание:
Следует учитывать, что этот метод используется для проверки блокировки объекта базы данных конкретным объектом встроенного языка. Он не может быть использован, чтобы проверить, заблокирован ли вообще объект базы данных.
17 Жан Пердежон
 
08.11.13
13:57
смотри журнал регистрации - возможно гадит другое рег. задание
18 Maxus43
 
08.11.13
13:59
(13) блокируй запросом, ДЛЯ ИЗМЕНЕНИЯ, в транзакции.

Что за Заблокировать? это хрень