Имя: Пароль:
1C
 
Даты на каждый день, но без РегламентированныйПроизводственныйКалендарь
0 Вася Теркин
 
16.04.19
11:43
Какие есть ещё мысли? Просто по журналам выбирать разные даты документов - по воскресеньям не будет дат. Надо гарантировано без пропусков.
1 1Сергей
 
16.04.19
11:46
2 Вася Теркин
 
16.04.19
11:46
Как-то через скрипты абрахамс вытаскивал когда-то и в запрос передавали... Но параметром как массив дат передавать не желательно
3 rozer76
 
16.04.19
11:49
Функция ПолучитьТаблицуДатЗаПериод(НачДата, КонДата, Интервал)
    
     тзИнтервалов = Новый ТаблицаЗначений;
     тзИнтервалов.Колонки.Добавить("НачИнтервала", Новый ОписаниеТипов("Дата"));
    
     Запрос = Новый Запрос;
     Запрос.Текст = "ВЫБРАТЬ
     |   НАЧАЛОПЕРИОДА(&НачДата, День) КАК НачИнтервала
     |УПОРЯДОЧИТЬ ПО
     |   НачИнтервала
     |ИТОГИ ПО
     |   НачИнтервала ПЕРИОДАМИ("+Интервал+", &НачДата, &КонДата)";
    
     Запрос.УстановитьПараметр("НачДата", НачДата);
     Запрос.УстановитьПараметр("КонДата", КонДата);
    
     Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "НачИнтервала", "ВСЕ");
     Пока Выборка.Следующий() Цикл
         НоваяСтрока = тзИнтервалов.Добавить();
         НоваяСтрока.НачИнтервала = Выборка.НачИнтервала;
     КонецЦикла;
    
     Возврат  тзИнтервалов;
    
КонецФункции
4 RomanYS
 
16.04.19
11:50
(0) генерируемая таблица чисел и ДобавитьКДате
5 1Сергей
 
16.04.19
11:52
(3) такого я ещё не видел.
А как это потом соединять с другими таблицами?
6 Вася Теркин
 
16.04.19
11:53
Остается только в ВТ загрузить... Автоупорядочивание и итоги нельзя...
7 Вася Теркин
 
16.04.19
11:53
(5) Никак. Это решение ради решения.
8 Вася Теркин
 
16.04.19
11:54
(4) Очень плохо, лучше параметром массив дат передавать
\
9 RomanYS
 
16.04.19
11:56
(8) Если есть возможность передать параметром передай, только ТЗ.
В принципе ничего плохого там не вижу: запрос примитивный и не тяжелый.
10 catena
 
16.04.19
12:14
(8)Почему плохо-то?
11 Вася Теркин
 
16.04.19
12:20
(10) Так

    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ТЗ_Дни.День КАК День
        |ПОМЕСТИТЬ ВТ_Дни
        |ИЗ
        |    &ТЗ_Дни КАК ТЗ_Дни
        |;
        |ВЫБРАТЬ..............";




    ТекДата =  НачалоМесяца(ТекущаяДата());
    КонДата =  ТекущаяДата();
    ТЗ = Новый ТаблицаЗначений;
    КвалификаторыДаты = Новый КвалификаторыДаты(ЧастиДаты.ДатаВремя);
    ОписаниеДаты = Новый ОписаниеТипов("Дата", , ,КвалификаторыДаты);
    ТЗ.Колонки.Добавить("День",ОписаниеДаты);
    Пока НачалоДня(ТекДата) <= КонДата Цикл
        стр = ТЗ.Добавить();
        Стр.День = ТекДата;
        ТекДата = КонецДня(ТекДата) + 1;
    КонецЦикла;
    Запрос.УстановитьПараметр("ТЗ_Дни",ТЗ);



и то приличнее. Хотя и колхоз
12 1Сергей
 
16.04.19
12:22
(11) А когда у тебя нет возможности пред/пост обработки запроса? Ну, типа всё сделать в запросе
13 catena
 
16.04.19
12:23
(11)Ты ответь, почему так неприлично?

Выбрать 0 ч поместить тч объединить все Выбрать 1 объединить все Выбрать 2 объединить все Выбрать 3
объединить все Выбрать 4 объединить все Выбрать 5 объединить все Выбрать 6 объединить все Выбрать 7
  объединить все Выбрать 8 объединить все Выбрать 9;
Выбрать различные тч5.ч*10000+тч4.ч*1000+тч3.ч*100+тч2.ч*10+тч1.ч ч поместить линейка из тч тч1,тч тч2,тч тч3,тч тч4,тч тч5;
Выбрать ДатаВремя(1900,1,1) д поместить начДата;
Выбрать ДобавитьКДате(начДата.д,день, линейка.ч) из начДата начДата,линейка линейка
14 sqr4
 
16.04.19
12:23
(11) ВЫБРАТЬ
    ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) КАК Период
ИЗ
    (ВЫБРАТЬ
        0 КАК a
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        1
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        2
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        3
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        4
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        5
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        6
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        7
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        8
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        9) КАК aa
        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            0 КАК b
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            1
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            3
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            4
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            5
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            6
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            7
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            8
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            9) КАК bb
        ПО (ИСТИНА)
        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            0 КАК c
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            1
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            3
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            4
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            5
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            6
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            7
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            8
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            9) КАК cc
        ПО (ИСТИНА)
        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            0 КАК d
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            1
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            3
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            4
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            5
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            6
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            7
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            8
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            9) КАК dd
        ПО (ИСТИНА)
ГДЕ
    aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)
15 sqr4
 
16.04.19
12:23
Это твой вопрос колхоз...
16 ProxyInspector
 
16.04.19
12:23
ТекстЗапроса = "
|ВЫБРАТЬ РАЗЛИЧНЫЕ
|НАЧАЛОПЕРИОДА(ДатаДень, %ВидИнтервала%) КАК ДатаЦены    //КонецПериода или конец отчета
|ИЗ
|    (
|    ВЫБРАТЬ
|        ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), ГОД, ТГоды.Год - 1), МЕСЯЦ, ТМесяцы.Месяц - 1), ДЕНЬ, ТДни.День - 1) КАК ДатаДень
|    ИЗ
|            (
|        ВЫБРАТЬ 1 КАК День    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 2  
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 3  
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 4    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 5    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 6    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 7    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 8    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 9    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 10    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 11    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 12    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 13    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 14    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 15    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 16    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 17    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 18    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 19    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 20    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 21    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 22    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 23    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 24    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 25    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 26    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 27    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 28    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 29    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 30    
|        ОБЪЕДИНИТЬ  ВЫБРАТЬ 31   ) КАК ТДни
|            ПОЛНОЕ СОЕДИНЕНИЕ
|            (
|                ВЫБРАТЬ 1 КАК Месяц        
|                ОБЪЕДИНИТЬ ВЫБРАТЬ 2
|                ОБЪЕДИНИТЬ ВЫБРАТЬ 3
|            ОБЪЕДИНИТЬ ВЫБРАТЬ 4
|            ОБЪЕДИНИТЬ ВЫБРАТЬ 5
|            ОБЪЕДИНИТЬ ВЫБРАТЬ 6
|                ОБЪЕДИНИТЬ ВЫБРАТЬ 7
|            ОБЪЕДИНИТЬ ВЫБРАТЬ 8
|            ОБЪЕДИНИТЬ ВЫБРАТЬ 9
|            ОБЪЕДИНИТЬ ВЫБРАТЬ 10
|            ОБЪЕДИНИТЬ ВЫБРАТЬ 11
|            ОБЪЕДИНИТЬ ВЫБРАТЬ 12) КАК ТМесяцы ПО (ИСТИНА)
|        
|            ПОЛНОЕ СОЕДИНЕНИЕ
|                (ВЫБРАТЬ 2009 КАК Год        
|                ОБЪЕДИНИТЬ ВЫБРАТЬ 2010
|                ОБЪЕДИНИТЬ ВЫБРАТЬ 2011
|                ОБЪЕДИНИТЬ ВЫБРАТЬ 2012
|                ОБЪЕДИНИТЬ ВЫБРАТЬ 2013
|                ОБЪЕДИНИТЬ ВЫБРАТЬ 2014
|                ОБЪЕДИНИТЬ ВЫБРАТЬ 2015
|                ОБЪЕДИНИТЬ ВЫБРАТЬ 2016
|                ОБЪЕДИНИТЬ ВЫБРАТЬ 2017
|                ОБЪЕДИНИТЬ ВЫБРАТЬ 2018
|                ОБЪЕДИНИТЬ ВЫБРАТЬ 2019
|                ОБЪЕДИНИТЬ ВЫБРАТЬ 2020 ) КАК ТГоды ПО (ИСТИНА)
|            ГДЕ
|            ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), ГОД, ТГоды.Год - 1), МЕСЯЦ, ТМесяцы.Месяц - 1), ДЕНЬ, ТДни.День - 1) МЕЖДУ &ДатаНачала И &ДатаОкончания
|    )КАК СписокДат
|УПОРЯДОЧИТЬ ПО ДатаЦены
|";

Вот кто-то умный делал. Работает. Можно по дням, неделям и т.д.
17 Вася Теркин
 
17.04.19
06:03
(11) Тогда придется. И почему платформа в языке не создала возможность генерить последовательности. Стандартная задача.
18 Вася Теркин
 
17.04.19
06:05
(13) Я говорил про (1) и (14). Сама же скрыла это неприличное
19 Вася Теркин
 
17.04.19
06:06
Да и (16) не намного красивее
20 catena
 
17.04.19
06:13
(18)Я скрыла не потому, что неприличное, а потому, что много
21 Вася Теркин
 
17.04.19
06:37
(20) Правильно. Краткость - сестра копипасты. А такое даже копипастать не хочется. Тем более руки утруждать набирая 1,2,3,..33...
22 Вася Теркин
 
17.04.19
07:37
Хочу функцию, которая создаст МВТ или в переданном МВТ создаст ВТ_ВсеПериодыИнтервала. ДополнитьМВТ(МВТ,")