Имя: Пароль:
1C
1С v8
Интервалы дат в запросе в соответствии с таблицей значений...
0 МикаМ
 
21.02.13
13:43
Подскажите пожалуйста может кто-то сталкивался с такой проблемой

Есть следующий Запрос в котором в "Разница" получается кол-во дней между выпиской документа и оплатой...
"
ВЫБРАТЬ
   Взаиморасчеты.Контрагент КАК Контрагент,
   Взаиморасчеты.ДоговорКонтрагента.Подразделение КАК Подразделение,
   СУММА(Взаиморасчеты.СуммаВзаиморасчетовОборот) КАК Сумма,
   Взаиморасчеты.ДоговорКонтрагента КАК ДоговорКонтрагента,
   РАЗНОСТЬДАТ(Взаиморасчеты.ДокументРасчетовСКонтрагентом.Дата, Взаиморасчеты.Период, ДЕНЬ) КАК Разница,
   Взаиморасчеты.Регистратор
ИЗ
   РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Обороты(, , Регистратор, ) КАК Взаиморасчеты
ГДЕ
   (Взаиморасчеты.Регистратор ССЫЛКА Документ.ПлатежноеПоручениеВходящее
           ИЛИ Взаиморасчеты.Регистратор ССЫЛКА Документ.ПриходныйКассовыйОрдер)

СГРУППИРОВАТЬ ПО
   Взаиморасчеты.Контрагент,
   Взаиморасчеты.ДоговорКонтрагента.Подразделение,
   Взаиморасчеты.ДоговорКонтрагента,
   Взаиморасчеты.Регистратор,
   Взаиморасчеты.Период,
   РАЗНОСТЬДАТ(Взаиморасчеты.ДокументРасчетовСКонтрагентом.Дата, Взаиморасчеты.Период, ДЕНЬ)

УПОРЯДОЧИТЬ ПО
   Подразделение,
   Контрагент,
   ДоговорКонтрагента"

Так же есть таблица значений ТЗ - со значениями интервалов 7, 14, 21...

Вопрос:

Как получить на выходе из запроса чтоб результат можно было вывеси от 1 до 7 дней, от 8 до 14, от 15 до 21 и от 21 и больше...
По кол-ву дней - "Разница" - вывести - абсолютно без проблем - вопрос в том как разделить выводимые данные на необходимые интервалы?
То есть получается что ТЗ нужно подключить к запросу и разбивать данные на интервалы в зависимости от указанных в таблице значений...
Прописать интервалы непосредственно в запросе - делал, но вся проблема в том что и они сами и их кол-во может изменяться...
1 SMakcik
 
21.02.13
13:47
Запиши интервалы или в таблицу значений либо в регистр сведений и выводи как угодно
2 МикаМ
 
21.02.13
13:48
Так они уже в таблице значений - вопрос том как это все подключить верно к запросу...
3 SMakcik
 
21.02.13
13:49
Выборкой из таблицы значений и соеденением
4 МикаМ
 
21.02.13
13:49
ТЗ - Таблица значений
7
14
21
5 SMakcik
 
21.02.13
13:50
Ну а добавить две колонки не судьба?
6 МикаМ
 
21.02.13
13:50
"Выборкой из таблицы значений и соеденением" - вот именно это я и не знаю как бы сделать...
7 МикаМ
 
21.02.13
13:51
Можно хоть 5 колонок - только как их в запросе обрабатывать?
8 SMakcik
 
21.02.13
13:51
Запрос = Новый Запрос("
               |ВЫБРАТЬ
       |    тз.Наименование,
       |    тз.НачалоИнтервала,
       |    тз.КонецИнтервала
       |ПОМЕСТИТЬ тз
       |ИЗ
       |    &тз КАК тз;
9 МикаМ
 
21.02.13
13:57
а как обьединить с основным запросом? подскажи плиз...
10 SMakcik
 
21.02.13
14:00
Блин ну за вас еще надо написать всю программу
11 SMakcik
 
21.02.13
14:01
Соединение типа >= И <= не слыхал
12 SMakcik
 
21.02.13
14:08
т.е ЛЕВОЕ СОЕДИНЕНИЕ .... ПО Разница > ТЗ.НачалоИнтервала И Разница <= ТЗ.КонецИнтервала
13 МикаМ
 
21.02.13
14:28
Спасибо, счас буду пробовать...
14 Xatori
 
21.02.13
15:08
Из того как я понял задачу, я бы добавил колонку с Интервалами и туда присваивал бы значения 7,14,21 через Выбор Когда тогда, и потом подвёл итоги и вуаля, отсортированные записи и перебирать потом удобно.
15 МикаМ
 
21.02.13
15:36
но мы изначально не знаем сколько будет значений... как делать поиск через выбор Когда по Таблице значений?
16 Xatori
 
21.02.13
15:42
ну господи, сделай запрос динамическим, перебирай свою таблицу и добавляй в запрос Выборов сколько надо))
17 МикаМ
 
21.02.13
15:43
низзя динамическим - он у мну в СКД живет )))
18 Xatori
 
21.02.13
15:44
вынь из СКД)) лепи ТЗ нужную и в СКД передавай
19 Xatori
 
21.02.13
15:45
кстати там и итоги сможешь подвести
20 МикаМ
 
21.02.13
15:48
тоже, конечно вариант, но лепить СКД вручную - не так красиво как сделать грамотно запрос - в любом случае если по другому ничего не выйдет, то так и придется делать...
21 Xatori
 
21.02.13
15:49
А есть максимально допустимое число значений в ТЗ?
22 Xatori
 
21.02.13
15:56
Кстати в запросе ты обращаешься к ВТ Регистра накопления, Какой смысл дополнительно группировать записи, если изначально ты их получаешь максимально сгруппированными.
23 МикаМ
 
21.02.13
15:58
может штук 10 - больше врядли кто-то решится - хотя я их думаю брать из справочника "НастройкаИнтервалов" есть у мну такой в конфе - теоретически в нем кол-во интервалов ограничивается только количеством строк в таблице значения...
24 МикаМ
 
21.02.13
16:00
Изначально они сгрупированны не по тем интервалам дат которые мне нужны
25 Xatori
 
21.02.13
16:12
Тогда тут мне кажется без вариантов, делай динамический запрос, и в СКД, другое мне что то ничего не приходит в голову))
Хотя есть мыслишка воспользоваться Шаманом и бубном:)
Программист всегда исправляет последнюю ошибку.