Имя: Пароль:
1C
1С v8
Не пойму логику условия
0 sasha-asn
 
12.12.19
15:41
Уважаемые эксперты, пожалуйста подскажите логику условия! Какой же хочется закричать от беспомощности, голова не варит! Прошу Вас помогите

У меня есть документ; есть перечисление с тремя реквизитами (А,Б,В); и есть Роль

У меня есть два варианта событий -
1 вариант) Если роль не доступна и/или в документе не выбрано данное перечисление А -> Тогда записать документ нельзя
2 вариант) Если роль доступна тогда можно выбрать любое из перечислений (А,Б,В)
--------------------------------------------------------------------------------------------------------
Я написал так и мой код не работает -

Если НЕ РольДоступна("ЭтаСамаяРоль") ИЛИ НЕ Перечисления.ВидыОпераций.А = Истина
Тогда Отказ = Истина;
Сообщить("Нет роли и выбрали вид операции Списание А - Вам не положено");
Иначе
Сообщить("Можно выбрать операцию Списания");    
Отказ = Ложь;
КонецЕсли;
1 Волшебник
 
12.12.19
15:42
ИЛИ НЕ равно Истина ...

быдлокод детектед
2 sasha-asn
 
12.12.19
15:43
(1) а как надо? подскажи пожалуйста
3 dka80
 
12.12.19
15:44
НЕ РольДоступна("ЭтаСамаяРоль") ИЛИ ТвойРеквизитДокумента <> Перечисления.ВидыОпераций.А
4 sasha-asn
 
12.12.19
17:07
(1) переделал, но почему то не срабатывает условие - Если НЕ РольДоступна("ЭтаСамаяРоль") И НЕ Перечисления.ВидыОпераций.А = Истина Тогда


Если НЕ РольДоступна("ЭтаСамаяРоль") И НЕ Перечисления.ВидыОпераций.А = Истина Тогда // 1 вариант) Если роль не доступна и в документе не выбрано перечисление А
    Отказ = Истина;
    Сообщить("Нет роли и выбрали вид операции Списание А - Вам не положено");
ИначеЕсли РольДоступна("ЭтаСамаяРоль") И Не ЗначениеЗаполнено(Перечисления.ВидыОпераций) // Если роль доступна тогда можно выбрать любое из перечислений (А,Б,В)
    Сообщить("Можно выбрать операцию Списания");    
КонецЕсли;
5 ZDenis
 
12.12.19
17:09
(4) Ничего ты не переделал, читай внимательно, что выше писали
6 sasha-asn
 
12.12.19
17:09
как мне указать что именно вот это пересечение одно из трёх выбрано, тогда Записать можно ?
7 sasha-asn
 
12.12.19
17:11
(5)
Если НЕ РольДоступна("АСН_РазрешитьВидОперацииСписаниеУКорректировки") ИЛИ Перечисления.ВидыОперацийКорректировкаДолга <>
   Перечисления.ВидыОперацийКорректировкаДолга.СписаниеЗадолженности
    Тогда Отказ = Истина;
Иначе Отказ = Ложь;
КонецЕсли;
8 sasha-asn
 
12.12.19
17:11
(5) переделывал не работает
9 singlych
 
12.12.19
17:11
где выбрано-то? то и сравнивай
10 sasha-asn
 
12.12.19
17:13
(9) Так вот же сравниваю

Перечисления.ВидыОперацийКорректировкаДолга <> Перечисления.ВидыОперацийКорректировкаДолга.СписаниеЗадолженности
11 ZDenis
 
12.12.19
17:14
(10) посмотри (3)
12 Greeen
 
12.12.19
17:17
Лучше с утра к задаче вернуться =)
Так ненадо:
Перечисления.ВидыОперацийКорректировкаДолга <> Перечисления.ВидыОперацийКорректировкаДолга.СписаниеЗадолженности
Надо
<ИмяРеквизита <> Перечисления.ВидыОперацийКорректировкаДолга.СписаниеЗадолженности
13 ads55
 
12.12.19
17:18
(10) "Так вот же сравниваю"
Как ты думаешь,   sasha-asn = sasha ???
14 ads55
 
12.12.19
17:20
(10) на ИС же написали тебе то же самое. Почему не читаешь?

Да, лучше к задаче утром вернуться :)
15 sasha-asn
 
12.12.19
17:48
(14) спасибо) вы правы!
16 sasha-asn
 
13.12.19
10:11
спасибо кто помогал! Реально помогло отдохнуть, прийти на работу и сделать

Если НЕ РольДоступна("АСН_РазрешитьВидОперацииСписаниеУКорректировки") И ВидОперации = Перечисления.ВидыОперацийКорректировкаДолга.СписаниеЗадолженности
    Тогда Отказ = Истина;
    Сообщить("Нет роли и выбрали вид операции Списание А - Вам не положено");
ИначеЕсли РольДоступна("АСН_РазрешитьВидОперацииСписаниеУКорректировки")
    Тогда Отказ = Ложь;
    Сообщить("Роль доступно, документ можно записать");
КонецЕсли;
17 hhhh
 
13.12.19
10:22
(16) что за "Роль доступно" ? Пользователи ржать будут над вами.
18 sasha-asn
 
13.12.19
11:10
(17) да это текст который вообще там не нужен, для своего понимания делал. Задачу сделал, всем спасибо!)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший