Вход | Регистрация


1С:Предприятие ::

Метки: 

Как реализовать Иначе Истина

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


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

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

КонецПроцедуры
   Deon
 
9 - 02.08.18 - 12:55
Меня вот больше интересует, почему меняется Дата объекта, а в условии сравнивается ТекущаяДата()
   Buster007
 
10 - 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) пилет сук, на котором сидит
мидлы советуют ножовки и оптимальную технику пиления...
сеньоры наблюдают
   Александр89
 
15 - 02.08.18 - 13:53
(8) Иначе
        Объект.Закрыт = Истина; 


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



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

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

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


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


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

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

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

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

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

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

Результат:
Дата = 02.08.2018 14:36:10 еще дата = 02.08.2018 14:36:10
   1Сергей
 
22 - 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
   youalex
 
25 - 02.08.18 - 14:46
(16) у тебя условие неправильно задано
   Адинэснег
 
26 - 02.08.18 - 14:47
(26) оно перевернуто
   youalex
 
27 - 02.08.18 - 14:48
(26) оно неправильно перевернуто
   Адинэснег
 
28 - 02.08.18 - 15:11
(27) переверни монитор
   Адинэснег
 
29 - 02.08.18 - 15:13
а ну да, там же В периоде Ложь, тогда Не(Условие)
   youalex
 
30 - 02.08.18 - 15:19
(28) еще > и < , без равно, если исходить из (0)
+ ИЛИ вместо И
   Casey1984
 
31 - 02.08.18 - 15:33
(0) Это не к 1С, а к логике вопрос, я так подозреваю, более фундаментальные знания, законы де Моргана и прочее.
   Адинэснег
 
32 - 02.08.18 - 15:33
вообще чуваку надо РЗ написать, в котором реквизит менялся у объектов...  а возможно и вынести в регистр статус Открыт/Закрыт, чтоб объекты не блокировать



Список тем форума
Рекламное место пустует   Рекламное место пустует
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует