V7.7 Блокировка

  • Автор темы Anatoly1987
  • Дата начала
A

Anatoly1987

#1
Ребята проблема такая. Точнее надо вот что:

Выполняются у меня вычисления (неважно какие, потом после завершения этих вычислений, сразу вводиться и проводиться ряд документов), так вот, что надо сделать чтобы на этот момент никто не смог вмешаться, т.е. сделать блокирование на проведение (мне важно чтобы они немогли только проводить) со стороны других абонентов?
 

puh14

Well-known member
11.07.2008
1 412
0
#2
док.Блокировка(1);

если надо проверить заблокировано ли - док.Блокировка()
 

puh14

Well-known member
11.07.2008
1 412
0
#4
Док = СоздатьОбъект("Документ");
Док.ВыбратьДокументы();
Пока Док.ПолучитьДокумент() = 1 Цикл
Попытка
Док.Блокировка(1);
Исключение
Конецпопытки;
КонецЦикла;
 
A

Anatoly1987

#5
Док = СоздатьОбъект("Документ");
Док.ВыбратьДокументы();
Пока Док.ПолучитьДокумент() = 1 Цикл
Попытка
Док.Блокировка(1);
Исключение
Конецпопытки;
КонецЦикла;
А попроще не получиться никак? Я заметил что:

Док = СоздатьОбъект("Документ");
Док.Блокировка(1);

1с на такое не ругается, правда я не пробовал со стороны других абонентов что происходит.

И потом все документы заблокировал, а если они (другие абоненты) создадут новый (который они создадут после выработки этого алгоритма) и проведение будет доступно получаеться, так?
 

unknown181538

НеГуру
28.12.2008
1 417
0
#6
Может попробовать транзакции?
Вот некоторая инфа. Я так понял, таблицы тех документов которые ты будешь проводить, сами заблокируются.
 

Вложения

vbs

Well-known member
18.02.2007
1 708
1
#7
Не слишком ли это будет долго - блокировать ВСЕ документы в базе ?
Может, лучше управлять транзакцией ?
 
A

Anatoly1987

#8
Может попробовать транзакции?
Вот некоторая инфа. Я так понял, таблицы тех документов которые ты будешь проводить, сами заблокируются.
Да их на момент вычислений и не существует. Потом я сделал так чтобы они были доступны только на просмотр. Да и файлик нельзя ли куда-нить залить? Я не могу скачать. Заранее спасибо.
 

puh14

Well-known member
11.07.2008
1 412
0
#9
а как насчет варианта тупо зайти монопольно? ;-)

я с транзакциями не работал - но походу это самый правильный путь.
 
A

Anatoly1987

#11
Документы которые я проводить буду.

я с транзакциями не работал - но походу это самый правильный путь.
Это должно быть в обыкновенном рабочем режиме!

unknown181538 т.е. мне тепрь надо:

Попытка
НачатьТранзакцию();

........

ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();

КонецПопытки;


Так?