1С. Программное отключение возможности редактирования справочника
12 Mar 2018
local_offer
1C
Отключение возможности редактирования справочника конкретному пользователю (в данном примере это - "Менеджер") после изменения реквизита "рзЦена" в эелменте справочника, кем-то выше стоящим.
Справочник Номенклатура - Модуль объекта:
Перем мЭтоНеНовый;
// Обработчик события ПередЗаписью формы.
//
Процедура ПередЗаписью(Отказ)
Если мЭтоНеНовый = Неопределено Тогда
мЭтоНеНовый = Не ЭтоНовый();
КонецЕсли;
Если мЭтоНеНовый Тогда
//Запрещаем менеджеру вносить изменения в справочник если уже установлена цена
Если ПараметрыСеанса.ТекущийПользователь.Наименование = "Менеджер" Тогда
Если ЗначениеЗаполнено(рзЦена) Тогда
Отказ = Истина;
ТекстСообщения = "Вам не разрешено изменять данный элемент";
ОбщегоНазначения.СообщитьОбОшибке(ТекстСообщения, Отказ);
Иначе
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.рзЦена
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", ЭтотОбъект.Ссылка);
Результат = Запрос.Выполнить().Выбрать();
Если Результат.Следующий() тогда
стараяЦена = Результат.рзЦена;
КонецЕсли;
Если стараяЦена <> ЭтотОбъект.рзЦена Тогда
Отказ = Истина;
ТекстСообщения = "Вам не разрешено изменять данный элемент (" + стараяЦена + " <> " + ЭтотОбъект.рзЦена + ")";
ОбщегоНазначения.СообщитьОбОшибке(ТекстСообщения, Отказ);
КонецЕсли;
КонецЕсли;
Иначе
Отказ = Ложь;
ТекстСообщения = "Вам разрешено изменять данный элемент - " + ПараметрыСеанса.ТекущийПользователь;
Сообщить(ТекстСообщения);
КонецЕсли;
КонецЕсли;
...
КонецПроцедуры // ПередЗаписью()