Имя: Пароль:
1C
1С v8
Проанализировать ДЕНЬ месяца
, ,
0 dft2014
 
04.04.19
16:53
Подскажите, можно ли как-то красиво в коде проанализировать день даты текущего сеанса? Мне надо перебрать каждый день месяца и написать условие:
Если наступило 5-тое число текущего месяца, то показывать при открытии отчета прошлый месяц иначе показывать позапрошлый месяц. Т.е. должно быть вот так:


Дата формирования    Максимальный месяц
01.03.2019    январь
02.03.2019    январь
03.03.2019    январь
04.03.2019    январь
05.03.2019    февраль
06.03.2019    февраль
07.03.2019    февраль
и т.д.
31.03.2019    февраль
01.04.2019    февраль
02.04.2019    февраль
03.04.2019    февраль
04.04.2019    февраль
05.04.2019    март
06.04.2019    март
07.04.2019    март
1 Fragster
 
гуру
04.04.19
16:54
>Подскажите, можно ли как-то красиво в коде проанализировать день даты текущего сеанса?

Да
2 dft2014
 
04.04.19
16:59
(1) Спасибо за развернутый ответ)
3 sqr4
 
04.04.19
17:00
День(ТекущаяДата())
4 dft2014
 
04.04.19
17:05
(3) Эту команду я знаю, но надо анализировать в совокупности еще и месяц. И как это написать?
5 dft2014
 
04.04.19
17:07
ДеньДаты = "";
МесяцДаты = "";
ДеньДаты = День(ДатаСеанса);
ТекущийМесяцДаты = Месяц(ДатаСеанса);
    
//вот здесь надо условие на текущий месяц и дату поставить, но как, с учетом того, что если наступило 5-тое число текущего месяца, то показывать при открытии отчета прошлый месяц иначе показывать позапрошлый месяц.  
//Если ДеньДаты = "1" ИЛИ ДеньДаты = "2" ИЛИ ...
6 sqr4
 
04.04.19
17:09
ДобавитьМесяц(НАчалоМесяца(ТекущаяДата), -1)
7 sqr4
 
04.04.19
17:10
//Если ДеньДаты = "1" ИЛИ ДеньДаты = "2" ИЛИ ... ???????????????
ДеньДаты<5
8 dft2014
 
04.04.19
17:17
(6), (7) Спасибо, но по вашему коду, всегда если ТекДата<5 будет показывать прошлый месяц, а как же условие:
если наступило 5-тое число ТЕКУЩЕГО месяца, то показывать при открытии отчета ПРОШЛЫЙ месяц иначе показывать ПОЗАПРОШЛЫЙ месяц.
9 sqr4
 
04.04.19
17:21
(8) я не предоставлял готовое решение, оно более чем простое, я думаю вы сами справитесь
10 dft2014
 
04.04.19
17:22
(9) не справляюсь, поэтому обратилась на форум.
11 sqr4
 
04.04.19
17:26
(10) Обидно
Если День(ТекущаяДата())< 5 Тогда
Месяц = ДобавитьМесяц(ТекущаяДата(), -2)
Иначе
Месяц = ДобавитьМесяц(ТекущаяДата(), -1)
КонецЕсли;
Начало = НачалоМесяца(Месяц);
Конец  = КонецМесяца(Месяц);
12 dft2014
 
04.04.19
17:55
(11) По вашему коду, с 1-4 числа ЛЮБОГО месяца будет тянуться позапрошлый месяц, иначе (с 5 по 30(31) ЛЮБОГО месяца будет тянуться прошлый месяц. Это не совсем то, что мне надо: надо анализировать и текущий месяц - вот в этом-то у меня и загвоздка!
13 sqr4
 
04.04.19
18:00
(12) Ваша загвоздка в формулировке задания
14 Euguln
 
04.04.19
18:05
(11) Месяц = ДобавитьМесяц(НачалоДня(ТекущаяДата()) - 5*24*60*60, -1);
15 dft2014
 
04.04.19
18:08
(13) Есть отчет, который формируется многими сотрудниками. Поскольку месяц у нас закрывается 5-го числа СЛЕДУЮЩЕГО месяца (например февраль у нас закрывается 5марта: март закрывается 5апреля и т.д), то надо поставить ограничение: если наступило 5-тое число текущего месяца, то показывать при открытии отчета прошлый месяц иначе показывать позапрошлый месяц. Т.е. пока месяц не закрыт, не давать возможности формировать отчет.
16 dft2014
 
04.04.19
18:32
Ап!
17 _Дайвер_
 
04.04.19
18:33
Если ДЕНЬ(ТекущаяДата()) >= 5 Тогда
здесь период прошлого месяца в отчете ставишь...
Иначе
здесь период позапрошлого месяца в отчете ставишь...
КонецЕсли;
18 Temai
 
04.04.19
18:34
Да тебе уже всё написали, что ты апаешь? Если не можешь пару строк кода написать тебе не на форум надо, а книжку читать идти.
19 Веселый собака
 
04.04.19
20:38
как низок порог вползания в 1с..
20 Fram
 
04.04.19
21:39
судя по форуму, ТС уже минимум 5 лет ползает )
21 hhhh
 
04.04.19
22:42
(16) всё-таки прочитайте про функцию ТекущаяДата(). И вы поймете, что она не может быть в ЛЮБОМ месяце.
22 OldCondom
 
04.04.19
22:58
"Мужчины получают большую плату за тот же труд!", - говорят они.