Имя: Пароль:
1C
 
Вопрос по логике (условие)
,
0 Gray776
 
11.03.15
07:20
Уважаемые как лучше/правильно будет, так:

Отказ = Источник.Испорчена;
Отказ = Источник.ПометкаУдаления;
Отказ = НЕ (Источник.Проведен);

или вот так:

Отказ = (Источник.Испорчена) И (Источник.ПометкаУдаления) И (НЕ (Источник.Проведен));
1 sda553
 
11.03.15
07:22
в первом случае первые две строчки ничего не делают
2 hawksib
 
11.03.15
07:24
О_О вопрос не в том как лучше, а как правильно, полагаю, как сказали в (1), тебе будет достаточно только Отакз = Не Источник.Проведен;
3 Explorer1c
 
11.03.15
07:25
А чего вы хотите добиться данным кодом? Возможно, запускаете Протон?
4 Gray776
 
11.03.15
07:26
(0) Еееммм... это в обработчике документа "Перед выгрузкой" (1) (2) Согласен насчет пометки на удаление лишнее это и то правда... но вот "испорчена" может быть проведенной как ни странно. Это дополнительная доработка в конфигурации.
(3) неа звезду смерти )))
5 hawksib
 
11.03.15
07:29
(3) епть, соазу бы сказал, что код для КД написать не можешь, держи
БудетОтказ = Ложь;
Если Не Источник.Проведен Тогда
БудетОтказ = Истина;
КонецЕсли;
Если Источник.Испорчена Тогда
БудетОтказ = Истина;
КонецЕсли;
Отказ = БудетОтказ;
6 Gray776
 
11.03.15
07:35
(5) Та чего эт не могу? Могу просто посоветоваться решил вот... и не зря кстати... (одно условие исключил)
та оно понятно  что можно и так и эдак но вот из моих вариантов(с учетом исключения лишнего) какой верный мне вот первый вариант чтот не нравится хотя ....
7 Gray776
 
11.03.15
07:37
(6) Тоесть так:

Отказ = Источник.Испорчена;
Отказ = НЕ (Источник.Проведен);

Или так:

Отказ = (Источник.Испорчена) И (НЕ (Источник.Проведен));
8 hawksib
 
11.03.15
07:39
(7) если у тебя источник не испорчена, и источник проведен будет ложь и ложь = отказ?
9 hawksib
 
11.03.15
07:41
первый свой вариант вообще забудь, отказ будет всегда только последнее значение принимать, я бы сделал такое условие как у меня написано и не парился, какая разница как че написано, главное код рабочий, да ещё и понятный
10 Explorer1c
 
11.03.15
07:42
А что значит "Источник.испорчена"? и нафига этот код в КД вообще нужен? (просто я в КД плотно не работал, только учусь)
11 hawksib
 
11.03.15
07:43
(10) такой код в КД в событии передВыгрузкой нужен, чтобы данные (объект) не выгружались
12 Gray776
 
11.03.15
07:46
(8) Блин точно мне же там нужна ЛОЖЬ только если оба ЛОЖЬ значит не "И", а "ИЛИ"
(10) Та это не имеет отношение к КД это реквизит документа который появился в процессе доработки конфигурации "под заказчика" (не я дорабатывал)
13 hawksib
 
11.03.15
07:47
(10) а источник.Испорчена это значит, что у выгружаемого объекта есть реквизит "Испорчена", по логике в приведенном коде понятно, что булевого типа
14 Gray776
 
11.03.15
07:47
(11) оно там и есть (4)
(13) да именно так
15 Explorer1c
 
11.03.15
07:51
Как можно назвать реквизит "Испорчена" что за бред) Тот прогер который был до тебя явно был двоечником по литературе
16 Gray776
 
11.03.15
07:52
(10) (11) (13) Да это я не переношу документы которые испорчены или не проведены. То есть мне нужны в приемнике документы которые проведены и не испорченны.
17 Gray776
 
11.03.15
07:55
(12)Короче наверно как в (5) сделаю ... а насчет моих вариантов:

Отказ = (Источник.Испорчена) ИЛИ (НЕ (Источник.Проведен));

Вот так наверно...
18 hawksib
 
11.03.15
07:58
(12) в (8) я немного ошибся
ЛОЖЬ И ЛОЖЬ = ЛОЖЬ (отказа не будет), а вот ЛОЖЬ И ИСТИНА = ЛОЖЬ, что, имхо, не правильно, скорее всего действительно с ИЛИ будет работать, потому как ЛОЖЬ ИЛИ ИСТИНА = ИСТИНА. Ну я чтобы всегда наверняка работала пишу более простой, понятный и 100% рабочий код, как в (5), ага
19 kosts
 
11.03.15
08:08
Зачем усложнять, вот в самый раз:


Если Не Источник.Проведен или Источник.Испорчена Тогда
    Отказ = Истина;
КонецЕсли;


Запись в одну строчку можно, но чревато. Из-за невнимательности можно испортить значение переменной отказ.
Вот так скорее всего не правильно

Отказ = (Источник.Испорчена) И (НЕ (Источник.Проведен));

Вот так более менее, но как сказал можно забыться и написать не правильно

Отказ = Отказ или (Источник.Испорчена) ИЛИ (НЕ (Источник.Проведен));

Потому, что на входе в процедуру переменная Отказ уже может быть Истиной, а мы это испортим.
20 Gray776
 
11.03.15
08:13
(19) То есть "уже быть истинной" интересно же.
Хотя напишу с условием код короче или из (5) или (19) главное чтоб правильно работало :))))
21 Gray776
 
11.03.15
08:15
(15) Да там вообще "бред" наличие этой галочки вообще... Хоть горком бы ее обозвали но так требовал заказчик насколько я понимаю...
22 Gray776
 
11.03.15
08:15
(21) *хоть горшком
23 Gray776
 
11.03.15
08:20
ИТОГ:


Если (Источник.Испорчена) ИЛИ (НЕ (Источник.Проведен)) Тогда
    Отказ = Истина;
КонецЕсли;
24 Ненавижу 1С
 
гуру
11.03.15
08:41
(23) в одну строчку так:
Отказ = Отказ ИЛИ (Источник.Испорчена) ИЛИ (НЕ Источник.Проведен);
25 Ёпрст
 
11.03.15
09:21
Отказ = Отказ ИЛИ Источник.Испорчена И Источник.Проведен
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн