Перейти к содержимому

Перейти
Перейти

генерация периодов

периоды

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1   qwert2014

qwert2014

      Рядовой

    • Пользователи
    • Сообщений: 6
    • Регистрация: 10-February 15

Отправлено 10 February 2015 - 14:37

Задача простая, но то ли пятница, то ли ошибка в ДНК. 

Дано - 2 даты, периодичность(день, неделя,месяц,квартал,год)
Задача - разбить исходный интервал по переодичности. Например
дата 1 - 01.01.15
Дата 2 - 01.03.15
Периодичность - месяц. 

Тогда должно сформироваться 3 записи
01.01.15 -31.01.15
01.02.15 - 28.02.15
01.03.15 - 30.03.15

В идеале - сделать запросом, ибо скуль простаивает.
 

 


  • 0

#2   Dimarik_C

Dimarik_C

      Рядовой

    • Пользователи
    • Сообщений: 3
    • Регистрация: 10-February 15

Отправлено 10 February 2015 - 14:40

ВЫБРАТЬ
ХранилищеПериодов.Месяц
ПОМЕСТИТЬ Месяца
ИЗ
РегистрСведений.ХранилищеПериодов КАК ХранилищеПериодов
ГДЕ
ХранилищеПериодов.Месяц <= (РАЗНОСТЬДАТ(&ДатаНачала, &КонецПериода, МЕСЯЦ))+1

;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Месяца.Месяц,
НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&ДатаНачала, МЕСЯЦ, Месяца.Месяц-1), МЕСЯЦ) КАК ДатаНач,
КОНЕЦПЕРИОДА(НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&ДатаНачала, МЕСЯЦ, Месяца.Месяц-1), МЕСЯЦ), МЕСЯЦ) КАК ДатаКон
ИЗ
Месяца КАК Месяца

УПОРЯДОЧИТЬ ПО
ДатаНач


  • 1

#3   rutadmeen

rutadmeen

      Рядовой

    • Пользователи
    • Сообщений: 4
    • Регистрация: 16-July 15

Отправлено 16 July 2015 - 12:16

такая штука, кстати, реализована, например, в конфигурации 1С Консолидация. Можно там подсмотреть.


  • 0

#4   Slava_

Slava_

      Рядовой

    • Пользователи
    • Сообщений: 3
    • Регистрация: 05-February 16

Отправлено 05 February 2016 - 17:43

Все проще через временную таблицу:

Запрос = Новый Запрос;
МенеджерВременныхТаблиц = Запрос.МенеджерВременныхТаблиц;
 
Запрос.Текст = "ВЫБРАТЬ
               | &ДатаНачала,
               | &ДатаОкончания
               |ПОМЕСТИТЬ ПериодыДат";
Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
  
Запрос.Выполнить();

отработать в цикле по датам

 

 


  • 0

#5   32ops

32ops

      Рядовой

    • Пользователи
    • Сообщений: 3
    • Регистрация: 23-February 14

Отправлено 19 March 2016 - 06:04

можно воспользоваться этим

Код генерации по дням

ВЫБРАТЬ
    0 КАК Цифра
ПОМЕСТИТЬ ВсеЦифры

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    1

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    3

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    4

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    5

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    6

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    7

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    8

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    9
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
    ДОБАВИТЬКДАТЕ(&ДатаНач, ДЕНЬ, ВсеЦифры4.Цифра * 1000 + ВсеЦифры3.Цифра * 100 + ВсеЦифры2.Цифра * 10 + ВсеЦифры1.Цифра * 1) КАК ДатаДень
ПОМЕСТИТЬ ВсеДни
ИЗ
    ВсеЦифры КАК ВсеЦифры1
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВсеЦифры КАК ВсеЦифры2
        ПО (ВсеЦифры2.Цифра * 10 + ВсеЦифры1.Цифра * 1 <= РАЗНОСТЬДАТ(&ДатаНач, КОНЕЦПЕРИОДА(&ДатаКон, ДЕНЬ), ДЕНЬ))
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВсеЦифры КАК ВсеЦифры3
        ПО (ВсеЦифры3.Цифра * 100 + ВсеЦифры2.Цифра * 10 + ВсеЦифры1.Цифра * 1 <= РАЗНОСТЬДАТ(&ДатаНач, КОНЕЦПЕРИОДА(&ДатаКон, ДЕНЬ), ДЕНЬ))
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВсеЦифры КАК ВсеЦифры4
        ПО (ВсеЦифры4.Цифра * 1000 + ВсеЦифры3.Цифра * 100 + ВсеЦифры2.Цифра * 10 + ВсеЦифры1.Цифра * 1 <= РАЗНОСТЬДАТ(&ДатаНач, КОНЕЦПЕРИОДА(&ДатаКон, ДЕНЬ), ДЕНЬ))


  • 0



Похожие темы

  Название темы Автор Статистика Последнее сообщение



Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных