Имя: Пароль:
1C
1С v8
Запрос по времени документа
,
0 Sasha_uu
 
08.11.11
14:52
Как в запросе проверить попадает ли конкретный документ в определенный временной интервал или нет. Т.е. формируется отчет по документам отгрузки, надо определить в какой временной интервал попадает документ. Время: 8.00 - 8.10 - 8.20 - 8.30 - 8.40 - 8.50 - 9.00 и т.д.
1 GROOVY
 
08.11.11
14:53
Что в итоге должен вернуть запрос?
2 Не Печенкин
 
08.11.11
14:58
ВЫБРАТЬ
   ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(Документ.Дата, ЧАС), СЕКУНДА, (ВЫРАЗИТЬ((СЕКУНДА(Документ.Дата) - 5) / 10 КАК ЧИСЛО(2, 0))) * 10) КАК Начало10Минутки
3 Sasha_uu
 
08.11.11
15:01
Пользователь задает интервал в минутах за который он хочет посчитать количество документов. Т.е. например пользователь задает 60 минут, отчет должен выдать с 8.00-9.00 было 10 документов создано, с 9.00-10.00 было 15 документов и т.д.
4 Sasha_uu
 
08.11.11
15:02
Как этот отчет можно прописать в СКД?
5 Maxus43
 
08.11.11
15:03
в СКД легко
6 Sasha_uu
 
08.11.11
15:03
(5) как?
7 Не Печенкин
 
08.11.11
15:03
(6) да дело даже не в СКД, смотри (2)
8 Maxus43
 
08.11.11
15:05
(6) хотя мышкой в СКД можно только период дополнения фиксированный прописать. тут надо имхо вариантами отчета уже играть
9 Sasha_uu
 
08.11.11
15:08
(2) не понял что за конструкция
10 Не Печенкин
 
08.11.11
15:09
(9) это пипец полный, это конструкция для запроса
11 Sasha_uu
 
08.11.11
15:11
я это понел....но что она возвращает...
12 Не Печенкин
 
08.11.11
15:12
(11) начало интервала (в данном случае начало 10-минутки)
13 Sasha_uu
 
08.11.11
15:13
как мне проверить в какой временной интервал попадает документ?
14 Не Печенкин
 
08.11.11
15:14
(13) вопрос же стоит не проверить, а подсчитать количество
15 Sasha_uu
 
08.11.11
15:16
не могу сообразить как это все оформить в запрос
16 Нуф-Нуф
 
08.11.11
15:17
Получить таблицу границ периодов, левым соединением к ней присоединить документ и его время по >= и получить
и получить минимальное
17 Не Печенкин
 
08.11.11
15:17
(15) так понятнее, например:

ВЫБРАТЬ
   ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(Документ.Дата, ЧАС), СЕКУНДА, (ВЫРАЗИТЬ((СЕКУНДА(Документ.Дата) - 5) / 10 КАК ЧИСЛО(2, 0))) * 10) КАК Начало10Минутки,
   СУММА(1) КАК Количество
ИЗ
   Документ.РеализацияТоваровУслуг КАК Документ
ГДЕ
   НАЧАЛОПЕРИОДА(Документ.Дата, ДЕНЬ) = &Дата
СГРУППИРОВАТЬ ПО
   ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(Документ.Дата, ЧАС), СЕКУНДА, (ВЫРАЗИТЬ((СЕКУНДА(Документ.Дата) - 5) / 10 КАК ЧИСЛО(2, 0))) * 10)
18 Нуф-Нуф
 
08.11.11
15:18
туплю.
получить таблицу документов и времени, получить таблицу границ периодов,
соединить их полным соединением по условию >= и сгруппировать по мин времени
19 Не Печенкин
 
08.11.11
15:18
(18) не фига себе ))
20 Нуф-Нуф
 
08.11.11
15:21
(19) эээ?..
21 Нуф-Нуф
 
08.11.11
15:21
это перекликается с задачей цены на дату документа
22 Не Печенкин
 
08.11.11
15:21
(20) сложно что-то
23 Starhan
 
08.11.11
15:24
(3) а с куяли пользователь ввел 60 минут, а ты телепатировал и оперделл что час располагается между 8:00 и 9:00 Где об этом сказанно?
24 Starhan
 
08.11.11
15:24
(23)а пля понял.
25 Starhan
 
08.11.11
15:25
(23) хотя один хрен не скзаанно откуда до куда считать
26 Sasha_uu
 
08.11.11
15:27
кк это все оформить в СКД. в отчете должны быть колонки временные интервалы 8.00-8.10-8.20 и т.д. В строках торговые представители
27 Нуф-Нуф
 
08.11.11
15:27
как-то так:

ВЫБРАТЬ
   ТаблицаПериодовВремени.ПериодВремени
ПОМЕСТИТЬ ТаблицаПериодовВремени
ИЗ
   ТаблицаПериодовВремени КАК ТаблицаПериодовВремени
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВнутреннийЗаказ.Ссылка,
   ВнутреннийЗаказ.Дата
ПОМЕСТИТЬ ТаблицаДокументов
ИЗ
   Документ.ВнутреннийЗаказ КАК ВнутреннийЗаказ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТаблицаПериодовВремени.ПериодВремени,
   ТаблицаДокументов.Дата,
   ТаблицаПериодовВремени.ПериодВремени КАК ПериодВремени1
ПОМЕСТИТЬ ИтоговаяТаблица
ИЗ
   ТаблицаДокументов КАК ТаблицаДокументов
       ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаПериодовВремени КАК ТаблицаПериодовВремени
       ПО ТаблицаДокументов.Дата <= ТаблицаПериодовВремени.ПериодВремени
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ИтоговаяТаблица.Дата,
   МИНИМУМ(ИтоговаяТаблица.ПериодВремени1) КАК ПериодВремени1
ИЗ
   ИтоговаяТаблица КАК ИтоговаяТаблица

СГРУППИРОВАТЬ ПО
   ИтоговаяТаблица.Дата
28 Нуф-Нуф
 
08.11.11
15:27
за достоверность не отвечаю так как нет таблицы времени чтобы потестить
29 Не Печенкин
 
08.11.11
15:31
(27) ну оформить то всегда можно в СКД - как обычно
30 Axel2009
 
08.11.11
15:33
100 баксов
31 Sasha_uu
 
08.11.11
15:39
(27) как заполняется таблица ТаблицаПериодовВремени?
32 Нуф-Нуф
 
08.11.11
15:40
(31) заполняется до запроса как временная таблица исходя из твоих условий - 10 мин, 60 мин и т.д.
33 Sasha_uu
 
08.11.11
15:41
в самой схеме скд эту таблицу как можно заполнить
34 Нуф-Нуф
 
08.11.11
15:45
(33) пока хз. это нужно кодом заполнять.
сделай программное исполнение скд. формируй таблицу значений, подсовывай ее в скд как источник данных и используй в запросе скд
35 Sasha_uu
 
08.11.11
15:56
(34) со скд работаю впервые. если есть пример, можеш скинуть?
36 Нуф-Нуф
 
08.11.11
16:00
вот тут куча примеров по скд http://1cskd.ru/
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший