Имя: Пароль:
1C
 
Получение "КонецПолугодия"
0 Ychenik1c
 
19.05.22
15:25
Добрый день. Подскажите как получить КонецПолугодия от даты? Не запросом.
Месяц, Квартал, Год  - есть возможность стандартно получить
1 yopQua
 
19.05.22
15:27
еп еп квартал(кварта())?
2 yopQua
 
19.05.22
15:29
ну + 1 еще можно добавить или 2 еп еп
3 lodger
 
19.05.22
15:32
?(Месяц(ДатаВходящая)>6,КонецГода(ДатаВходящая),?(Месяц(ДатаВходящая)>3,КонецКвартала(ДатаВходящая),КонецКвартала(ДобавитьМесяц(ДатаВходящая,3))))
4 Ryzeman
 
19.05.22
15:33
КонецКвартала(?(Месяц(Дата) % 3 < 2), ДобавитьМесяц(Дата, 3), Дата)
5 Ryzeman
 
19.05.22
15:34
(4) гм, <3 а не <2
6 Ychenik1c
 
19.05.22
15:35
Спасибо.
Я думал может я не нашел, а значит её нет.
7 Ryzeman
 
19.05.22
15:36
Ну... в СП нет. Или думаешь есть недокументированная?)
8 Выпрь
 
19.05.22
15:41
(3) всетаки Если Иначе читается куда проще
9 Kassern
 
19.05.22
15:58
(0) КонецМесяца(ДобавитьМесяц(Дата,?(Месяц(Дата)>6,12,6)-Макс(6,Месяц(Дата))))
10 Kassern
 
19.05.22
16:06
Месяц=Месяц(Дата);
НужнаяДата=КонецМесяца(ДобавитьМесяц(Дата,?(Месяц>6,12-Макс(6,Месяц),6-Мин(6,Месяц))));
11 yopQua
 
19.05.22
16:22
(10) да он хотел готовую функцию без кракозябной песанины
12 Kassern
 
19.05.22
16:24
(11) А в чем проблема?) ОбщегоНазначения.КонецПолугодия(Дата) - а уж что вы впихнете в эту функцию, это уже не важно)
13 yopQua
 
19.05.22
16:26
(12) прально, подальше ее с глаз долой)) тоже вариант)
14 hhhh
 
19.05.22
16:27
(7) что-то фигня какая-то. Например, октябрь. По вашей формуле не работает.
15 Kassern
 
19.05.22
16:30
(14) все работает. Октябрь это 10 месяц, следовательно получаем добавить к дате 12-10=2 месяца. И берем конец месяца в итоге получится конец года текущей даты
16 Kassern
 
19.05.22
16:31
17 Kassern
 
19.05.22
16:31
(14) а блин вы не мне)
18 Asmody
 
19.05.22
16:32
(0) может сервис написать?
19 Kassern
 
19.05.22
16:34
(18) ахаха, как было со строкой наоборот?) Только чур конкурс на минимум символов)
20 Ненавижу 1С
 
гуру
19.05.22
16:40
Интересно, почему есть функция КонецКвартала, но нет КонецПолугодия?
хотя КонецКвартала и КонецПолугодия можно вывести из КонецМесяца и Месяц
21 1Сергей
 
19.05.22
16:41
(20) потому что полугодия в учёте вроде нигде не нужны
22 Asmody
 
19.05.22
16:52
(20) ещё бы к этим КонецКвартала(), КонецПолугодия(), КонецГода() можно было бы прикручивать свой "управленческий" календарь. А то было у меня всякое. Например, учетный фин.год начинался 1.02. Или ещё было такое, что границы фин.месяцев были в районе 22 ± 2 числа. А потому что фин.дир. был затейник с фантазией
23 Kassern
 
19.05.22
16:55
(22) ахахах, это хорошо, что ваш фин дир. не решил по ацтекскому календарю управленческий учет вести. Пришлось бы еще 6 месяцев прикрутить к году)
24 1Сергей
 
19.05.22
17:10
Марсианский календарь http://uploads.ru/NrQ3c.jpg
25 RomanYS
 
19.05.22
17:59
(10) Макс и Мин тут явно лишнее
и можно совсем без условий
НужнаяДата = КонецМесяца(ДобавитьМесяц(Дата, (12 - Месяц(Дата)) % 6));
26 youalex
 
19.05.22
18:18
Дата(Год(ТекущаяДата()), 6, 30, 23, 59,59)
27 Ненавижу 1С
 
гуру
19.05.22
18:23
(22) Да-да. Даёшь начало статистической недели в четверг
28 Конструктор1С
 
19.05.22
19:21
(4) фу-фу-фу такой код писать. Сиди потом, глаза ломай об вложения функций в одной строке. Экономишь на строчках кода?
29 Конструктор1С
 
19.05.22
19:34
Функция КонецПолугодия(Знач Дата)    
    КонецТекущегоГода = КонецГода(Дата);    
    ТекущийМесяц = Месяц(Дата);    
    Если ТекущийМесяц > 6 Тогда
        КонецПолугодия = КонецТекущегоГода;    
    Иначе    
        КонецПолугодия = ДобавитьМесяц(КонецТекущегоГода, -6);
    КонецЕсли;    
    Возврат КонецПолугодия;    
КонецФункции
30 Asmody
 
19.05.22
19:34
(23) всему есть разумное объяснение. Там, где год начинался с февраля, просто в то время после январских праздников проходила крупная отраслевая выставка, которая во многом определяла год.
А там, где месяц начинался в 20х числах, это была "дочка" импортной компании, где фин.месяц начинался "с первого понедельника после 20 числа месяца". Как-то так.
31 Asmody
 
19.05.22
19:35
(27) я не отрицаю, что это возможно. Например, производство может считать по своим циклам, которым календарные недели и месяцы вообще пофиг.
32 vierzehn
 
19.05.22
19:54
(29) Т-щ поборник чистоты, а какое отношение к задаче имеет слово "Текушее" в имени переменной "КонецТекущегоГода"? Фу-фу-фу такой код писать.
33 Конструктор1С
 
19.05.22
20:03
(32) можешь переименовать на своё усмотрение. Видишь ли, самое главное чтобы ты быстро понял чт и как делает код. А не полировал его глазами сверху вниз, снизу вверх, слева направо, справа налево, и так на несколько кругов
34 Конструктор1С
 
19.05.22
20:34
(22) это же не сложно. Создаешь общий модуль и в нем реализуешь свои функции

КонецКвартала = МарсианскийКалендарь.КонецКвартала(Дата);
НачалоГода = МарсианскийКалендарь.НачалоГода(Дата);
35 Asmody
 
19.05.22
20:46
(34) и переписать выбор периодов, расчёт итогов, чуть поправить запросы и СКД. Всего-то делов
36 Ryzeman
 
20.05.22
04:59
(28) На самом деле так не пишу никогда) Просто решил повыёживаться на форуме, типа как крутые пацаны на нормальных языках пишут)
37 yopQua
 
20.05.22
06:47
может календарь программно прикрутить как то или стандартный период из скд например или где там еще такое есть
38 Конструктор1С
 
20.05.22
07:31
(35) ну выбор периодов часто и так самопальная форма, расчет итогов не понятно зачем менять, СКД умеет работать с общими модулями. Слабое звено только запросы, но и те можно переписать
39 Конструктор1С
 
20.05.22
07:39
(36) молодец. Но если всё-таки сделал вложенные вызовы, то хотя бы немного облегчи страдания будущих читателей кода. Добавь переносов, отступов и всего такого


КонецКвартала(    ?(Месяц(Дата) % 3 < 2),
        ДобавитьМесяц(Дата, 3),
        Дата) )
40 Ненавижу 1С
 
гуру
20.05.22
08:38
(39) КонецМесяца(ДобавитьМесяц(Дата, (12-Месяц(Дата))%6))
41 Конструктор1С
 
20.05.22
08:53
(40) это не мой код, а код из (4). Тебе тоже не помешало бы создать переменные, или хотя бы с переносами заморочиться
42 yopQua
 
20.05.22
09:57
(39) есть у нас один такой - понаставит отступов, стрелочек и звездочек с подчеркиваниями, очень похоже на картинки символами. если плохое настроение, заходишь и тешишься
43 Выпрь
 
20.05.22
09:59
(39) автоформатирование текста убьет такую красоту
44 Dmitrii
 
гуру
20.05.22
10:25
А в спортивных организациях финансовые периоды могут определяться сезонами, где календарный Новый Год - это середина сезона.
45 Ненавижу 1С
 
гуру
20.05.22
10:43
(41) 1С итак многословно, чего только работа с запросом стоит
46 yopQua
 
20.05.22
10:45
(44) да у большинства свой календарь, регламент наверно только по официальному работает, что лишь подтверждает, что это еще одна из альтернативных форм календаря
47 yopQua
 
20.05.22
10:46
(45) чего она стоит? что объект создать надо и параметры поставить?
48 Aleksandr N
 
20.05.22
10:48
Выдрано из типовой:

Если Месяц(Дата) < 7 Тогда
    Возврат КонецДня(Дата(Год(Дата), 6, 30));
Иначе
    Возврат КонецГода(Дата);
КонецЕсли;
49 Ненавижу 1С
 
гуру
20.05.22
12:10
(47) посмотри как это делается в LINQ, например
чисто по размеру кода
50 yopQua
 
20.05.22
14:11
(49) поинтересней конечно, но не критично. в шарпе нопример муторней, чем в 1с, теория относительности.. да и сравнивать разные архитектуры тоже не торт
51 Конструктор1С
 
20.05.22
14:18
(43) это не красота, а уменьшение боли для глаз. Переносы после форматирования останутся
52 1Сергей
 
20.05.22
14:19
(48) Очень просто и понятно. Именно так и должен выглядеть код
53 Конструктор1С
 
20.05.22
14:21
(45) это не повод лепить код в одну строку

(49) в других системах не пишут запросы в 30 этажей. Это изобретение 1с и 1сников - устраивать месиво из запросов
54 Ryzeman
 
20.05.22
14:29
(53) грамотными и сложными запросами в других системах решаются те же задачи, что и в 1с. Другой вопрос, что вряд ли где ещё увидишь текст запроса собираемый в 150 модулях.
55 Конструктор1С
 
20.05.22
14:36
(54) увы, нет) Тащить бизнес-логику в запросы к БД уже давно считается моветоном. За бизнес-логику не в коде могут даже а-та-та
56 yopQua
 
20.05.22
14:43
(55) а хранимые процедуры считаются запросами, в которых бизнес-логика?
57 Конструктор1С
 
20.05.22
14:55
(56) считаются. Хранимки тоже зло, от которого стараются отказываться. Другое дело, что в распоряжении 1сника никаких хранимок нет, только довольно примитивный select
58 Ryzeman
 
20.05.22
14:58
(57) у нас есть ODBC
59 Выпрь
 
20.05.22
14:58
(51) отступы пропадут
60 Конструктор1С
 
20.05.22
15:22
(58) и?
61 Ненавижу 1С
 
гуру
20.05.22
15:27
(53) не лепи, я ж не против
но лично я считаю, что в данном случае кода в строке в меру
62 ДедМорроз
 
20.05.22
18:39
Если месяц(дата)>6 тогда дата(год(дата),12,31,23,59,59) иначе дата(год(дата),6,30,23,59,59)