8.х Количество дней в месяце СКД

Тема в разделе "Система компоновки данных (СКД)", создана пользователем Will, 7 мар 2016.

  1. TopicStarter Overlay
    Will
    Offline

    Will Опытный в 1С

    Регистрация:
    15 авг 2012
    Сообщения:
    551
    Симпатии:
    1
    Баллы:
    29
    Здравствуйте!
    Подскажите, как узнать сколько дней в каждом месяце выбранного периода?
    Отчет на СКД.
    Например, отбираю продажи за год.
    Делаю группировку по месяцам: НАЧАЛОПЕРИОДА(Дата, "МЕСЯЦ")
    Подскажите, как напротив каждого месяца вывести, сколько в нем дней?
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Вывести день конца периода даты
    Will нравится это.
  3. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    :D ипать, зачет...
    Will нравится это.
  4. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    НАЧАЛОПЕРИОДА(Дата, "МЕСЯЦ") КАК Месяц
    ДЕНЬ(КонецПЕРИОДА(Дата, "МЕСЯЦ")) КАК количествоДнейВмесяце
    Will нравится это.
  5. TopicStarter Overlay
    Will
    Offline

    Will Опытный в 1С

    Регистрация:
    15 авг 2012
    Сообщения:
    551
    Симпатии:
    1
    Баллы:
    29
    nomad_irk, Draco,
    Спасибо большое!
    Мне нужно было получить периодичность (кол. дней в каждом Месяце) в виде числа.
    Я сделала так:
    Код:
    РазностьДат(НачалоПериода(Дата, "Месяц"), КонецПериода(Дата, "Месяц"), "День") + 1
  6. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Быстрее так работать будет
    НАЧАЛОПЕРИОДА(Дата, "МЕСЯЦ") КАК Месяц
    ДЕНЬ(КонецПЕРИОДА(Дата, "МЕСЯЦ")) КАК количествоДнейВмесяце

    По сути первое поле это ваше - Дата начала месяца - второе поле это дней в этом месяце. Тут две функции (День и конецпериода) у вас же 3 функции + сложение
    Will нравится это.
  7. TopicStarter Overlay
    Will
    Offline

    Will Опытный в 1С

    Регистрация:
    15 авг 2012
    Сообщения:
    551
    Симпатии:
    1
    Баллы:
    29
    ,
    Да, вы правы. Спасибо большое!
  8. TopicStarter Overlay
    Will
    Offline

    Will Опытный в 1С

    Регистрация:
    15 авг 2012
    Сообщения:
    551
    Симпатии:
    1
    Баллы:
    29
    А как быть, если у меня стоит, например,
    Начало периода: 01.01.2015,
    Конец периода: 17.11.2015.
    Мне необходимо получить количество дней в каждом месяце за заданный период.
    Т.е. в итоге с января по октябрь в каждом дней будет стандартное количество дней по календарю,
    а в ноябре должно показать - 17.
    Если это касается года:
    Максимум(РАЗНОСТЬДАТ(&НП, &КП, "ДЕНЬ")) + 1
    А как быть, если нужно группировать по месяцам?
  9. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Ээээ...не совсем понял задачу, но без разницы, какая дата конца периода, если нужно именно показать количество дней месяца.
    Если вам нужно посчитать разницу в днях между определенными датами, то только через РазностьДат(Дата1, Дата2, День).

    Если нужно группировать по месяцам, то за месяц считают какую-то определенную дату, как правило дату начала месяца, и к ней приводят значения.
    Will нравится это.
  10. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    НУ тогда через Выбор Когда пропишите
    Will нравится это.
  11. TopicStarter Overlay
    Will
    Offline

    Will Опытный в 1С

    Регистрация:
    15 авг 2012
    Сообщения:
    551
    Симпатии:
    1
    Баллы:
    29
    Ну например я задала период 05.01.2015 - 17.11.2015.
    Мне вывело:

    Месяц Периодичность дней
    янв. 31
    февр. 28
    март 31
    апр. 30
    май 31
    июнь 30
    июль 31
    авг. 31
    сент. 30
    окт. 31
    нояб. 30
    дек. 31

    А надо:
    Месяц Периодичность дней
    янв. 26
    февр. 28
    март 31
    апр. 30
    май 31
    июнь 30
    июль 31
    авг. 31
    сент. 30
    окт. 31
    нояб. 17
  12. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Как-то так:

    Код:
    Выбор Когда НачалоПериода(&ДатаКон, ДЕНЬ) > НачалоПериода(КонецПериода(Дата, Месяц), ДЕНЬ) Тогда
    День(конецПЕриода(Дата, Месяц))
    ИНАЧЕ
    РазностьДАТ(НачалоПериода(Дата, Месяц), НачалоПериода(Дата, День), ДЕНЬ)
    КОНЕЦ
    Will нравится это.
  13. TopicStarter Overlay
    Will
    Offline

    Will Опытный в 1С

    Регистрация:
    15 авг 2012
    Сообщения:
    551
    Симпатии:
    1
    Баллы:
    29
    Спасибо!
    Конечно может не очень оптимально, но у меня так заработало:
    Код:
    ВЫБОР КОГДА НАЧАЛОПЕРИОДА(Дата, "МЕСЯЦ") = НАЧАЛОПЕРИОДА(&НП, "МЕСЯЦ") ТОГДА
    РАЗНОСТЬДАТ(&НП, КОНЕЦПЕРИОДА(Дата, "МЕСЯЦ"), "ДЕНЬ") + 1
    ИНАЧЕ ВЫБОР КОГДА КОНЕЦПЕРИОДА(Дата, "МЕСЯЦ") = КОНЕЦПЕРИОДА(&КП, "МЕСЯЦ") ТОГДА
    РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(Дата, "МЕСЯЦ"), &КП, "ДЕНЬ") + 1
    ИНАЧЕ ДЕНЬ(КОНЕЦПЕРИОДА(Дата, "МЕСЯЦ")) 
    КОНЕЦ КОНЕЦ
  14. Apelsin
    Offline

    Apelsin

    Регистрация:
    24 мар 2016
    Сообщения:
    6
    Симпатии:
    1
    Баллы:
    1
    таблицу пристегните к запросу с количеством дней в месяцах

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