|
Проблема с датами при выполнении запроса. | ☑ | ||
---|---|---|---|---|
0
new1snik
28.05.13
✎
14:50
|
Добрый день. Есть запрос:
Запрос.Текст = "ВЫБРАТЬ | ЕСТЬNULL(ХозрасчетныйОборотыДтКт.СуммаОборот, 0) КАК Сумма |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&ДатаНач, &ДатаКон, , СчетДт В ИЕРАРХИИ (&Счет6001), &Субконто, , , ) КАК ХозрасчетныйОборотыДтКт |ГДЕ | ХозрасчетныйОборотыДтКт.СубконтоДт1.Код = &Код" ; Этот запрос выполняю четыре раза, передавая разные временные промежутки. Даты формирую вот так: ДатаНач1 = НачалоМесяца(Период.ДатаНачала); ДатаКон1 = КонецМесяца(Период.ДатаОкончания); ДатаНач2 = ДобавитьМесяц(ДатаНач1, -1); ДатаКон2 = ДобавитьМесяц(ДатаКон1, -1); ДатаНач3 = ДобавитьМесяц(ДатаНач1, -12); ДатаКон3 = ДобавитьМесяц(ДатаКон1, -12); ДатаНач4 = НачалоГода(ДатаНач1); ДатаКон4 = ДатаКон1; Проблема в том, что если я выполняю запрос передавая в него период - месяц апрель(все даты будут рассчитываться от этого периода), то запрос вернет за март(как за предыдущий месяц апреля) одно число. Но если я задам базовым периодом март, то результаты полученные за тот месяц будут отличаться от данных полученных запросом за предыдущий месяц апреля. Хотя по идее они должны быть равны. Еще интересным момент заключается в том, что это происходит не для всех месяцев - иногда запрос работает верно. |
|||
1
1Сергей
28.05.13
✎
14:53
|
ДобавитьМесяц(Дата("20130430"), -1) = 30.03.2013 0:00:00
|
|||
2
1Сергей
28.05.13
✎
14:54
|
А в марте 31 день. Понятно где косяк?
|
|||
3
new1snik
28.05.13
✎
14:55
|
(2)Что с этим делать? Первый раз сталкиваюсь.
|
|||
4
1Сергей
28.05.13
✎
14:56
|
(3) думать
|
|||
5
MKZM
28.05.13
✎
14:57
|
конецпериода
|
|||
6
new1snik
29.05.13
✎
08:12
|
(5) И что с ним делать?
|
|||
7
Defender aka LINN
29.05.13
✎
08:14
|
Расстрелять |
|||
8
new1snik
29.05.13
✎
08:17
|
(7)А как иначе-то? Субконто в отчете все время одно и тоже, пользователи не будут ничего выбирать.
|
|||
9
kosts
29.05.13
✎
08:22
|
(3) Функция ДобавитьМесяц работает не так, как ты думаешь, а так как она сделана разработчиком системы.
ДобавитьМесяц(Дата(2013,2,28), -1) => 28.01.2013 как видно не возвращает конец января Используй другие способы получения предыдущих месяцев |
|||
10
new1snik
29.05.13
✎
08:24
|
(9) Может кто подскажет какие есть другие методы получения предыдущего месяца?
|
|||
11
Defender aka LINN
29.05.13
✎
08:24
|
(8) Мда...
|
|||
12
kosts
29.05.13
✎
08:25
|
(10)
ДатаКон2 = КонецМесяца(НачалоПериода); 500 рублей |
|||
13
Defender aka LINN
29.05.13
✎
08:25
|
(10) В месяце от 28 до 31 дней. Дата - это один день.
|
|||
14
Бледно Золотистый
29.05.13
✎
08:28
|
Если периоды - месяц, то кури ПериодМесяц в вирт. таблице, а не занимайся х.ней.
|
|||
15
kosts
29.05.13
✎
08:31
|
Возьми за правило переменные называть по человечески
ДатаНач1, ДатаНач2 , ДатаКон2 ... потом замучишься вспоминать, что там было. Называй ДатаНачала, НачалоПредыдущегоМесяца, ДатаНачалаГода и т.д. сам себе спасибо скажешь. Если что есть Ctrl + c и Ctrl + v, если долго писать руками... |
|||
16
new1snik
29.05.13
✎
08:35
|
ДатаНач1 = НачалоМесяца(Период.ДатаНачала);
ДатаКон1 = КонецМесяца(Период.ДатаОкончания); ДатаНач2 = ДобавитьМесяц(ДатаНач1, -1); ДатаКон2 = КонецМесяца(ДатаНач2); ДатаНач3 = ДобавитьМесяц(ДатаНач1, -12); ДатаКон3 = КонецМесяца(ДатаНач3); ДатаНач4 = НачалоГода(ДатаНач1); ДатаКон4 = ДатаКон1; Если вот так переделать, то будет правильно работать? (15) Название переменных мне досталось по наследству. |
|||
17
kosts
29.05.13
✎
08:39
|
(16) > то будет правильно работать
Гарантировать не могу, но в данном фрагменте вроде нет грубых ошибок =) |
|||
18
new1snik
29.05.13
✎
08:40
|
(17) Исправил, проверил, сейчас вроде по разным периодам выдает нужную информацию.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |