|   |   | 
| 
 | Сравнение Даты документа с Датой переменной | ☑ | ||
|---|---|---|---|---|
| 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 дней передвигать их на текущую дату..     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |