Имя: Пароль:
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) да это текст который вообще там не нужен, для своего понимания делал. Задачу сделал, всем спасибо!)
Основная теорема систематики: Новые системы плодят новые проблемы.