Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
17 апр 2024, 00:52

Создать 1С обработку по назначению прав

Автор Yuran9393, 24 мая 2023, 16:34

0 Пользователей и 1 гость просматривают эту тему.

Yuran9393

Добрый день! Не давно в 1С разработке, подскажите пожалуйста, есть задача по которой требуется создать внешнюю обработку по назначению прав пользователям, в конфигурации Бухгалтерия предприятия 8.3
Создал внешнюю обработку и в модуле объекта решил использовать процедуру "Процедура УстановитьПравоОткрытияВнешнихОтчетовИОбработок(ОткрытиеРазрешено) Экспорт".
Есть несколько вопросов:
1)Как правильно вызвать экспортную процедуру во внешней обработке, чтобы можно было запускать ее скриптом и она отрабатывала?
2)Верную ли процедуру использую?
3)Что нужно изменить в коде ниже? Данный код прописал во внешнюю обработку, но не отрабатывает.
Заранее большое спасибо.


Процедура УстановитьПравоОткрытияВнешнихОтчетовИОбработок(ОткрытиеРазрешено) Экспорт
   
   Если ОбщегоНазначения.РазделениеВключено() Тогда
      Возврат;
   КонецЕсли;
   
   ПараметрыАдминистрирования = СтандартныеПодсистемыСервер.ПараметрыАдминистрирования();
   ПараметрыАдминистрирования.Вставить("ПринятоРешениеПоОткрытиюВнешнихОтчетовИОбработок", Истина);
   СтандартныеПодсистемыСервер.УстановитьПараметрыАдминистрирования(ПараметрыАдминистрирования);
   
   Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
      МодульУправлениеДоступомСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступомСлужебный");
      МодульУправлениеДоступомСлужебный.УстановитьПравоОткрытияВнешнихОтчетовИОбработок(ОткрытиеРазрешено);
      Возврат;
   КонецЕсли;
   
   РольАдминистраторСистемы = Метаданные.Роли.АдминистраторСистемы;
   РольИнтерактивноеОткрытие = Метаданные.Роли.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок;
   
   //ПользователиИБ = ПользователиИнформационнойБазы.ПолучитьПользователей();     
   
   ПользовательИБ = Справочники.Пользователи.НайтиПоНаименованию("Тестовый пользователь");

      ПользовательИзменен = Ложь;
      ЕстьРольИнтерактивногоОткрытия = ПользовательИБ.Роли.Содержит(РольИнтерактивноеОткрытие);
      Если ОткрытиеРазрешено Тогда
         Если Не ЕстьРольИнтерактивногоОткрытия Тогда
            ПользовательИБ.Роли.Добавить(РольИнтерактивноеОткрытие);
            ПользовательИзменен = Истина;
         КонецЕсли;
      Иначе
         Если ЕстьРольИнтерактивногоОткрытия Тогда
            ПользовательИБ.Роли.Удалить(РольИнтерактивноеОткрытие);
            ПользовательИзменен = Истина;
         КонецЕсли;
      КонецЕсли;                           
   
      ЕстьРольАдминистраторСистемы = ПользовательИБ.Роли.Содержит(РольАдминистраторСистемы);
      Если ОткрытиеРазрешено Тогда
         Если Не ЕстьРольАдминистраторСистемы Тогда
            ПользовательИБ.Роли.Добавить(РольАдминистраторСистемы);
            ПользовательИзменен = Истина;
         КонецЕсли;
      Иначе
         Если ЕстьРольАдминистраторСистемы Тогда
            ПользовательИБ.Роли.Удалить(РольАдминистраторСистемы);
            ПользовательИзменен = Истина;
         КонецЕсли;
      КонецЕсли;
      Если ПользовательИзменен Тогда
         ПользовательИБ.Записать();
      КонецЕсли;
      
      ОписаниеНастроек = Новый ОписаниеНастроек;
      ОписаниеНастроек.Представление = НСтр("ru = 'Предупреждение безопасности'");
      ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(
         "ПредупреждениеБезопасности",
         "ПользовательОзнакомлен",
         Истина,
         ОписаниеНастроек,
         ПользовательИБ.Имя);
   
      КонецПроцедуры

antoneus

Строчку

ПользовательИБ = Справочники.Пользователи.НайтиПоНаименованию("Тестовый пользователь");
надо заменить на


Ссылка = Справочники.Пользователи.НайтиПоНаименованию("Тестовый пользователь");
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Ссылка.ИдентификаторПользователяИБ);

остальное без изменений.

Yuran9393


Похожие темы (5)

Рейтинг@Mail.ru

Поиск