Имя: Пароль:
1C
1С v8
Как реализовать Иначе Истина
,
0 Александр89
 
02.08.18
12:45
Изменение вручную невозможно. Если текущая дата меньше или равна «срок действия по» И больше или равна «Срок действия с», то ложь. Иначе – Истина.


&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
    Если
        ТекущаяДата()  <=  Объект.СрокДействияПо
            И         
        ТекущаяДата() >= Объект.СрокДействияС
        Тогда
        Объект.Закрыт = Ложь;
    
    КонецЕсли;

КонецПроцедуры
1 Александр89
 
02.08.18
12:46
Забыл, всем добрый день! )))
2 youalex
 
02.08.18
12:46
Объект.Закрыт = Истина ?
3 Зуекщмшср
 
02.08.18
12:48
Интрига! Есть ощущение, что автор будет потихоньку приоткрывать завесу зловещей тайны.
4 Kondarat
 
02.08.18
12:48
Объект.Закрыт = ТекущаяДата()  <=  Объект.СрокДействияПо И ТекущаяДата() >= Объект.СрокДействияС;
5 youalex
 
02.08.18
12:50
ну или сразу, Объект.Закрыт = НЕ {Твое условие}.
6 Александр89
 
02.08.18
12:53
(3) Только начал свой путь 1С
Я не могу понять как продолжить код, можно конечно тупо наоборот сделать, но по любому можно как правильно написать
7 youalex
 
02.08.18
12:53
или
Объект.Закрыт = ТекущаяДата()  >  Объект.СрокДействияПо             ИЛИ   ТекущаяДата() < Объект.СрокДействияС
8 Eastert
 
02.08.18
12:55
Процедура ДатаПриИзменении(Элемент)
    Если
        ТекущаяДата()  <=  Объект.СрокДействияПо
            И        
        ТекущаяДата() >= Объект.СрокДействияС
        Тогда
        Объект.Закрыт = Ложь;
    Иначе
        Объект.Закрыт = Истина;
    КонецЕсли;

КонецПроцедуры
9 Deon
 
02.08.18
12:55
Меня вот больше интересует, почему меняется Дата объекта, а в условии сравнивается ТекущаяДата()
10 Buster007
 
02.08.18
13:14
а если у тебя пользователи работают в нескольких часовых поясах, то твой код не работает
11 Адинэснег
 
02.08.18
13:19
(0) "Пишите код так, как будто сопровождать его будет ..."
12 Адинэснег
 
02.08.18
13:21
август... еще одного гамнокодера выкакало отечественное образование
13 Адинэснег
 
02.08.18
13:22
хотя 89год... как ты тут оказался?
14 Адинэснег
 
02.08.18
13:25
кто там про синьоров спрашивал?
в 1С джун из (0) пилет сук, на котором сидит
мидлы советуют ножовки и оптимальную технику пиления...
сеньоры наблюдают
15 Александр89
 
02.08.18
13:53
(8) Иначе
        Объект.Закрыт = Истина;


Вот именно это и нужно было, спасибо))
Правда поменял Процедуру ДатаИзменения на СрокДействияСПриИзменении



&НаКлиенте
Процедура СрокДействияСПриИзменении(Элемент)
    Если
        ТекущаяДата()  <=  Объект.СрокДействияПо
            И         
        ТекущаяДата() >= Объект.СрокДействияС
        Тогда
        Объект.Закрыт = Ложь;
        
    Иначе
        Объект.Закрыт = Истина;
    КонецЕсли;

КонецПроцедуры

(11) а что такого если есть желание писать сразу правильный код??
(14) а что тебя смущает возраст 28 лет?  То есть когда за 50 это нормально )))


(10) Я сомневаюсь что они будут работать в разных Часовых поясах, но идея хорошая спасибо, подумаю.


А кстати всем спасибо))
16 Адинэснег
 
02.08.18
14:24
(15) у тебя само решение подозрительно выглядит...
1. Есть реквизит объекта, который меняется от текущей даты
Причем не по наступлению этой даты в по интерактивному действию...
Если пользователь не зашел, или зашел, но не трогал элемент управления - то алгоритм твой не отработает...

2. Строки кода выполняются не параллельно, не единовременно, а последовательно
ТекущаяДата() в первой строке не равна ТекущаяДата() в следующей, хотя в твоем случае и будут в рамках, напремер одной секунды

3. Раз алгоритм и логика тебя не смущает, и сук надо отпилить, делай его одним-двумя движением, не разматывай спагетти:

&НаКлиенте
Процедура СрокДействияСПриИзменении(Элемент)

     ТекДата = ТекущаяДата();
     Объект.Закрыт = (Объект.СрокДействияС<=ТекДата) И (Объект.СрокДействияПо>=ТекДата);

КонецПроцедуры
17 Buster007
 
02.08.18
14:27
(16) а ты лишние переменные не делай
18 Buster007
 
02.08.18
14:28
+(17) особенно сокращать названия: тчк, зпт и т.д. как-будто телеграмму пишешь
19 Адинэснег
 
02.08.18
14:29
(17)в каком месте переменная лишняя? я ж скалал ТекущаяДата() <> ТекущаяДата()
науя сравнивать с двумя разными значениями?
20 Адинэснег
 
02.08.18
14:37
(18)бэстпрактикс, загляни в типовые :-D
21 Kondarat
 
02.08.18
14:37
(19) Странно.
Сообщить("Дата = " + ТекущаяДата() + " еще дата = " + ТекущаяДата());

Результат:
Дата = 02.08.2018 14:36:10 еще дата = 02.08.2018 14:36:10
22 1Сергей
 
02.08.18
14:38
(16)

1. +100500
2. =
3. Лучше пусть подробно пишет, проще понять. И ему и следущему прогу
23 Адинэснег
 
02.08.18
14:39
это у вас компы быстрые, бгг
24 Адинэснег
 
02.08.18
14:42
ну ладно, в одной строке допустим примерно равны)
ТекДата в свежей типовой:
https://image.prntscr.com/image/Xwr5LSg5R0WZ6KTe9Ceirw.png
25 youalex
 
02.08.18
14:46
(16) у тебя условие неправильно задано
26 Адинэснег
 
02.08.18
14:47
(26) оно перевернуто
27 youalex
 
02.08.18
14:48
(26) оно неправильно перевернуто
28 Адинэснег
 
02.08.18
15:11
(27) переверни монитор
29 Адинэснег
 
02.08.18
15:13
а ну да, там же В периоде Ложь, тогда Не(Условие)
30 youalex
 
02.08.18
15:19
(28) еще > и < , без равно, если исходить из (0)
+ ИЛИ вместо И
31 Casey1984
 
02.08.18
15:33
(0) Это не к 1С, а к логике вопрос, я так подозреваю, более фундаментальные знания, законы де Моргана и прочее.
32 Адинэснег
 
02.08.18
15:33
вообще чуваку надо РЗ написать, в котором реквизит менялся у объектов...  а возможно и вынести в регистр статус Открыт/Закрыт, чтоб объекты не блокировать