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

Тема в разделе "1C и всё что с ней связано", создана пользователем Anatoly1987, 16 май 2009.

  1. Anatoly1987

    Anatoly1987 Гость

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

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

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    док.Блокировка(1);

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

    Anatoly1987 Гость

    Блокировка на проведение всех документов мне надо...
     
  4. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Док = СоздатьОбъект("Документ");
    Док.ВыбратьДокументы();
    Пока Док.ПолучитьДокумент() = 1 Цикл
    Попытка
    Док.Блокировка(1);
    Исключение
    Конецпопытки;
    КонецЦикла;
     
  5. Anatoly1987

    Anatoly1987 Гость

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

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

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

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

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Может попробовать транзакции?
    Вот некоторая инфа. Я так понял, таблицы тех документов которые ты будешь проводить, сами заблокируются.
     

    Вложения:

    • blokirovki.pdf
      Размер файла:
      87,4 КБ
      Просмотров:
      26
  7. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Не слишком ли это будет долго - блокировать ВСЕ документы в базе ?
    Может, лучше управлять транзакцией ?
     
  8. Anatoly1987

    Anatoly1987 Гость

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

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    а как насчет варианта тупо зайти монопольно? ;-)

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

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Кого не существует?
    http://ifolder.ru/12156726
     
  11. Anatoly1987

    Anatoly1987 Гость

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

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

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

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

    ........

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

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


    Так?
     
  12. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Вроде так. Только я сам не работал с ними)
     
  13. Anatoly1987

    Anatoly1987 Гость

    Ну я поработаю. Огромное спасибо.
     
Загрузка...

Поделиться этой страницей