|   |   | 
| 
 | Диалог "Не удалось начать редактирование" для самописного документа | ☑ | ||
|---|---|---|---|---|
| 0
    
        trewikz naïve 08.10.24✎ 13:04 | 
        Всех приветствую. 
 Появилась нужда ограничить совместную работу с новым документом. Как внедрить типовой функционал по ограничению? Пробовал методы: .Заблокировать(); .ЗаблокироватьДанныеДляРедактирования(Параметры.Ключ); .ЗаблокироватьДанныеФормыДляРедактирования(); Пробовал в следующих обработчиках: ПриОткрытии() ПриСозданииНаСервере() Нужного результата не добился. | |||
| 1
    
        saaken 08.10.24✎ 15:46 | 
        А откуда есть уверенность, что можно совместно редактировать документ     | |||
| 2
    
        trewikz naïve 08.10.24✎ 15:55 | 
        (1) Мне наоборот надо убрать эту возможность. Если первый пользователь уже работает с документом, то второму выводить всплывающее окно "Не удалось начать редактирование"     | |||
| 3
    
        trewikz naïve 08.10.24✎ 15:57 | 
        (1) Сейчас два пользователя могут зайти в документ и одновременно вносить в него правки. А хочу добиться блокировки работы позднего пользователя. Чтобы внести хоть какие-либо правки было невозможно. https://wonderland.v8.1c.ru/blog/vzaimodeystvie-pri-redaktirovanii-odnikh-i-tekh-zhe-dannykh/?sphrase_id=986426     | |||
| 4
    
        arsik гуру 08.10.24✎ 16:00 | 
        Попробуй так
 &НаСервере
&Вместо("ПриСозданииНаСервере")
Процедура кмн_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Попытка
		ЭтотОбъект.ЗаблокироватьДанныеФормыДляРедактирования();
	Исключение
		Сообщить(ОписаниеОшибки());
		ЭтаФорма.ТолькоПросмотр = Истина;
	КонецПопытки;
        ПродолжитьВызов(Отказ, СтандартнаяОбработка);
 | |||
| 5
    
        trewikz naïve 08.10.24✎ 16:25 | 
        (4) Не работает. ЭтотОбъект.ЗаблокироватьДанныеФормыДляРедактирования(); отрабатывает без ошибок у двоих пользователей. С тем учетом, что сначала документ открыл первый пользователь, потом второй. Наличие модифицированности на результат так же не повлияло.     | |||
| 6
    
        osa1C 08.10.24✎ 16:38 | 
        (4) Почему при создании на сервере? Документ уже создан, значит ПриЧтенииНаСервере     | |||
| 7
    
        arsik гуру 08.10.24✎ 16:43 | 
        (5) Очень странно. У нас все работает. Вы делаете что то не то.
 Возможно вы что то намудрили с ключами формы. Что у вас основной реквизит формы? (6) Ну и создан и чего? | |||
| 8
    
        trewikz naïve 08.10.24✎ 16:43 | 
        (7) Ключи не трогал. Документ примитивный, является объектом расширения.     | |||
| 9
    
        arsik гуру 08.10.24✎ 16:46 | 
        (8) Покажите что у вас тут     
 | |||
| 10
    
        trewikz naïve 08.10.24✎ 16:51 | ||||
| 11
    
        arsik гуру 08.10.24✎ 16:55 | 
        (10) 🤦     | |||
| 12
    
        trewikz naïve 08.10.24✎ 17:01 | ||||
| 13
    
        arsik гуру 08.10.24✎ 17:22 | 
        (12) Ну что сказать. Ебанная мистика. Может от того что у вас объект в расширении. Мы так не делаем.     | |||
| 14
    
        Шурик71 08.10.24✎ 22:06 | 
        (0) я сейчас уже не помню детали, давно это было, но вот так у меня работает
 Процедура ПриОткрытии()
//... тут куча кода
	Если НЕ ТолькоПросмотр тогда
		Если ЗначениеЗаполнено(Объект.Ссылка) тогда
			Если НЕ ЗаблокироватьОбъект(Объект.Ссылка, УникальныйИдентификатор) Тогда
				ВключитьРежимТолькоПросмотр(Истина);
			КонецЕсли;
		КонецЕсли; 
	Иначе 
		//кнопки тоже надо..
		ВключитьРежимТолькоПросмотр(Истина);
	КонецЕсли;
//... тут куча кода
КонецПроцедуры
Функция ЗаблокироватьОбъект(Ссылка, УникальныйИдентификатор)
	Результат = Истина;
	Попытка
		ЗаблокироватьДанныеДляРедактирования(Ссылка,, УИД);
	Исключение	
		
		ОшИнфо = ИнформацияОбОшибке();
		Ош = ОшИнфо.Причина.Описание;
		Результат = Ложь;
		Сообщить("Объект заблокирован! ("+Ош+").
		|Открываем документ в режиме просмотра!");
		
	КонецПопытки;
	Возврат Результат;
	
КонецФункции | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |