7.7 Сравнение дат

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем alex-79, 28 апр 2007.

  1. TopicStarter Overlay
    alex-79
    Offline

    alex-79 Опытный в 1С

    Регистрация:
    21 сен 2006
    Сообщения:
    643
    Симпатии:
    1
    Баллы:
    29
    Добрый день! Я заметил такую вещь, иногда бывает такая ситуация, когда сравниваешь какую-нибудь дату на попадание в какой-то период (с какой-то датой по какую-то) :

    Если (ВыбДата >= НачДата) и (ВыбДата <= КонДата) Тогда
    ...
    КонецЕсли;

    То условие не выполняется почему-то. Я пробывал делать тестирование и исправление базы и выгрузку/загрузку и не помогает. Обычно такое, бывает если ВыбДата берется из таблицы значений. Я проверял параметры колонки. Там стоит тип значения "Дата". Если даже после получения этого значения из таблицы значений выполнить функцию Дата(...). Всё равно не помогает. Есть ли в 1С возможность преобразования даты в числовое значение?
  2. ЧКДзержинский
    Offline

    ЧКДзержинский Опытный в 1С

    Регистрация:
    7 дек 2006
    Сообщения:
    487
    Симпатии:
    3
    Баллы:
    29
    Раскладываешь дату на день (ДатаДень(дата)), месяц (ДатаМесяц(дата)) и год (ДатаГод(Дата)), ну а потом все это сравниваешь; геморройно конечно, но зато - решение.
  3. TopicStarter Overlay
    alex-79
    Offline

    alex-79 Опытный в 1С

    Регистрация:
    21 сен 2006
    Сообщения:
    643
    Симпатии:
    1
    Баллы:
    29
    Хотя можно дату представить ввиде числового значения и потом сравнивать
  4. X-Man
    Offline

    X-Man Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    428
    Симпатии:
    3
    Баллы:
    29
    Число(выбДата) :unsure:
  5. Steel Rain
    Offline

    Steel Rain Опытный в 1С

    Регистрация:
    29 сен 2006
    Сообщения:
    408
    Симпатии:
    2
    Баллы:
    29
    Простое преобразование даты в число ничего не даст. По моему оно вообще вернет только первые две цифры. А если даже нет, то допустим две даты 20.01.07 и 01.12.07 преобразуем в числа и получим 200107 и 11207 вторая дата больше, а число на выходе меньше, так что лажа.
    А вот вариант предложеный ЧКДзержинский вполне работоспособен.
  6. TopicStarter Overlay
    alex-79
    Offline

    alex-79 Опытный в 1С

    Регистрация:
    21 сен 2006
    Сообщения:
    643
    Симпатии:
    1
    Баллы:
    29
    Есть формула преобразования даты в число
  7. Steel Rain
    Offline

    Steel Rain Опытный в 1С

    Регистрация:
    29 сен 2006
    Сообщения:
    408
    Симпатии:
    2
    Баллы:
    29
    Да, действительно. Не проверивши ляпнул. Число(ПеременнаяСДатой) вполне подходит для выполнения сравнения.
  8. TopicStarter Overlay
    alex-79
    Offline

    alex-79 Опытный в 1С

    Регистрация:
    21 сен 2006
    Сообщения:
    643
    Симпатии:
    1
    Баллы:
    29
    Я говорил не про функции преобразования типов в 1С. Можно самому написать функцию которая переводит дату в число. В принципе на многих сайтах такая формула есть. Обычно ей польхуются программисты которые пишут на C++, Delphi и т.д. Как известно в самом Windows есть проблема сравнения значений типа "Дата".

Поделиться этой страницей