Имя: Пароль:
1C
1С v8
Диалог "Не удалось начать редактирование" для самописного документа
0 trewikz
 
08.10.24
13:04
Всех приветствую.

Появилась нужда ограничить совместную работу с новым документом. Как внедрить типовой функционал по ограничению? Пробовал методы:
 .Заблокировать();
 .ЗаблокироватьДанныеДляРедактирования(Параметры.Ключ);
 .ЗаблокироватьДанныеФормыДляРедактирования();

Пробовал в следующих обработчиках:
  ПриОткрытии() 
  ПриСозданииНаСервере()

Нужного результата не добился.
1 saaken
 
08.10.24
15:46
А откуда есть уверенность, что можно совместно редактировать документ
2 trewikz
 
08.10.24
15:55
(1) Мне наоборот надо убрать эту возможность. Если первый пользователь уже работает с документом, то второму выводить всплывающее окно "Не удалось начать редактирование"
3 trewikz
 
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
 
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
 
08.10.24
16:43
(7) Ключи не трогал. Документ примитивный, является объектом расширения.
9 arsik
 
08.10.24
16:46
(8) Покажите что у вас тут
10 trewikz
 
08.10.24
16:51
11 arsik
 
08.10.24
16:55
(10) 🤦
12 trewikz
 
08.10.24
17:01
13 arsik
 
08.10.24
17:22
(12) Ну что сказать. Ебанная мистика. Может от того что у вас объект в расширении. Мы так не делаем.
14 Шурик71
 
08.10.24
22:06
(0) я сейчас уже не помню детали, давно это было, но вот так у меня работает

Процедура ПриОткрытии()

//... тут куча кода

	Если НЕ ТолькоПросмотр тогда
		Если ЗначениеЗаполнено(Объект.Ссылка) тогда
			Если НЕ ЗаблокироватьОбъект(Объект.Ссылка, УникальныйИдентификатор) Тогда
				ВключитьРежимТолькоПросмотр(Истина);
			КонецЕсли;
		КонецЕсли; 
	Иначе 
		//кнопки тоже надо..
		ВключитьРежимТолькоПросмотр(Истина);
	КонецЕсли;

//... тут куча кода

КонецПроцедуры

Функция ЗаблокироватьОбъект(Ссылка, УникальныйИдентификатор)

	Результат = Истина;
	Попытка
		ЗаблокироватьДанныеДляРедактирования(Ссылка,, УИД);
	Исключение	
		
		ОшИнфо = ИнформацияОбОшибке();
		Ош = ОшИнфо.Причина.Описание;
		Результат = Ложь;
		Сообщить("Объект заблокирован! ("+Ош+").
		|Открываем документ в режиме просмотра!");
		
	КонецПопытки;
	Возврат Результат;
	
КонецФункции