Вход | Регистрация
 

Клиент хочет сравнивать текущий и прошлый год по периодам день, неделя, месяц, год.

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

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

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

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

Функция СоответствиеВПрошломГоду(Дата) Экспорт
    //День = ДеньГода(Дата);

    //Возврат НачалоГода(НачалоГода(Дата) - 1) + День * 3600 * 24; //берем такой же день в прошлом году

    НеделяГода = НеделяГода(Дата);
    ДеньНедели = ДеньНедели(Дата);
    НачалоПрошлогоГода = НачалоГода(НачалоГода(Дата) - 1);
    КонецПрошлогоГода = КонецГода(НачалоПрошлогоГода);
    ДеньНеделиНачалоПрошлогоГода = ДеньНедели(НачалоПрошлогоГода);
    ДатаПрошлогоГода = НачалоПрошлогоГода + 3600*24*7*(НеделяГода - 1) + 3600*24*(ДеньНедели - ДеньНеделиНачалоПрошлогоГода);
    
    //Проверяем за выход за диапазон

    Если ДатаПрошлогоГода > КонецПрошлогоГода Тогда
        ДатаПрошлогоГода = КонецПрошлогоГода;
    КонецЕсли;
    Если ДатаПрошлогоГода < НачалоПрошлогоГода Тогда
        ДатаПрошлогоГода = НачалоПрошлогоГода;
    КонецЕсли;
    
    Возврат ДатаПрошлогоГода;
    
КонецФункции

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

Конечно, первую неделю года и последнюю не нельзя сравнивать, да и 366-ой день года не всегда повадает, но в целом норм. Помесячно сравнивают.
   Злопчинский
 
9 - 13.06.20 - 17:18
я хз как в 8-ке, но в 77 в запросе были СТАНДАРТНЫЕ периоды - день, неделя, декада, квартал - по которым можно группировать результаты запроса
   MyNick
 
10 - 13.06.20 - 18:20
(5) почему бредовая? Мож они бухлом торгуют. И хотят пятницы сравнивать.
   Гений 1С
 
11 - 13.06.20 - 19:23
(7) вот по месяцам, кстати, показательно, да.
А вот сравнивать дни и недели, хз.
   rphosts
 
12 - 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) извините
   vvspb
 
15 - 13.06.20 - 19:43
(7) вообще дни странно сравнивать таким макаром, непоказательно/// да, мельче недели сравнивают обычно только "особые" дни. В зависимости от специфики это НГ, 23.02, 08.03, 01.09 и тыды
   Гений 1С
 
16 - 13.06.20 - 20:14
(15) ну там сранивают день и этот же день год назад.
потом неделю от дня до его начала (накопительно) и такую же неделю в прошлом.
Потом месяц от дня до начала месяца и такой же месяц в прошлом.
   Гений 1С
 
17 - 13.06.20 - 20:53
(12) Бабло платит, да. ;-)
   mistеr
 
18 - 13.06.20 - 21:11
Задача нормальная. Кто говорит бредовая, тот не шарит.

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.