|
УФ Блокировка документа при открытии формы от изменения другим пользователем? | ☑ | ||
---|---|---|---|---|
0
spiller26
09.11.15
✎
17:28
|
"управляемый интерфейс"
2 пользователя открыли документа. Кто успел первым внести изменения, того и объект. Как проверять открыт ли документ у другого пользователя или блокировать документ при открытии? |
|||
1
aleks_default
09.11.15
✎
17:31
|
ЗаблокироватьДанныеДляРедактирования
Неужели СП украли? |
|||
2
spiller26
09.11.15
✎
17:34
|
(1) Пробовал через Заблокировать(), но увы.
|
|||
3
spiller26
09.11.15
✎
17:37
|
(1) Не прокатывает
&НаСервере Процедура ПоставитьБлокировкуНаСервере(ДокНовый) Если НЕ ДокНовый Тогда ДокОбъект = ЭтотОбъект.РеквизитФормыВЗначение("Объект"); Если ДокОбъект.Заблокирован() Тогда ТекстСообщения = "Документ заблокирован другим пользователем"; ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,,, "Объект", Истина); Иначе Попытка ЗаблокироватьДанныеДляРедактирования(ДокОбъект); Исключение ТекстСообщения = "Не удалось заблокировать документ"; ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,,, "Объект", Истина); КонецПопытки; КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
4
spiller26
09.11.15
✎
17:37
|
ЗаблокироватьДанныеДляРедактирования(<Ключ>, <ВерсияДанных>, <ИдентификаторФормы>)
<Ключ> (обязательный) Тип: Любая ссылка на объект информационной базы; |
|||
5
Fedor-1971
09.11.15
✎
17:45
|
(0) Уже обсуждалось. Примерно так: делаешь РС, в него пишешь блокировку и при открытии формы проверяешь и сообщаешь Блокирован, при закрытии формы снимаешь блокировку и на случай нештатного закрытия 1С предусматриваешь регламент снятия блокировки, дабы тебя не дёргали снятием оной.
|
|||
6
aleks_default
09.11.15
✎
17:45
|
Там ссылка должна быть, а не объект
|
|||
7
spiller26
09.11.15
✎
17:57
|
(6) И ссылку пробовал тоже, не помогло
Объект.Ссылка |
|||
8
aleks_default
09.11.15
✎
18:00
|
У меня вв нетиповой в БСП стоит подобное, врать не буду не проверял, но если бы это не работало - то в БСП бы эту хрень не добавляли б, наверное.
|
|||
9
spiller26
10.11.15
✎
10:06
|
Нашел решение (ветка зарыта, может кому пригодиться кто наткнется на мой вопрос)
&НаКлиенте Процедура ПриОткрытии(Отказ) ПроверкаНаОткрытиеДокументаДругимПользователем(Отказ); КонецПроцедуры &НаКлиенте Процедура ПроверкаНаОткрытиеДокументаДругимПользователем(Отказ) Экспорт Если ЭтаФорма.ТолькоПросмотр = Ложь Тогда Попытка ЭтаФорма.ЗаблокироватьДанныеФормыДляРедактирования(); Исключение Ошибка = ОписаниеОшибки(); Ошибка = Сред(Ошибка, Найти(Ошибка, "сеанс:") + 7, СтрДлина(Ошибка)); Ошибка = Сред(Ошибка, 1, Найти(Ошибка, ",") - 1); ПользовательСеанса = ПолучитьПользователяСеансаИнформационнойБазы(Число(Ошибка)); ТекстВопроса = "Документ уже открыт " + ?(ПользовательСеанса = "", "другим", "") + " пользователем " + ПользовательСеанса + ". Открыть для просмотра?"; Если Вопрос(ТекстВопроса , РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Нет Тогда Отказ = Истина; Иначе ЭтаФорма.ТолькоПросмотр = Истина; КонецЕсли; КонецПопытки; КонецЕсли; КонецПроцедуры &НаСервере Функция ПолучитьПользователяСеансаИнформационнойБазы(Сеанс) Экспорт Попытка СеансыИнформационнойБазы = ПолучитьСеансыИнформационнойБазы(); Для Каждого СеансИБ Из СеансыИнформационнойБазы Цикл Если СеансИБ.НомерСеанса = Сеанс Тогда Попытка Возврат Строка(СеансИБ.Пользователь.Имя) + " с компьютера " + СеансИБ.ИмяКомпьютера; Исключение КонецПопытки; КонецЕсли; КонецЦикла; Исключение КонецПопытки; Возврат ""; КонецФункции |
|||
10
spiller26
10.11.15
✎
10:07
|
||||
11
Kalevra67
04.12.15
✎
14:20
|
Спасибо, прям то что искал)))
|
|||
12
EugeniaK
04.12.15
✎
14:37
|
(0) Насколько я помню, возможность редактирования только одним пользователем реализована в платформе 1С "из коробки".
Ничего менять не надо. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |