Вход | Регистрация

Информационные технологии :: Математика и алгоритмы

Получение месяцев с определенной периодичностью

Получение месяцев с определенной периодичностью
Я
   МешочекЗнаний
 
22.02.18 - 09:45
Приветствую уважаемые.

Второй час бьюсь вроде бы над простой задачей - необходимо получить месяца с определённой периодичностью. Не получается вывести формулу для запроса.

Например начисления происходят с 01.02.2018 с периодичностью в 3 месяца. В итоге должны быть месяца
01.02.2018
01.05.2018
01.08.2018
01.11.2018
 
 
   Mort
 
1 - 22.02.18 - 09:47
НачалоПериода(, КВАРТАЛ)
   Mort
 
2 - 22.02.18 - 09:48
А через ДобавитьКДате выходим на нужное смещение
   МешочекЗнаний
 
3 - 22.02.18 - 09:48
(2) А если периодичность раз в 6 месяцев, или раз 2 месяца. Нужна универсальная формула
   Asmody
 
4 - 22.02.18 - 09:49
(0) Найди на ИС статью про порождающие запросы, сформируй ВТ с нужными числами, и ДобавитьКДате
   Малыш Джон
 
5 - 22.02.18 - 10:00
(0) не очень понял

то есть имеется определенный регистр с начислениями и надо оттуда вытащить начала месяцев с определенной периодичностью?
   Малыш Джон
 
6 - 22.02.18 - 10:00
или самому сформировать табличку с такими месяцами?
   Mort
 
7 - 22.02.18 - 10:04
ВЫБРАТЬ ДОБАВИТЬКДАТЕ(&ИсходнаяДата, МЕСЯЦ, (ВЫРАЗИТЬ((РАЗНОСТЬДАТ(&ИсходнаяДата, &ТекущаяДата, МЕСЯЦ)-0.5)/&Периодичность КАК Число(10,0))) * &Периодичность ) КАК Результат

Где
&ИсходнаяДата - с которой начинается отсчет
&Периодичность - периодичность месяцев (целое число)
&ТекущаяДата - дату, которую нужно привести
   Timon1405
 
8 - 22.02.18 - 10:08
(7) и где здесь таблица из 4х дат как в примере (0)?
   МешочекЗнаний
 
9 - 22.02.18 - 10:09
(6) Да, саму таблицу создать. Порождающий запрос похоже на то что мне нужно, пока разбираюсь.
   Ненавижу 1С
 
10 - 22.02.18 - 10:10
зачем порождающий, если можно таблицу значений передать во временную таблицу запроса?
 
 Рекламное место пустует
   Ненавижу 1С
 
11 - 22.02.18 - 10:13
НашаДата = Дата(2018,2,1);
Для й=1 по ЧислоПериодов Цикл
  Стр = ТЗ.Добавить();
  Стр.Период = НашаДата;
  НашаДата = ДобавитьМесяц(НашаДата,КоличествоМесяцев);
КонецЦикла;
   МешочекЗнаний
 
12 - 22.02.18 - 10:18
(11) Не стану же я тут описывать задачу целиком, для упрощения я привёл пример что мне нужно - получить месяца в запросе (т.к. от многих условий дата и периодичность может меняться).
Решение в лоб есть, но оно медленное, поэтому сейчас оптимизирую.
   тарам пам пам
 
13 - 22.02.18 - 12:06
(12) Как можно это умудриться сделать медленно? Если нужно прямо в запросе, можно так например сделать (при желании можно не 256 номеров сделать, а 65536, чтобы уж точно нужный период вошел):

ВЫБРАТЬ
    0 КАК Номер
ПОМЕСТИТЬ ВТНомера2

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

ВЫБРАТЬ
    1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТНомера2.Номер + ВТНомера21.Номер * 2 КАК Номер
ПОМЕСТИТЬ ВТНомера4
ИЗ
    ВТНомера2 КАК ВТНомера2,
    ВТНомера2 КАК ВТНомера21
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТНомера4.Номер + ВТНомера41.Номер * 4 КАК Номер
ПОМЕСТИТЬ ВТНомера16
ИЗ
    ВТНомера4 КАК ВТНомера4,
    ВТНомера4 КАК ВТНомера41
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТНомера16.Номер + ВТНомера161.Номер * 16 КАК Номер
ПОМЕСТИТЬ ВТНомера256
ИЗ
    ВТНомера16 КАК ВТНомера16,
    ВТНомера16 КАК ВТНомера161
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДОБАВИТЬКДАТЕ(&НачалоПериода, МЕСЯЦ, ВТНомера256.Номер * &Периодичность) КАК Период
ИЗ
    ВТНомера256 КАК ВТНомера256
ГДЕ
    ДОБАВИТЬКДАТЕ(&НачалоПериода, МЕСЯЦ, ВТНомера256.Номер * &Периодичность) <= &КонецПериода

УПОРЯДОЧИТЬ ПО
    Период

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует