[РЕШЕНО] Как в запросе из даты вычесть один день

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем MyNameNoName, 30 окт 2014.

  1. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Добрый день.
    Как в запросе из даты вычесть один день.
    Если в обычном коде то достаточно отнять 86400, а в запросе как не пробовал, не помогает.
    Спасибо за помощь.
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    РазностьДат()
    --- Объединение сообщений, 30 окт 2014 ---
    РАЗНОСТЬДАТ(<Дата1>,<Дата2>,<Тип>), где <Тип> (СЕКУНДА,ДЕНЬ,МЕСЯЦ)
    MyNameNoName нравится это.
  3. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Отчет на СКД. Необходимо как я понимаю (в графическом интерфейсе) на вкладке таблицы и поля в поля какое-то выражение написать?
  4. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    А разве мне разностьдат подойдет?
    Код:
    ВЫБОР
        КОГДА РаботникиОрганизаций.Период ЕСТЬ НЕ NULL
            ТОГДА РАЗНОСТЬДАТ(РаботникиОрганизаций.Период,1,ДЕНЬ)
    КОНЕЦ
  5. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Это я для запроса написал.
    MyNameNoName нравится это.
  6. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Так мне нужно не из даты дату вычесть, а из даты один день вычесть.
  7. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    MyNameNoName
    ДОБАВИТЬКДАТЕ(<Дата>, <Тип>, <Количество>)
    MyNameNoName нравится это.
  8. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Спасибо, то что нужно! А где эту информацию вы находите? Я в синтаксис-помощнике через справку смотрю, там нет.
  9. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Про агрегатные функции читайте, для запросов.
  10. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    эм.. где изначально нашел затрудняюсь сказать, давно ведь было.
    Вообще в конструкторе запросов можно (там где поля выборки) нажать кнопку "добавить" и там (в правой части) перечислены все доступные функции работы с полями.
  11. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    А как в параметрах (в СКД) вычесть один день? Там не добавить к дате, ни простое вычетание 86400 не работают? Сначала данные передать во временную таблицу? Есть ли другой выход?
  12. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Вопрос не понятен.
    Параметр СКД ведь точно также передается в запрос. В запросе от параметра и отнимать.
    MyNameNoName нравится это.
  13. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Я имею ввиду немножко не это. Я в запросе на вкладке Таблица и поля из Периода отнимаю один день. И в условиях для этого же периода задаю условие. В результате, когда я например, формирую отчет за 1.10-1.10, мне данные выводятся за 30.09.
    Я думаю что в самом СКД на вкладке Параметры мне нужно добавить два новых параметра, и как то в выражении отнять один день, т.е. условие будет типа &Период-86400.
  14. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    чую, решение задачи вы выбрали малость через одно место и поэтому теперь приходится извращаться с датами.
    зачем вообще нужны эти манипуляции с датами?
    MyNameNoName нравится это.
  15. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Я выбираю дату увольнения сотрудников, а в регистре РаботникиОрганизаций она на один день позже (т.е. там фактически дата освобождения должности).
  16. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    так в запросе, в поле прям и напишите
    ДОБАВИТЬКДАТЕ(<ПолеДатыУвольнения>, День, -1)

    Зачем еще в параметрах запроса и в полях СКД мудрить с отниманием дня?
    MyNameNoName нравится это.
  17. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    У меня так не сработало, немножко по другому.
    В само поле я понятное дело тэто условиде добавил. Еще его необходимо было и в само условие добавить:
    ДОБАВИТЬКДАТЕ(РаботникиОрганизаций.Период, ДЕНЬ, -1) МЕЖДУ &ДатаНачалаОтчета И &ДатаОкончанияОтчета
    После этого стало корректно выводить данные. А до этого получалось, что данные отбирались по одному значению, а выводились по другому.
    Спасибо. Вопрос решен.

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