Имя: Пароль:
1C
1С v8
Оптимистическая блокировка
,
0 Широкий
 
30.03.12
15:14
Пытаюсь избавиться от ошибки "Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы бла-бла".
Устраивает вариант: кто последний - тот и папа.
Можно ли сие отключить?
1 Greeen
 
30.03.12
15:21
У меня в конфе было
Док.ОбменДанными.Загрузка = Истина
Док.Записать(блаблабла) - тут облом был при проведении документа, и соотв. документ нельзя было сохранить без закрытия
Док.ОбменДанными.Загрузка = Ложь

Как почетный быдлокодер, закоментил нафиг ОбменДанными.Загрузка, больше не жалуются
2 Stepa86
 
30.03.12
15:32
Наверно все же лучше разобраться, кто меняет запись в базе, пока идет работа с объектом
3 Широкий
 
30.03.12
15:40
(1) ОбменДанными на это не влияет
(2) Обработка меняет
4 Stepa86
 
30.03.12
15:44
(3) Пользователь открыл форму, чо то там меняет, в это время обработка в другом сеансе меняет данные этого объекта и при попытке записать пользователю падает ошибка. Так?
5 Широкий
 
30.03.12
15:45
(4) Так
6 Stepa86
 
30.03.12
15:49
есть подозрение, что нужно юзать ЗаблокироватьДанныеДляРедактирования( в форме
7 Широкий
 
30.03.12
15:50
(6) Не прокатит.. 8.1
8 Stepa86
 
30.03.12
15:58
Чот в голову приходит тока изврат вида:

попробовать записать объект, если выпадает ошибка несоответствия, то сбросить данные куда нить, прочитать объект, заполнить взад данными и записать...
9 Широкий
 
30.03.12
16:16
(8) Это тоже приходило в голову
10 Murzz
 
30.03.12
16:20
(7) ну тогда метод "Заблокировать" объекта документа
11 Широкий
 
30.03.12
16:39
(10) Он блокирует вроде в рамках сеанса одного юзера
12 Stepa86
 
30.03.12
16:43
(11) он полностью блокирует, то есть в другом сеансе при попытке заблокировать будет вызвано исключение, но схему "кто последний тот и папа" так не реализовать
13 Широкий
 
05.04.12
10:54
Придумал вот что :)).
Может кому пригодится

Процедура ПередЗаписью(Отказ)
   Если ЭтоНовый() Тогда
       Возврат;
   КонецЕсли;
   
   СтруктураШапки=Новый Структура;
   Для Каждого РеквизитМ Из Метаданные().Реквизиты Цикл
       ИмяРеквизита=РеквизитМ.Имя;
       Если ИмяРеквизита="Код" Тогда
           Продолжить;
       КонецЕсли;
       
       СтруктураШапки.Вставить(ИмяРеквизита,ЭтотОбъект[ИмяРеквизита]);
   КонецЦикла;
   
   СтруктураТаблицы=Образы.Выгрузить();
   
   Прочитать();
   
   ЗаполнитьЗначенияСвойств(ЭтотОбъект,СтруктураШапки);
   Образы.Загрузить(СтруктураТаблицы);
КонецПроцедуры
14 Дикообразко
 
05.04.12
10:56
и в итоге ты потеряешь предыдущие изменения
15 Широкий
 
05.04.12
10:59
(14)
в (0) "Устраивает вариант: кто последний - тот и папа. "