Имя: Пароль:
1C
1С v8
Грамотно передать прошлый месяц в запрос
0 Patrio_
O_Muerte
 
13.11.13
19:49
Добрый вечер.
Господа, подскажите, каким образом в запрос передать два параметра - начало и окончание прошлого месяца?
1 Конфигуратор1с
 
13.11.13
19:52
(0) Встроенные функции языка.НачалоМесяца (Script functions.BegOfMonth)
Встроенные функции языка (Script functions)
НачалоМесяца (BegOfMonth)
Синтаксис:

НачалоМесяца(<Дата>)
Параметры:

<Дата> (обязательный)

Тип: Дата.
Исходная дата.
Возвращаемое значение:

Тип: Дата.
Дата и время начала месяца.
Описание:

Определяет дату и время начала месяца для указанной даты.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Пример:

Сообщить(НачалоМесяца(ТекущаяДата()));
2 Конфигуратор1с
 
13.11.13
19:52
Встроенные функции языка.КонецМесяца (Script functions.EndOfMonth)
Встроенные функции языка (Script functions)
КонецМесяца (EndOfMonth)
Синтаксис:

КонецМесяца(<Дата>)
Параметры:

<Дата> (обязательный)

Тип: Дата.
Исходная дата.
Возвращаемое значение:

Тип: Дата.
Дата и время конца месяца.
Описание:

Определяет дату и время конца месяца для указанной даты.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Пример:

// см. пример для метода День
3 Patrio_
O_Muerte
 
13.11.13
19:52
ДОБАВИТЬКДАТЕ(&НачДата, МЕСЯЦ, -1), ДОБАВИТЬКДАТЕ(&КонДата, МЕСЯЦ, -1)
Делаю таким образом но терзает сомнение
4 Конфигуратор1с
 
13.11.13
19:54
(3) так в запрос передать или в запросе получить?
5 rull9ss
 
13.11.13
19:54
Запрос.УстановитьПараметр("КонецМесяца",КонецМесяца(Дата));
        Запрос.УстановитьПараметр("НачалоМесяца",НачалоМесяца(Дата));
6 Patrio_
O_Muerte
 
13.11.13
19:55
(4)Желательно конечно без передачи параметра.
Но если шибко хитромудро то пойдет и с параметром.
7 Patrio_
O_Muerte
 
13.11.13
19:56
(5)Прошлый месяц.
8 el7cartel
 
13.11.13
19:57
(6) от текущей даты получили начало месяца, от начала месяца отняли несколько дней, и получили предыдущий месяц (дату), а от него уже начало месяца предудыщего и конец предыдущего месяца...вот
9 rull9ss
 
13.11.13
19:58
(7)

ну тогда вместо параметра Дата передавай

ДобавитьМесяц(ТекущаяДата(),-1)
10 kiruha
 
13.11.13
19:59
Конец месяца - границу лучше использовать - а то последняя сек может пропасть
Запрос.УстановитьПараметр("НачалоМесяца",НачалоМесяца(Дата));
Запрос.УстановитьПараметр("КонецМесяца",Новый Граница(КонецМесяца(Дата)+1,ВидГраницы.Исключая));

для регистров
11 kiruha
 
13.11.13
20:08
Или
Запрос.УстановитьПараметр("КонецМесяца",Новый Граница(КонецМесяца(Дата),ВидГраницы.Включая));
12 Patrio_
O_Muerte
 
13.11.13
20:12
Спс
13 Dethmont
 
13.11.13
20:14
НАЧАЛОПЕРИОДА(Дата,МЕСЯЦ) в запросе
14 Dethmont
 
13.11.13
20:15
Функция КОНЕЦПЕРИОДА
КОНЕЦПЕРИОДА (<Дата периода>, <Тип периода>)

<Дата периода> – выражение типа ДАТА, указывающего дату периода;

<Тип периода> - тип периода, одно из: МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, МЕСЯЦ, КВАРТАЛ, ГОД, ДЕКАДА, ПОЛУГОДИЕ.

Функция предназначена для получения даты конца периода по дате, принадлежащей этому периоду.

Примеры:

ВЫБРАТЬ КонецПериода(ДатаВремя(2002, 10, 12, 10, 15, 34), Неделя)

Результат:

Поле1

13.10.2002 23:59:59


ВЫБРАТЬ КонецПериода (ДатаВремя(2002, 10, 12, 10, 15, 34), Год)

Результат:

Поле1

31.12.2002 23:59:59
15 Dethmont
 
13.11.13
20:16
Читай справку!!! F1
16 Patrio_
O_Muerte
 
13.11.13
20:25
(15)Хочешь сказать и для регистров нормально отработает? Несмотря на 10?
17 Dethmont
 
13.11.13
20:37
(16) Для физической таблицы - ДА
Для виртуальной нужно использовать границу
18 BARS_2
 
13.11.13
20:38
(16) не работает. если регистр остаточный то надо брать конец периода+1 секунда, если чисто внутри запросов колдовать, а если передать можно то тогда с включением границы. и это если не брать во внимание СКД - там помоему, она сама доплюсовывает все что надо
19 BARS_2
 
13.11.13
20:39
(16) сам накнулся буквально на днях. отдельно работал с остатками и отдельно с оборотами и оказалось что остатки беруться НА время
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.