Отключение доступности в РИБ

1. mburkin 11 14.03.15 02:40 Сейчас в теме
Привет всем,
РИБ.
стоит задача такая - номенклатуру можно добавлять только в центральной базе, в подчиненных можно только смотреть.
как лучше реализовать такую вещь? я создал общий модуль, и подписку на событие перед записью и код

гл = ПланыОбмена.ГлавныйУзел();

	Если гл = неопределено тогда
		  
	Сообщить("это главный узел! записывать можно");
		  
	  иначе
			Сообщить("Изменения можно вносить только в ЦБ");
	    	Отказ = Истина;
		Возврат;
		КонецЕсли;
Показать


Но тогда ЕСТЕСТВЕННО когда идёт загрузка данных из ЦБ в подчиненную базу и доходит дело до загрузки номенклатуры, он не даёт её записать и выдает вон то сообщение. Это очень логично, понимаю... может как то можно в коде указать что это дело работает всегда кроме момента чтения данных из ЦБ?

Подкиньте пожалуйста идеи, как это лучше реализовать? Эффективней чтоб... оптимальней... ну и всё такое:) Конфа, если надо, БИТ Красота. Отраслёвка.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. hasan-rusel 11 14.03.15 04:14 Сейчас в теме
(1) mburkin, А почему бы просто не настроить это на уровне ролей ?
4. mburkin 11 17.03.15 12:45 Сейчас в теме
(2) hasan-rusel, ну ведь тогда тоже самое получается..

в подчиненной базе работает только один пользователь, если ему ставить роль запрещающую изменение" обмен ведь тоже будет происходить под этим же пользователем..и записать под ним не даст.. как ж поступить...

а вот еще задачка... надо чтобы никто кроме одного пользователя не видит определенную группу справочника..

есть группа справочника - один её видит, остальные НЕТ.. подскажите плиз...
5. hasan-rusel 11 18.03.15 04:28 Сейчас в теме
(4) mburkin, решение TMV тоже не подходит ?

По второму вопросу, (думаю если поковыряться, можно сделать так же как и по первому вопросу) Можно сделать настройку через ограничение доступа (щёлкаем по корню дерева конфигурации правой мышкой, выбираем "все ограничения доступа" и там прописываем.
3. TMV 14 14.03.15 17:00 Сейчас в теме
(1) mburkin, В типовых конфигурациях для таких целей используется механизм в обработчике "ПередЗаписью":

процедура ПередЗаписью

Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;

//дальнейший код, проверки и прочее

конецпроцедуры
Показать


При загрузке в узле делаем "ОбменДанными.Загрузка = Истина" и тогда проверка не выполняется.

З.Ы. Разумеется лучше все это запихать в подписку, чтоб не опасаться за потерю кода при обновлениях.
mburkin; alk; +2 Ответить
6. mburkin 11 19.03.15 10:37 Сейчас в теме
(3) TMV, СПАСИБО!!! так и сделал!

Подведу итог...
1. Подписка на событие "Перед записью" на справочник номенклатура,
2. Общий модуль на который ссылается подписка, с таким кодом:

Процедура битПриЗаписиКлиентаПередЗаписью(Источник, Отказ) Экспорт
	  
	Если Источник.ОбменДанными.Загрузка Тогда 
			  Возврат
	КонецЕсли; 
		  		  
	гл = ПланыОбмена.ГлавныйУзел();
	 
	Если гл = неопределено тогда
		  
	//Сообщить("это главный узел! записывать можно");
		  
	Иначе
		 	  
	Сообщение = новый СообщениеПользователю ();
	Сообщение.Текст = "Изменения можно вносить только в Центральной базе!";
	Сообщение.Сообщить();
	
	Отказ = Истина;
		 КонецЕсли;

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

Показать
7. lukoyanovas 20.03.15 04:08 Сейчас в теме
(6) mburkin,
СПАСИБО!!! так и сделал!
Для выражения благодарности достаточно нажать "+" под постом.
mburkin; TMV; +2 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот