Уважаемые эксперты, пожалуйста подскажите логику условия! Какой же хочется закричать от беспомощности, голова не варит! Прошу Вас помогите
У меня есть документ; есть перечисление с тремя реквизитами (А,Б,В); и есть Роль
У меня есть два варианта событий -
1 вариант) Если роль не доступна и/или в документе не выбрано данное перечисление А -> Тогда записать документ нельзя
2 вариант) Если роль доступна тогда можно выбрать любое из перечислений (А,Б,В)
Я написал так и мой код не работает -
У меня есть документ; есть перечисление с тремя реквизитами (А,Б,В); и есть Роль
У меня есть два варианта событий -
1 вариант) Если роль не доступна и/или в документе не выбрано данное перечисление А -> Тогда записать документ нельзя
2 вариант) Если роль доступна тогда можно выбрать любое из перечислений (А,Б,В)
Я написал так и мой код не работает -
Если НЕ РольДоступна("ЭтаСамаяРоль") ИЛИ НЕ Перечисления.ВидыОпераций.А = Истина
Тогда Отказ = Истина;
Сообщить("Нет роли и выбрали вид операции Списание А - Вам не положено");
Иначе
Сообщить("Можно выбрать операцию Списания");
Отказ = Ложь;
КонецЕсли;
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Более правильное условие такое:
Если НЕ РольДоступна("ЭтаСамаяРоль") И НЕ Перечисления.ВидыОпераций.А = Истина Тогда // 1 вариант) Если роль не доступна и в документе не выбрано перечисление А
Отказ = Истина;
Сообщить("Нет роли и выбрали вид операции Списание А - Вам не положено");
ИначеЕсли РольДоступна("ЭтаСамаяРоль") И Не ЗначениеЗаполнено(Перечисления.ВидыОпераций) // Если роль доступна тогда можно выбрать любое из перечислений (А,Б,В)
Сообщить("Можно выбрать операцию Списания");
КонецЕсли;
постановка задачи у вас интересная "и/или" - понимай как хочешь :)
Но судя по всему Либо у сотрудника есть роль, либо он может использовать только А.
Так и пишите условие :
Но судя по всему Либо у сотрудника есть роль, либо он может использовать только А.
Так и пишите условие :
Если РольДоступна ИЛИ А тогда
"можно"
Иначе
"нельзя"
Хрень какая-то в постановке задачи )
Получается, что если не выбрано А, тогда должна быть доступна роль, чтобы записать документ? А если выбрано А, тогда роль не имеет значения и документ можно записать. Так?
Получается, что если не выбрано А, тогда должна быть доступна роль, чтобы записать документ? А если выбрано А, тогда роль не имеет значения и документ можно записать. Так?
Если Не А И Не РольДоступна Тогда
//не записываем
Иначе
//записываем
КонецЕсли;
(15)
Что именно не работает?
* Вот здесь точка останова -Если НЕ РольДоступна("ЭтаСамаяРоль") ИЛИ НЕ Перечисления.ВидыОпераций.А = Истина
Тогда Отказ = Истина;
Сообщить("Нет роли и выбрали вид операции Списание А - Вам не положено");
Иначе
Сообщить("Можно выбрать операцию Списания");
Отказ = Ложь;
КонецЕсли;
Что именно не работает?
Товарищи, подскажите есть Процедура при Записи, там нет до этого Отказов, делаю проверку, но она почему то не срабатывает, реквизиты правильно указал
Если НЕ РольДоступна("АСН_РазрешитьВидОперацииСписаниеУКорректировки") И НЕ Перечисления.ВидыОперацийКорректировкаДолга.СписаниеЗадолженности = Истина Тогда
Отказ = Истина;
Сообщить("Нет роли и выбрали вид операции Списание А - Вам не положено");
ИначеЕсли РольДоступна("АСН_РазрешитьВидОперацииСписаниеУКорректировки") И Не ЗначениеЗаполнено(Перечисления.ВидыОперацийКорректировкаДолга) Тогда
Сообщить("Можно выбрать операцию Списания");
КонецЕсли;
Постановка задачи - бред какой-то. А что вам мешает написать так, как советуют коллеги?
Исправьте условие по реквизиту с типом Перечисление.
Исправьте условие по реквизиту с типом Перечисление.
Если НЕ РольДоступна("ЭтаСамаяРоль") ИЛИ <ТвойКакойтоРеквизит <> Перечисления.ВидыОпераций.А Тогда
Отказ = Истина;
Сообщить("Нет роли и/или выбрали вид операции Списание А - Вам не положено");
Иначе
Сообщить("Можно выбрать операцию Списания");
КонецЕсли;
Всем спасибо кто помогал! Реально помогло отдохнуть, прийти на работу и сделать
Если НЕ РольДоступна("АСН_РазрешитьВидОперацииСписаниеУКорректировки") И ВидОперации = Перечисления.ВидыОперацийКорректировкаДолга.СписаниеЗадолженности
Тогда Отказ = Истина;
Сообщить("Нет роли и выбрали вид операции Списание А - Вам не положено");
ИначеЕсли РольДоступна("АСН_РазрешитьВидОперацииСписаниеУКорректировки")
Тогда Отказ = Ложь;
Сообщить("Роль доступно, документ можно записать");
КонецЕсли;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот