Имя: Пароль:
1C
1С v8
Как в запросе получить начало каждого месяца между переданными датами?
0 fatal_error
 
07.08.13
10:42
К примеру, в параметрах запроса передаем НачалоПериода 01.01.13 и КонецПериода 07.08.13. В результате должны иметь на выходе:

01.01.13
01.02.13
01.03.13
01.04.13
01.05.13
01.06.13
01.07.13
01.08.13
1 Нуф-Нуф
 
07.08.13
10:43
соединение с производственным календарем с функцией НачалоПериода(месяц) и группировкой
2 exwill
 
07.08.13
10:44
(0) Стандартная задача.
Если есть время, не откажи себе в удовольствии решить ее самостоятельно.
Первый шаг - получить таблицу типа:
0
1
2
3
4
5
6
...
99
3 Ненавижу 1С
 
гуру
07.08.13
10:44
(1) можно без группировки
4 Dimel
 
07.08.13
10:55
Прикольная задачка:

ВЫБРАТЬ
    0 КАК Цифра
ПОМЕСТИТЬ ТаблицаЦифр

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    1

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    2

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    3

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    4

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    5

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    6

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    7

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    8

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    9
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДОБАВИТЬКДАТЕ(&ДатаНачала, ДЕНЬ, ТабЦифр1.Цифра + 10 * ТабЦифр2.Цифра + 100 * ТабЦифр3.Цифра + 1000 * ТабЦифр4.Цифра) КАК День
ПОМЕСТИТЬ ТаблицаДней
ИЗ
    ТаблицаЦифр КАК ТабЦифр1,
    ТаблицаЦифр КАК ТабЦифр2,
    ТаблицаЦифр КАК ТабЦифр3,
    ТаблицаЦифр КАК ТабЦифр4
ГДЕ
    ДОБАВИТЬКДАТЕ(&ДатаНачала, ДЕНЬ, ТабЦифр1.Цифра + 10 * ТабЦифр2.Цифра + 100 * ТабЦифр3.Цифра + 1000 * ТабЦифр4.Цифра) <= &ДатаКонца

ИНДЕКСИРОВАТЬ ПО
    День
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(ТаблицаДней.День, МЕСЯЦ) КАК Поле1
ИЗ
    ТаблицаДней КАК ТаблицаДней

СГРУППИРОВАТЬ ПО
    НАЧАЛОПЕРИОДА(ТаблицаДней.День, МЕСЯЦ)