|
v7: 1SBLOB ошибка транзакции | ☑ | ||
---|---|---|---|---|
0
trinity3187
31.08.15
✎
07:43
|
Всем привет. 1с 7.7 27, ТиС 9.2
Возникает ошибка транзакции: АдресВыгрузки = СокрЛП(Константа.csАдресДляВыгрузкиФайловОбмена8.АдреснаяСтрока); : {Глобальный модуль(20232)}: Таблица: 1SBLOB Ошибка обращения к данным при транзакции, выполняемой другим пользователем. Вопрос: не понимаю, как вообще могла возникнуть эта ошибка? В данной строке кода ничего не сохраняется. Попытался вручную вызвать такую ошибку, написал в тестовой базе: спр = СоздатьОбъект("Справочник.csАдресДляВыгрузкиФайловДляОбменаСБазой8"); спр.НайтиЭлемент(Справочник); СчетчикЦикла = 0; НачатьТранзакцию(); Для СчетчикЦикла = 1 По 10000 Цикл спр.АдреснаяСтрока = СчетчикЦикла; спр.Записать(); КонецЦикла; ЗафиксироватьТранзакцию(); При выполнении этого кода транзакции нет. |
|||
1
DCKiller
31.08.15
✎
07:49
|
Скорей всего, кто-то уже на момент твоего обращения к этой константе заблокировал либо ее саму, либо, скорее всего, какой-то реквизит типа "строка неограниченной длины" в справочнике или документе.
|
|||
2
trinity3187
31.08.15
✎
07:54
|
(1) в этом и вопрос, как можно заблокировать?
Например если начать изменять константу в этот момент её можно прочитать |
|||
3
Смотрящий
31.08.15
✎
07:56
|
(0) В клюшках, константы и периодические значения реквизитов хранятся в одной физической таблице. При чтении либо того либо другого система накладывает на таблицу целиком исключительную блокировку.
У тебя кто то читает периодику, а падает твой код. |
|||
4
trinity3187
31.08.15
✎
08:13
|
(3) как я понимаю вы имеете ввиду таблицу 1SCONST. У меня проблема с 1SBLOB (хранятся реквизиты неограниченной длины), "АдреснаяСтрока" как раз такой реквизит. Я пытаюсь понять как блокируется эта таблица, но "вручную" заблокировать никак не получается, в первом сообщении я привел пример кода.
|
|||
5
DCKiller
31.08.15
✎
08:17
|
(2) Никак. Единственный способ - меняй тип константы, устанавливай ей фиксированную длину строки, тогда то, что там другие юзеры делают с блобом, до тебя не будет касаться.
|
|||
6
trinity3187
31.08.15
✎
08:21
|
(5) ну если юзеры смогли заблокировать, то и я должен смочь) Спасибо за ответы, поменяю тип реквизита
|
|||
7
DCKiller
31.08.15
✎
08:41
|
(6) Юзеры были первыми :) в этом-то и вся фишка.
|
|||
8
trinity3187
31.08.15
✎
08:44
|
(7) эээ, может быть Вы меня неправильно поняли. Я запускаю обработку под одним пользователем. А смотрю заблокированность под другим.
|
|||
9
DCKiller
31.08.15
✎
09:02
|
(8) Ну так обработка блокировку-то пытается установить? Во-от. А другой пользователь эту таблицу в этот момент уже заблокировал. И снять ее программно не получится, т.к. блокировка эта устанавливается на уровне платформы.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |