|   |   | 
| 
 | Даты на каждый день, но без РегламентированныйПроизводственныйКалендарь | ☑ | ||
|---|---|---|---|---|
| 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 | 
        Хочу функцию, которая создаст МВТ или в переданном МВТ создаст ВТ_ВсеПериодыИнтервала. ДополнитьМВТ(МВТ,")     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |