Имя: Пароль:
1C
 
УФ Блокировка документа при открытии формы от изменения другим пользователем?
,
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С "из коробки".
Ничего менять не надо.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.