Имя: Пароль:
1C
1С v8
Даты в запросе (подобие метода дополнения)
,
0 AaNnDdRrEeYy
 
18.07.12
11:58
В запрос передаются два параметра &ДатаНачала и &ДатаКонца
&ДатаНачала = 01.01.2012
&ДатаКонца  = 05.01.2012
как написать запрос результатом которого будет одна колонка
01.01.2012
02.01.2012
03.01.2012
04.01.2012
05.01.2012

метод дополнения в скд не предлагать, это нужно в запросе.
1 andrewks
 
18.07.12
11:59
300 рэ
2 Ненавижу 1С
 
гуру
18.07.12
12:00
(1) а если есть регламентированный календарь?
3 andrewks
 
18.07.12
12:01
(2) ок, сделаю скидку - 250 рэ
4 Rebelx
 
18.07.12
12:01
или курсы валют...
5 Kashemir
 
18.07.12
12:01
Без регламентированного

ВЫБРАТЬ
   ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, 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) <= &КонецПериода
6 ProgAL
 
18.07.12
12:01
Сделай таблицу значений и выполни к ней запрос.
7 AaNnDdRrEeYy
 
18.07.12
12:01
(2)нет нету никакого календаря, только два параметра, никакие таблицы из базы данных  не должны использоваться
8 andrewks
 
18.07.12
12:02
задание при приёме на работу?
9 AaNnDdRrEeYy
 
18.07.12
12:04
(5)Спасибо, работает.
(6)нет таблицу значений нельзя, теряется вся прелесть СКД.
10 AaNnDdRrEeYy
 
18.07.12
12:04
(8)Нет, просто дурацкий отчет
11 hhhh
 
18.07.12
12:11
(9) да нет, как раз наоборот: с таблицами значений как раз по-настоящему начинаешь ощущать все прелести СКД.
12 Нуф-Нуф
 
18.07.12
12:13
через вложенную схему скд?
13 AaNnDdRrEeYy
 
18.07.12
12:38
(11)через таблицу делал когда надо было еще и период задавать, не просто дни добавлять а недели, месяцы или кварталы

теперь получается такая таблица

Показатель   Дата        Уровень  
значение 1   01.01.2012     0
значение 1   02.01.2012     1
значение 1   03.01.2012     1
значение 1   04.01.2012     0
значение 1   05.01.2012     0

значение 2   01.01.2012     1
значение 2   02.01.2012     0
значение 2   03.01.2012     1
значение 2   04.01.2012     0
значение 2   05.01.2012     1

Нужно сделать увеличение Уровень на 1 для показателя "значение 2"
что бы было так

Показатель   Дата        Уровень  
значение 1   01.01.2012     0
значение 1   02.01.2012     1
значение 1   03.01.2012     1
значение 1   04.01.2012     0
значение 1   05.01.2012     0

значение 2   01.01.2012     2
значение 2   02.01.2012     0
значение 2   03.01.2012     2
значение 2   04.01.2012     0
значение 2   05.01.2012     2

показателей может быть много и уровень должен увеличиваться на 1. т.е для третьего 3 , четвертого 4 и т.д
14 Kashemir
 
18.07.12
12:43
(13) Не понятно что ты хочешь, но подозреваю что тебе нужно пронумеровать каждое уникальное значение и собственно этот же номер можно использовать как нужное слагаемое
15 AaNnDdRrEeYy
 
18.07.12
12:52
Эти данные будут выводиться в диаграмму с типом график, по горизонтали даты по вертикали Уровень (это ресурс), Значение это точка.

если все записи в колонке Уровень будут иметь одинаковое значение (например 1) то они все сольються в одной линии а мне надо их как бы приподнять одна над другой.

сейчас это выглядит так
  ___
__| | |____

надо так
  ___
 |_  |
__| |_|____
16 AaNnDdRrEeYy
 
18.07.12
12:53
[code]
  ___
__| | |____
надо так
  ___
 |_  |

__| |_|____

[/code]
17 Kashemir
 
18.07.12
13:00
(15) Ну так у тебя же есть какой-то критерий/ии уникальности записи ? Пронумеруй и используй
18 Maxus43
 
18.07.12
13:03
зачем в КЗ? запрос (5) копия как раз статьи в КЗ
19 Maxus43
 
18.07.12
13:07
20 Kashemir
 
18.07.12
13:22
+(17) Пример на твоих данных
http://s014.radikal.ru/i329/1207/73/c5bc6e3fee75.jpg


ВЫБРАТЬ
   Табличко.Показатель,
   Табличко.Дата,
   Табличко.Уровень
ПОМЕСТИТЬ Табличко
ИЗ
   &Табличко КАК Табличко
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Табличко.Показатель
ПОМЕСТИТЬ УникальныеЗначенияПоказателей
ИЗ
   Табличко КАК Табличко

СГРУППИРОВАТЬ ПО
   Табличко.Показатель
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Табличко.Показатель,
   Табличко.Дата,
   Табличко.Уровень + ВложенныйЗапрос.ПорядковыйНомер - 1 КАК Поле1
ИЗ
   Табличко КАК Табличко
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           КОЛИЧЕСТВО(УникальныеЗначенияПоказателей1.Показатель) КАК ПорядковыйНомер,
           УникальныеЗначенияПоказателей.Показатель КАК Показатель
       ИЗ
           УникальныеЗначенияПоказателей КАК УникальныеЗначенияПоказателей
               ВНУТРЕННЕЕ СОЕДИНЕНИЕ УникальныеЗначенияПоказателей КАК УникальныеЗначенияПоказателей1
               ПО УникальныеЗначенияПоказателей.Показатель <= УникальныеЗначенияПоказателей1.Показатель
       
       СГРУППИРОВАТЬ ПО
           УникальныеЗначенияПоказателей.Показатель) КАК ВложенныйЗапрос
       ПО Табличко.Показатель = ВложенныйЗапрос.Показатель
21 AaNnDdRrEeYy
 
18.07.12
14:34
(20)ну почти
после выполнения запроса по строчке
значение 1   01.01.2012     0
должно было остаться 0
Спасибо.
22 Kashemir
 
18.07.12
14:53
(21) Так и осталось - просто упорядочивание показателей шло в другом порядке. Смени <= на >= и для конкретного примера будет +0 у показателя 1, а не у показателя 2
23 AaNnDdRrEeYy
 
18.07.12
15:12
Немножко переделал, вычисляю максимум по показателю и все  уровни что меньше
обнуляю.
Получилось то что нужно

ВЫБРАТЬ
   Табличко.Показатель,
   Табличко.Дата,
   Табличко.Уровень
ПОМЕСТИТЬ Табличко
ИЗ
   &Табличко КАК Табличко
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
   Табличко.Показатель
ПОМЕСТИТЬ УникальныеЗначенияПоказателей
ИЗ
   Табличко КАК Табличко

СГРУППИРОВАТЬ ПО
   Табличко.Показатель
;



////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
   Табличко.Показатель,
   Табличко.Дата,
   Табличко.Уровень + ВложенныйЗапрос.ПорядковыйНомер - 1 КАК Поле1
   ПОМЕСТИТЬ Промунерованная  

ИЗ
   Табличко КАК Табличко
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           КОЛИЧЕСТВО(УникальныеЗначенияПоказателей1.Показатель) КАК ПорядковыйНомер,
           УникальныеЗначенияПоказателей.Показатель КАК Показатель
       ИЗ
           УникальныеЗначенияПоказателей КАК УникальныеЗначенияПоказателей
               ВНУТРЕННЕЕ СОЕДИНЕНИЕ УникальныеЗначенияПоказателей КАК УникальныеЗначенияПоказателей1
               ПО УникальныеЗначенияПоказателей.Показатель <= УникальныеЗначенияПоказателей1.Показатель
       
       СГРУППИРОВАТЬ ПО
           УникальныеЗначенияПоказателей.Показатель) КАК ВложенныйЗапрос
       ПО Табличко.Показатель = ВложенныйЗапрос.Показатель

///////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Промунерованная.Показатель,
   МАКСИМУМ(Промунерованная.Уровень) КАК Уровень
ПОМЕСТИТЬ МаксимумПоПоказателю
ИЗ
   Промунерованная КАК Промунерованная

СГРУППИРОВАТЬ ПО
   Промунерованная.Показатель
;
/////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
   Промунерованная.Показатель,
   Промунерованная.Дата,
   ВЫБОР
       КОГДА Промунерованная.Уровень < МаксимумПоПоказателю.Уровень
           ТОГДА 0
       ИНАЧЕ Промунерованная.Уровень
   КОНЕЦ КАК Уровень,
ИЗ
   Промунерованная КАК Промунерованная
       ЛЕВОЕ СОЕДИНЕНИЕ МаксимумПоПоказателю КАК МаксимумПоПоказателю
       ПО Промунерованная.Показатель = Промунерованная.Показатель
24 Kashemir
 
18.07.12
15:19
Ммм ... если я правильно понял идею то достаточно было изменить поле расчета уровня в (20) вместо допиливания в виду (23)

Выбор когда Табличко.Уровень <> 0 Тогда
Табличко.Уровень + ВложенныйЗапрос.ПорядковыйНомер - 1
иначе
0
конец КАК Поле1
25 Kashemir
 
18.07.12
15:24
Вобщем пробуй так
ВЫБРАТЬ
   Табличко.Показатель,
   Табличко.Дата,
   Табличко.Уровень
ПОМЕСТИТЬ Табличко
ИЗ
   &Табличко КАК Табличко
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Табличко.Показатель
ПОМЕСТИТЬ УникальныеЗначенияПоказателей
ИЗ
   Табличко КАК Табличко

СГРУППИРОВАТЬ ПО
   Табличко.Показатель
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Табличко.Показатель,
   Табличко.Дата,
   ВЫБОР
       КОГДА Табличко.Уровень <> 0
           ТОГДА Табличко.Уровень + ВложенныйЗапрос.ПорядковыйНомер - 1
       ИНАЧЕ 0
   КОНЕЦ КАК Уровень
ИЗ
   Табличко КАК Табличко
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           КОЛИЧЕСТВО(УникальныеЗначенияПоказателей1.Показатель) КАК ПорядковыйНомер,
           УникальныеЗначенияПоказателей.Показатель КАК Показатель
       ИЗ
           УникальныеЗначенияПоказателей КАК УникальныеЗначенияПоказателей
               ВНУТРЕННЕЕ СОЕДИНЕНИЕ УникальныеЗначенияПоказателей КАК УникальныеЗначенияПоказателей1
               ПО УникальныеЗначенияПоказателей.Показатель >= УникальныеЗначенияПоказателей1.Показатель
       
       СГРУППИРОВАТЬ ПО
           УникальныеЗначенияПоказателей.Показатель) КАК ВложенныйЗапрос
       ПО Табличко.Показатель = ВложенныйЗапрос.Показатель
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.