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

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

Anatoly1987

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

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

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

А попроще не получиться никак? Я заметил что:

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

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

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

Вложения

Не слишком ли это будет долго - блокировать ВСЕ документы в базе ?
Может, лучше управлять транзакцией ?
 
Может попробовать транзакции?
Вот некоторая инфа. Я так понял, таблицы тех документов которые ты будешь проводить, сами заблокируются.

Да их на момент вычислений и не существует. Потом я сделал так чтобы они были доступны только на просмотр. Да и файлик нельзя ли куда-нить залить? Я не могу скачать. Заранее спасибо.
 
а как насчет варианта тупо зайти монопольно? ;-)

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

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

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

Это должно быть в обыкновенном рабочем режиме!

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

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

........

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

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


Так?
 
Вроде так. Только я сам не работал с ними)
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab