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

Даты на каждый день, но без РегламентированныйПроизводственныйКалендарь

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




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



и то приличнее. Хотя и колхоз
   1Сергей
 
12 - 16.04.19 - 12:22
(11) А когда у тебя нет возможности пред/пост обработки запроса? Ну, типа всё сделать в запросе
   catena
 
13 - 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) д поместить начДата;
Выбрать ДобавитьКДате(начДата.д,день, линейка.ч) из начДата начДата,линейка линейка
   sqr4
 
14 - 16.04.19 - 12:23
»
   sqr4
 
15 - 16.04.19 - 12:23
Это твой вопрос колхоз...
   ProxyInspector
 
16 - 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) не намного красивее
   catena
 
20 - 17.04.19 - 06:13
(18)Я скрыла не потому, что неприличное, а потому, что много
   Вася Теркин
 
21 - 17.04.19 - 06:37
(20) Правильно. Краткость - сестра копипасты. А такое даже копипастать не хочется. Тем более руки утруждать набирая 1,2,3,..33...
   Вася Теркин
 
22 - 17.04.19 - 07:37
Хочу функцию, которая создаст МВТ или в переданном МВТ создаст ВТ_ВсеПериодыИнтервала. ДополнитьМВТ(МВТ,")


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