Кол-во просмотров с 29.12.23г. :: 671
Добрый день. Вчера что-то я как-то спешивался со всеми временными метками, но вроде сейчас немножко разобрался, там своих ребят-программистов спросил. Дело в том, что вот эта функция str2time, с которой мы имели дело,Она такая непростая, она дает достаточно много гибкости и, так скажем, для разных типов дат, для разных типов записи дат, она, в общем, дает разные результаты. Более строгая функция – это вот та самая mktime.с помощью которой мы сначала создавали метки времени, а потом переводили это все вот в эти вот самые даты. Дата старта, дата финиша. Значит, что мы сейчас сделаем? То место, где мы создали вот эти вот потоки дат, даты старта и даты финиша, вот там у нас были созданы вот эти вот количества секунд.помощью функции mktime. и вот давайте мы их оттуда и возьмем. сейчас я покажу и объясню. мы поднимаемся наверх. ровно в то место где у нас были созданы переменные. вот они data finish, data start. и посмотрим как они у нас создавались. то есть мы пробегаем отпервого до последнего периода. И формируем две вот такие вот линейки переменных. Два массива переменных. DataStart, DataFinish. И вот этот вот $i, который, да, вот эта переменная $i, которая внутри у нас пробегает, она как раз таки нумерует наши периоды.А вот то, что здесь внутри у нас сидит, вот это вот mcutime, вот это и есть как раз таки метка времени, то есть количество секунд, которое нам необходимо. И вот оно должно быть максимально корректным, потому что вот эта функция mcutime, в ней сложно как-то ошибиться, потому что у нее шесть переменных,для часов, минут, секунд, месяцев, дней, годов. И тут как бы сложно промахнуться в зависимости от того, как написано. Потому что функция strToTime – это строка во время переводится. Ну а строка там оказывается в зависимости от того, как прописановот эта вот запись даты, в зависимости от этого может там все меняться, короче говоря, вот это количество секунд. Я не хочу туда уходить и вдаваться во всю эту науку, так сказать. Мы поступим, вот еще раз говорю, мы введем сейчас помимо вот этих вот переменных с датами, мы введем переменные, просто массив переменных, которыеу нас будут давать количество секунд. Вот так вот я напишу буквочку «М» в конце, введу переменные «DataStartM» и «DataFinishM». И вот эта вот буква «М» будет означать, что это как раз-таки метка времени, то есть количество секунд. И сделаем следующее. Я вот эту вот штуку тоже скопирую просто сейчас, сделаю копию.И внутри мы сначала создадим вот эти вот DATA START M, DATA FINISH M, то есть создадим метки времени. Я вот это вот DATA убираю и оставляем здесь только вот это вот M CUT TIME. Вот так. И здесь тоже вот эту DATA убираю и присваиваем вот этим вот переменным.у которых буква «м» на конце, мы просто присваиваем количество секунд. Если мы вот так вот поступим, то понятно, что здесь теперь вот эти вот вхождения m, k, time можно заменить на вот эти вот перемены. Правильно? Я так и сделаю. Просто скопирую, то есть они у нас уже посчитаны, поэтому еще раз нам создавать.Временные метки здесь не надо, поэтому я вот их копирую. Мы их вот сюда вставляем. И у нас получается два массива данных. То есть массивы данных — это с буквой «мы» на конце, то есть это просто секунды. И массив данных в виде «да». И вот давайте теперь там, где у насотображается там, где у нас отображаются даты. Давайте сюда поставим вместо дат вот эти вот количества секунд. Посмотрим, что там будет отображаться. Еще раз надо зайти. Меня выкинуло просто. 24 часа прошло. Меня выкинуло. Я обратно захожу.так у нас в моделировании а у нас в моделировании и в отчетности да вот мы уже даты поставили давайте и там и там ну или хотя бы там допустим моделирование где-то поставим вот эти вот количество поставим буквочку мы вот здесь вот на конце до м на конце вот так вотDataStartM, DataFinishM. И посмотрим, что там будет выдано. Это, кажется, блок моделирования. Нам не важно, так я сохраняю. Нам просто посмотреть, какое будет количество секунд отображаться. Окей, перекидываем сюда. И в моделирование идем. Да, вот что мы видим. Итак, у нас...Важно, что вот когда мы были в отчётности, то у нас получалось так, что количество секунд начала следующего периода меньше, это вот это вот, меньше, чем конец предыдущего. Это было неверно. А теперь мы видим, что вот у нас вот здесь на конце 1,704,056,399 заканчивается.А следующий период начинается 1.704.056.400, то есть на одну секунду больше. То есть первый период заканчивается, а второй начинается с того, что просто прибавляется одна секунда. Потом второй период заканчивается здесь на конце 7.9.9, третий период начинается в 800. Вот чего хотели как раз-таки добиться.Теперь мы идем сюда. Ну, я обратно ставлю вместо меток M обратно ставлю даты. Теперь проходим вниз, там, где мы экспериментировали, вот здесь. И давайте теперь убираем str.toTime, а просто ставим сами вот эти вот метки. Дата старт M пишем.Здесь str.time убираем и data.finish.m. То есть у нас здесь что? У нас на первом месте идет начало второго периода, а на втором месте у нас финиш первого периода. Сохраняем и копируем на сервер.Индекс. Окей. Теперь смотрим, что у нас. Значит, вот мы идем в отчетность, и вот мы видим теперь у нас 1.704.056.400 – это начало, старт второго периода. И на одну секунду меньше, 399 здесь на конце, на одну секунду меньше – это конец первого периода. Вот. Ну, теперь вот они встали правильным образом.Значит, что мы должны сделать? Нам необходимо вот здесь, там, где мы пишем «больше» либо «равняется», делаем запись. Там, где мы пишем «str.toTime», нам просто нужно заменить на сами по себе метки времени. «datastart.m» нужно написать.То есть у нас метка времени, то есть количество секунд той даты, которая соответствует строке в базе данных, то есть это количество секунд должно быть больше либо равно, чем количество секунд начала периода и меньше либо равно, чем количество секунд конца периода. Это у нас дата finish m. Вот так.И здесь также сравнение вот с этими DATA START M и DATA FINISH M. Вот так поступим и посмотрим, что у нас получится. DATA FINISH M. Я сохраняю это все дело. И перекидываем индекс на сервер. Обновляем.И вот мы что получаем. У нас получается так, что в первом периоде теперь у нас 187 тысяч доход, себестоимость 45 800, ну и разность 141 200. А дальше у нас идут везде нули. Протягиваем, смотрим, везде нули. То есть учет факта, если мы сюда придем, то у нас все попадает в 12 месяц. ДД, ММ, ЭГГ.Ну, здесь, правда, наоборот, 2023-2012, это месяц, да, и у нас, соответственно, в декабрь все попадает. Ну, и вот то, что где у нас доход-доход закупки, да, у нас 120 плюс 57, ну, понятно, что все в декабрь. Ну, давайте теперь попробуем там, допустим, сделать январем 2024 года что-нибудь. Допустим, мы заходим и идем, это ноябрь, вот, идем в декабрь, в январь,И, допустим, у нас 10 января какой-нибудь номер здесь пишем. Пусть там номер... А, Б, В, 325. Тип документа, пусть будет товарная, накладная.Сумма 253 тысячи. Что это у нас? Товар, работа, услуга. Что у нас там? Сталь листовая, да? Пусть будет тоже стальной прокат. Статья уровня 1. Пусть будет доход. И здесь у нас...металлопродукция, металлопродукция. Вот мы вносим 253 тысячи, и эти 253 тысячи попадают в январь 2024 года. Давайте посмотрим, что у нас будет. Внести в базу. Вот у нас появляется накладная. Раздвинем. Стальной прокат. Теперь смотрим отчетность. Заходим в отчетность.да так в отчетности у нас и опять у нас проблема так теперь у нас проблема скорее всего это вот с этими давайте посмотрим так раз у нас 2024 год 0 1 10 и вот это вот 2024 год 0 1 10 это у нас что такое0, 1, 2, 3, 4, 5. Это у нас строка под номером 5. Заходим, смотрим. Значит, что у нас получается? Значит, идем вот в эту первую строчку и здесь берем не под номером 0, а под номером 5. Пересмотрим вот эту дату. Сейчас, видимо, здесь тоже какая-то возникает ошибка.Заходим в индекс. Сохраняем. Индекс копируем. Заменить. И смотрим, что у нас. Это у нас получится вот здесь, где отчет. 1 миллиард 702,969. Уже видим 702, а у нас вот здесь