8.х 1C8.1 Блокировки документов

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем saksaul, 27 апр 2010.

  1. TopicStarter Overlay
    saksaul
    Offline

    saksaul

    Регистрация:
    27 апр 2010
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    ОС: Win2003 SP1
    Платформа: 1С:Предприятие 8.1 (8.1.14.72)
    Конфигурация: "Управление торговлей", редакция 10.3 (10.3.8.9)
    Тип: файловая

    ==================
    Проблема:
    Не отрабатывают блокировки ресурсов. Везде в свойствах параметр управления блокировками равен "Автоматически".

    Пример:
    1. Пользователь А открывает документ и Пользователь Б открывает тот же самый документ не получая никаких сообщений о том что он уже открыт другим пользователем. Далее, Пользователь Б может поменять например реквизит Номеклатура в табличной части документа и спокойно провести и закрыть документ не смотря на то что его открыл вторым. Разумеется после этого Пользователь А при попытке записать свою версию редактирования получает сообщение о том что его "версия устарела" (и это правильно).
    2. Оба пользователя закрывают документ.
    3. Повторяем открывание того же документа в том же порядке: сначала Пользователь А, потом Пользователь Б. И теперь при попытке редактирования любого реквизита документа Пользователь Б получает уведомление о блокировке документа.

    Т.е. блокировка отрабатывает как-то "через раз".
    Подскажите сталкивался кто с такой проблемой или нет. И как можно решить данный вопрос чтобы пользователь открывший документ вторым всегда знал что он уже используется другим человеком.
  2. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.400
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!
    Документ может быть открыт для двух целей:
    1. Просмотр.
    2. Редактирование.
    Фактически блокировка записей данных документа происходит в момент редактирования документа. Т.е. могут открыть документ 3 пользователя, но сам документ не заблакирован для изменений до тех пор, пока кто-либо не начал вносить изменения, на этом этапе записи базы данных, относящиеся к данному документу блокируются до завершения операции записи документа.
  3. TopicStarter Overlay
    saksaul
    Offline

    saksaul

    Регистрация:
    27 апр 2010
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Я все это прекрасно понимаю, НО ситуация такова что в базе пользователи открывают один и тот же документ и начинаю производить его изменения одновременно, и уже когда внесут в него по 50 -100 позиций номенклатуры и жмут кнопочку Запись/Проведение/ОК, узнают что документ заблокирован и весь их труд не сохраниться.

    Как в таком случае оповестить пользователя заранее что этот документ уже кем-то открыт на редактирование?
  4. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.400
    Симпатии:
    40
    Баллы:
    54
    Код:
    ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
    Заблокирован (IsLocked)
    Синтаксис:
    Заблокирован() 
    Возвращаемое значение:
    Тип: Булево. Истина - документ заблокирован; Ложь - в противном случае. 
    Описание:
    Определяет, заблокирован ли документ данным объектом. 
    Примечание:
    Следует учитывать, что этот метод используется для проверки блокировки объекта базы данных конкретным объектом встроенного языка. Он не может быть использован, чтобы проверить, заблокирован ли вообще объект базы данных. 
    Пример:
    Если РасходнаяНакладная.Заблокирован() Тогда
    РасходнаяНакладная.Разблокировать();
    КонецЕсли;
    
    
    
    В Вашем случае

    Код:
    Процедура ПриОткрытии()
    //...
    Если ЭтотОбъект.Заблокирован() Тогда
    Сообщить("Документ " + ЭтотОбъект.Ссылка + "заблокирован. Документ будет доступен только для просмотра");
    ЭтаФорма.ТолькоПросмотр = Истина;
    КонецЕсли;
    //...
    КонецПроцедуры;
    
    
  5. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Это вообще задача организация процесса работы, Почему 2-3 пользователя работают с одним документом что каждому пользователю по документу нельзя сделать?
  6. TopicStarter Overlay
    saksaul
    Offline

    saksaul

    Регистрация:
    27 апр 2010
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Сейчас попробую указанный код. А что касается организации работы, то это блин не получиться - специфика такая.
  7. TopicStarter Overlay
    saksaul
    Offline

    saksaul

    Регистрация:
    27 апр 2010
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Вставил код:
    Код:
    	Если ЭтотОбъект.Заблокирован() Тогда
    Сообщить("Документ " + ЭтотОбъект.Ссылка + "заблокирован. Документ будет доступен только для                 просмотра");
    ЭтаФорма.ТолькоПросмотр = Истина;
    Иначе
    Сообщить("Документ не блокирован");
    Попытка
    ЭтотОбъект.Заблокировать();
    Сообщить("Мы это сделали!");
    Исключение
    Сообщить("Не получилось :(");
    КонецПопытки;
    КонецЕсли;
    
    
    Получается у первого пользователя при входе в документ выходит сообщение: "Документ не блокирован","Мы это сделали!"
    У второго параллельно входящего в документ: "Документ не блокирован","Не получилось :("
    Т.е. для всех пользователей документ свободен для редактирования. :unsure:
  8. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Вы внимательно читали Описание там написанно

    А Кто у нас Данный Объект?
Похожие темы
  1. Aleks
    Ответов:
    8
    Просмотров:
    1.783
  2. Stack_G
    Ответов:
    3
    Просмотров:
    520
  3. comol
    Ответов:
    5
    Просмотров:
    2.686
  4. djekting
    Ответов:
    7
    Просмотров:
    431
Загрузка...

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