|
Сравнение Даты документа с Датой переменной | ☑ | ||
---|---|---|---|---|
0
sasha-asn
30.01.20
✎
14:11
|
Уважаемые эксперты, прошу вашей помощи! Делаю проверку ПередЗаписью, но она не срабатывает.
Я сравниваю Дату текущего документа с Датой в переменной (Дата документа + 10 дней): Функция ПроверкаДнейЗаписиКомменатрия() ЛимитДнейИзменЦен = ЭтотОбъект.Дата + 10; Если ЭтотОбъект.Дата >= ЛимитДнейИзменЦен Тогда Сообщить("Сработало!"); КонецЕсли КонецФункции |
|||
1
Волшебник
модератор
30.01.20
✎
14:13
|
+ 10*86400
|
|||
2
Builder
30.01.20
✎
14:14
|
+10 - это +10 СЕКУНД.
|
|||
3
Волшебник
модератор
30.01.20
✎
14:14
|
Но лучше задействовать ещё функцию КонецДня, чтобы не было зависимости от времени.
|
|||
4
azernot
30.01.20
✎
14:14
|
Как может выполниться условие А>=(А+10)? На мой взгляд - никак.
|
|||
5
Homer
30.01.20
✎
14:14
|
(4) +
|
|||
6
sasha-asn
30.01.20
✎
14:16
|
(3) (1) Спасибо большое!
|
|||
7
Волшебник
модератор
30.01.20
✎
14:16
|
(4) в точку
|
|||
8
ZDenis
30.01.20
✎
14:17
|
(6) Хочешь сказать, что условие стало работать?
|
|||
9
goodprog
30.01.20
✎
14:19
|
а это ты КА 2.4 внедряешь? ой ой
|
|||
10
sasha-asn
30.01.20
✎
14:19
|
(8) нет, где ошибаюсь?
|
|||
11
sasha-asn
30.01.20
✎
14:20
|
(9) каждый живет как может)
|
|||
12
Fish
30.01.20
✎
14:20
|
(10) Читай (4)
|
|||
13
welwel
30.01.20
✎
14:22
|
(12) см. (11) :)
|
|||
14
goodprog
30.01.20
✎
14:22
|
(10) условие никогда не сработает, пиши полную постановку задачи
|
|||
15
ZDenis
30.01.20
✎
14:24
|
Тебе надо хранить прошлую дату в реквизите формы, а потом сравнивать ее с той, которую поставили в доке
|
|||
16
sasha-asn
30.01.20
✎
14:28
|
(15) только созданием реквизита? А нельзя как то сравнивать текущие данные?
типо: ДатаДокументаЗаказПоставщику = ЭтотОбъект.Дата; ЛимитДнейИзменЦен = ЭтотОбъект.Дата + 10*86400; Если ДатаДокументаЗаказПоставщику >= ЛимитДнейИзменЦен Тогда Сообщить("Сработало!"); КонецЕсли |
|||
17
welwel
30.01.20
✎
14:28
|
(10) если без шуток, то, возможно, стоит воспользоваться отладчиком, чтоб увидеть работу кода по шагам и прийти к пониманию, чем опираться на подсказки, не приобретая опыт.
|
|||
18
Fish
30.01.20
✎
14:31
|
(16) А ты (4) внимательно прочитал?
|
|||
19
sasha-asn
30.01.20
✎
14:37
|
(17) (18) (15) (14) Сработало, ВСЕМ ОГРОМНОЕ спасибо! Ваши советы мне помогают по жизни!
ДатаДокументаЗаказПоставщику = ЭтотОбъект.Дата; ЛимитДнейИзменЦен = ЭтотОбъект.Дата + 10*86400; Если ЛимитДнейИзменЦен > ДатаДокументаЗаказПоставщику Тогда Сообщить("Документ можно исправлять только в течение 10 дней"); КонецЕсли |
|||
20
sasha-asn
30.01.20
✎
14:38
|
это то что я хотел!
|
|||
21
azernot
30.01.20
✎
14:40
|
(19)
Мне прямо интересно, при каких условиях условие не сработает? Зачем такие сложности? почему нельзя просто Сообщить("Документ можно исправлять только в течение 10 дней"); |
|||
22
Ненавижу 1С
гуру
30.01.20
✎
14:41
|
+(21) коварное условие просто
|
|||
23
Kigo_Kigo
30.01.20
✎
14:42
|
есть такая проблема что датадокумента в формате дата + время, дата реквизита в основном дата, по этому прежде чем сравнивать надо дату форматнуть в вид даты без времени, тогда будет отрабатывать
|
|||
24
azernot
30.01.20
✎
14:42
|
(22) :)
Мы берём дату, добавляем к ней 10 дней, потом проверяем, а точно дата увеличенная на 10 дней больше изначальной даты? Ожидаемо получаем, что да, точно, и сообщаем пользователю, что разработчик - придурок. |
|||
25
sasha-asn
30.01.20
✎
14:42
|
(21) я ещё дополнительно добавлю для условия роль ... но это уже совсем другая история
|
|||
26
azernot
30.01.20
✎
14:44
|
(25) Спорим ваш код будет ВСЕГДА сообщать, что Документ можно исправлять только в течение 10 дней? Вне зависимости ни от чего.
|
|||
27
sasha-asn
30.01.20
✎
14:44
|
(24) почему сразу ругаться, я ещё условия собираюсь дописать ;)
|
|||
28
azernot
30.01.20
✎
14:45
|
(27) А-а, ну тогда - пардон.
|
|||
29
Fish
30.01.20
✎
14:49
|
(27) Какие именно, если не секрет?
|
|||
30
azernot
30.01.20
✎
14:49
|
А вообще, это натолкнуло меня на мысль об обучении программированию "по бразильской системе": если считается, что какое-то условие ну никогда-никогда не может выполниться, надо вставить в эту веточку Если Тогда что-то типа "Сообщить("Я, <имя рек> - пассивный гомосексуалист!")...
|
|||
31
unregistered
30.01.20
✎
14:50
|
Автор. Открой для себя функцию глобального контекста ТекущаяДата().
Осмелюсь предположить, что именно текущую дату следует сравнивать с десятидневным периодом от даты документа. Ибо дата документа, увеличенная на 10 дней всегда будет больше даты документа. Вечно. |
|||
32
goodprog
30.01.20
✎
14:51
|
(22) я бы даже сказал кровавое
|
|||
33
Kigo_Kigo
30.01.20
✎
14:52
|
Формат('20020820153309', "ДЛФ=Д");
Функция ПроверкаДнейЗаписиКомменатрия() ЛимитДнейИзменЦен = ЭтотОбъект.Дата + 10; Если Формат(ТекущаяДата(),"ДЛФ=Д") >= Формат(ЛимитДнейИзменЦен,"ДЛФ=Д") Тогда Сообщить("Сработало!"); КонецЕсли КонецФункции |
|||
34
Kigo_Kigo
30.01.20
✎
14:53
|
точнее так
Функция ПроверкаДнейЗаписиКомменатрия() ЛимитДнейИзменЦен = ЭтотОбъект.Дата + 10; Если Дата(Формат(ТекущаяДата(),"ДЛФ=Д")) >= Дата(Формат(ЛимитДнейИзменЦен,"ДЛФ=Д")) Тогда Сообщить("Сработало!"); КонецЕсли КонецФункции |
|||
35
goodprog
30.01.20
✎
14:55
|
(34) Ему дней надо, а не секунд
|
|||
36
azernot
30.01.20
✎
14:56
|
(34) Это что?! Это образец индусского кода?
|
|||
37
goodprog
30.01.20
✎
14:56
|
(36) я надеюсь это стеб
|
|||
38
piter3
30.01.20
✎
14:57
|
Ну вы зажигаете тут)
|
|||
39
azernot
30.01.20
✎
15:00
|
(37) Ну для стёба как-то маловато извращений.
Можно ещё сделать так: ЛимитДнейИзменЦен = ЭтотОбъект.Дата; Для Дни = 1 по 10 Цикл //Дни Для Часы = 1 по 24 Цикл //Часы Для Минуты = 1 по 60 Цикл //Минуты Для Секунды = 1 по 60 Цикл //Секунды ЛимитДнейИзменЦен = ЛимитДнейИзменЦен+1; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; |
|||
40
goodprog
30.01.20
✎
15:02
|
Умный пользователь всегда будет держать спорные документы с актуальной для редактирования датой)
|
|||
41
azernot
30.01.20
✎
15:04
|
(40) Раз в 9 дней передвигать их на текущую дату..
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |