Имя: Пароль:
1C
 
Клиент хочет сравнивать текущий и прошлый год по периодам день, неделя, месяц, год.
0 Гений 1С
 
гуру
13.06.20
15:48
Вот например 9 июня 2020 нужно сравнивать с 11 июня 2019, потому что вторник.
Но там косяки с первой неделей начинаются, если они не с одинаковой даты.
И с високосными годами тоже.

Думаю, брать номер недели и в ней искать такой же день.
А если дня нет, обрезать, из прошлого года не тянуть.
Клиент подтверждает, что хочет так. Но это несколько портит статистику.
А как правильно уаще?
1 RoRu
 
13.06.20
15:54
(0) ещё надо наверно рабочие и выходные сравнивать
так то клиент задачу ставит и должен сказать, что ему важно и как
2 RoRu
 
13.06.20
15:55
в (1) сравнивать  читать как учитывать и различать
3 vde69
 
13.06.20
16:00
что именно он будет сравнивать? количество продаж?

сравнивать имеет смысл только усредненные значения, по тому как бывают пики, по этому сравнивают кратно учетному периоду (обычно месяц), разрезы менее 1 месяца как правило приводят к полному бреду...
4 Гений 1С
 
гуру
13.06.20
16:02
(3) Да, продажи сравнивает. именно по дням как раз важно, потому что нельзя сравнивать понедельник с воскресеньем, например.

Я написал нечто вроде, хз, пусть клиент проверяет:

Функция СоответствиеВПрошломГоду(Дата) Экспорт
    //День = ДеньГода(Дата);
    //Возврат НачалоГода(НачалоГода(Дата) - 1) + День * 3600 * 24; //берем такой же день в прошлом году
    НеделяГода = НеделяГода(Дата);
    ДеньНедели = ДеньНедели(Дата);
    НачалоПрошлогоГода = НачалоГода(НачалоГода(Дата) - 1);
    КонецПрошлогоГода = КонецГода(НачалоПрошлогоГода);
    ДеньНеделиНачалоПрошлогоГода = ДеньНедели(НачалоПрошлогоГода);
    ДатаПрошлогоГода = НачалоПрошлогоГода + 3600*24*7*(НеделяГода - 1) + 3600*24*(ДеньНедели - ДеньНеделиНачалоПрошлогоГода);
    
    //Проверяем за выход за диапазон
    Если ДатаПрошлогоГода > КонецПрошлогоГода Тогда
        ДатаПрошлогоГода = КонецПрошлогоГода;
    КонецЕсли;
    Если ДатаПрошлогоГода < НачалоПрошлогоГода Тогда
        ДатаПрошлогоГода = НачалоПрошлогоГода;
    КонецЕсли;
    
    Возврат ДатаПрошлогоГода;
    
КонецФункции

Проверил:
1 января 2020 ср соответствует ср 2 января 2019.
12 января 2020 вс соответствует вс 13 января 2019.
5 breezee
 
13.06.20
16:10
Задача бредовая) Но, может, сравнивать через производственный календарь? Там вроде номер дня есть и можно просто вывести рабочий день или выходной
6 NorthWind
 
13.06.20
16:15
(0) у меня менеджеры тоже хотели. Нашел им на инфостарте сравнение двух периодов продаж, чуть допилил и дал.
Но они не лезли в дебри с днями, им надо было просто задать два периода по их выбору и все.
7 NorthWind
 
13.06.20
16:17
вообще дни странно сравнивать таким макаром, непоказательно. Сравнивают обычно месяцы - например нынешний январь с таким же январем прошлого года или позапрошлого. Сезоны можно также сравнивать, это лето с тем. Дни я хрен его знает зачем сравнивать, там имхо ничего не увидишь путного на таких периодах.
8 stopa85
 
13.06.20
16:30
Я в регистр накопления продажи добавил измерения
1. Полугодие года
2. Квартал года
3. Месяц Года
4. Неделя года.
5. День года.

Конечно, первую неделю года и последнюю не нельзя сравнивать, да и 366-ой день года не всегда повадает, но в целом норм. Помесячно сравнивают.
9 Злопчинский
 
13.06.20
17:18
я хз как в 8-ке, но в 77 в запросе были СТАНДАРТНЫЕ периоды - день, неделя, декада, квартал - по которым можно группировать результаты запроса
10 MyNick
 
13.06.20
18:20
(5) почему бредовая? Мож они бухлом торгуют. И хотят пятницы сравнивать.
11 Гений 1С
 
гуру
13.06.20
19:23
(7) вот по месяцам, кстати, показательно, да.
А вот сравнивать дни и недели, хз.
12 rphosts
 
13.06.20
19:31
(0) твой клиент такой-же извращенец что и ты, но если бабло платит - имеет право!

Как правильно? Наверное сравнивать 01.01.<ГодБазовый>-28.02 с 01.01.<ГодСравнения>-21.02 + дельта1 и  01.03.<ГодБазовый>-31.12 с 01.03.<ГодСравнения>-31.12 + дельта2
13 МихаилМ
 
13.06.20
19:36
НачалоПрошлогоГода = НачалоГода(НачалоГода(Дата) - 1);
это что
14 МихаилМ
 
13.06.20
19:38
(13) извините
15 vvspb
 
13.06.20
19:43
(7) вообще дни странно сравнивать таким макаром, непоказательно/// да, мельче недели сравнивают обычно только "особые" дни. В зависимости от специфики это НГ, 23.02, 08.03, 01.09 и тыды
16 Гений 1С
 
гуру
13.06.20
20:14
(15) ну там сранивают день и этот же день год назад.
потом неделю от дня до его начала (накопительно) и такую же неделю в прошлом.
Потом месяц от дня до начала месяца и такой же месяц в прошлом.
17 Гений 1С
 
гуру
13.06.20
20:53
(12) Бабло платит, да. ;-)
18 mistеr
 
13.06.20
21:11
Задача нормальная. Кто говорит бредовая, тот не шарит.

>А как правильно уаще?

Правильно предоставить выбор периодов пользователю. Ну и удобства всякие сделать, вроде выравнивания по дням недели. Кнопки там для +/- неделя/месяц/год, и тюпю.