Доброе утро господа айтишники. Проблема с методом Блокировка.
Суть такая: есть документ, содержащий данные. К данному документу организовал программный доступ (через НайтиДокумент(ИскомыйДок);) и изменяю в нем данные. Соответственно записываю и провожу. К данному документу может стучаться несколько пользователей одновременно. И вот здесь возникает проблемка несовпадения данных. С помощью Google и желтых книжек был найден метод Блокировка(). И вроде бы все расписано в нем: что возвращает, какие параметры устанавливать, всеравно конечного результата не добился. Для проверки работоспособности наваял обработку с методами и при помощи двух созданных пользователей пытаюсь протестить работу метода.
Процедура ПроверитьБлокировку()
Перем СтатусБлокировки;
Док = СоздатьОбъект("Документ.ТестДок");
Док.НайтиДокумент(ВыбДок);
СтатусБлокировки = Док.Блокировка();
Если СтатусБлокировки = 1 Тогда
Сообщить("Блокировка включена");
Иначе
Сообщить("Блокировка отключена");
КонецЕсли;
КонецПроцедуры
Процедура УстановитьБлокировку()
Док = СоздатьОбъект("Документ.ТестДок");
Док.НайтиДокумент(ВыбДок);
Док.Блокировка(1);
Док.Записать();
КонецПроцедуры
Процедура СнятьБлокировку()
Док = СоздатьОбъект("Документ.ТестДок");
Док.НайтиДокумент(ВыбДок);
Док.Блокировка(0);
Док.Записать();
КонецПроцедуры
Не уверен, но не может быть проблема в "Док.Записать()"? Заблокировали - Записали - Блокировка сбросилась. Попробуйте сделать как в этой теме: https://forum.infostart.ru/forum9/topic106781/
тут смысл такой.
- если ты попробовал поставить блокировку и она сработала - то 1. документ либо не заблокирован либо 2. ты в той же сессии где проведена ранее блокировка (блокированный документ в твоей же сессии считается доступным для тебя)
- снять блокировку можно только в той сессии где поставил.
.
Поэтому - получил программно документ и ставь блокировку. Отказ в блокировке - отлуп/стоп программной работы с документом. Сделал блокировку - работй с документом, после окончания работы - сняими блокировку (тупо без всяких проверок)
Решение найдено. Как всегда все оказалось банально. Переменная для объявления документа должна быть описана в модуле документа как глобальная. Объект создается сразу же после открытия формы документа. Далее просто работаем с созданным объектом, без повторного создания в процедурах.