AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.02.2007, 16:33   #1  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
X++:
static void Job55(Args _args)
{
    date DateOfLastWeekdayInMonth (int _lastWeekday, date _date = today () )
    {
        date    eomDate     = dateStartMth( _date );
        int     eomWeekday  = dayOfWk( eomDate );
        return  eomDate + ( _lastWeekday - eomWeekday ) + (eomWeekday > _lastWeekday ? 7 : 0);
    }
    ;

    info( strFmt('%1', DateOfLastWeekdayInMonth( 1 )) );
    info( strFmt('%1', DateOfLastWeekdayInMonth( 2 )) );
    info( strFmt('%1', DateOfLastWeekdayInMonth( 3 )) );
    info( strFmt('%1', DateOfLastWeekdayInMonth( 4 )) );
    info( strFmt('%1', DateOfLastWeekdayInMonth( 5 )) );
    info( strFmt('%1', DateOfLastWeekdayInMonth( 6 )) );
    info( strFmt('%1', DateOfLastWeekdayInMonth( 7 )) );
}
все ок, просто протупил малость, конец рабочего дня
__________________
Рабочий день сокращает жизнь на 8 часов
За это сообщение автора поблагодарили: moid (1).
Старый 21.02.2007, 16:41   #2  
moid is offline
moid
Участник
 
84 / 10 (1) +
Регистрация: 05.02.2007
Спасибо все работает.
А что такое "Одобрить сообщение"?
Старый 21.02.2007, 16:44   #3  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
Цитата:
Сообщение от moid Посмотреть сообщение
Спасибо все работает.
А что такое "Одобрить сообщение"?
Зеленый квадратик рядом с ником, вот когда одобряеш второе число повышается это типа рейтенга
__________________
Рабочий день сокращает жизнь на 8 часов
Старый 22.02.2007, 13:47   #4  
moid is offline
moid
Участник
 
84 / 10 (1) +
Регистрация: 05.02.2007
Продолжаем...

мне нужно к заданной дате прибавить несколько месяцев и число изменить на другое...

Пример:
Есть дата 22.02.2007, нужно число установить в 12 и прибавить 3 месяца. Причем если бы месяц был 11(22.11.2007), то год увеличивается и месяц = 2 (12.02.2008)
Старый 22.02.2007, 13:50   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от moid Посмотреть сообщение
Продолжаем...

мне нужно к заданной дате прибавить несколько месяцев и число изменить на другое...

Пример:
Есть дата 22.02.2007, нужно число установить в 12 и прибавить 3 месяца. Причем если бы месяц был 11(22.11.2007), то год увеличивается и месяц = 2 (12.02.2008)
Может вы разберетесь как работают Интервалы дат в Аксапте?
http://axapta.mazzy.ru/lib/ledgerperiodcode/
__________________
полезное на axForum, github, vk, coub.
Старый 22.02.2007, 14:12   #6  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
что ж вы там такое с этими датами делаете??

X++:
    print mkDate(12, mthOfYr(nextQtr(SystemDateGet())), year(nextQtr(SystemDateGet())));
    pause;
Старый 22.02.2007, 14:32   #7  
moid is offline
moid
Участник
 
84 / 10 (1) +
Регистрация: 05.02.2007
Цитата:
print mkDate(12, mthOfYr(nextQtr(SystemDateGet())), year(nextQtr(SystemDateGet())));
Что такое nextQtr ?
И как в этой конструкции добавить несколько месяцев и лет?
Старый 22.02.2007, 14:34   #8  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
KERNDOC://Functions/nextQtr

См. nextYr, prevYr, nextMth, prevMth, ...
Kernel Functions, одним словом. (Shift + F4)
Старый 22.02.2007, 14:48   #9  
moid is offline
moid
Участник
 
84 / 10 (1) +
Регистрация: 05.02.2007
Цитата:
KERNDOC://Functions/nextQtr

См. nextYr, prevYr, nextMth, prevMth, ...
Kernel Functions, одним словом. (Shift + F4)
Т.е. чтобы прибавить 10 месяцев нужно 10 раз вызвать nextMth.
А другого способа нет?
Старый 22.02.2007, 14:51   #10  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Есть!

Можно 1 раз вызвать nextYr и два раза prevMth()

А вообще, если уж пишите, попробуйте просто с использованием этих функций сделать универсальную свою.

А про интервалы вам не понравился совет?
Старый 23.02.2007, 11:21   #11  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,500 / 1098 (40) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Ну что все так набросились на человека...
А то что встроенный в аксапту аутлук позволит реализовать workflow, любые одобрения, обмен сообщениями, посылать ссылки на документы, котрые будут открывать эти документы и прочее, конечно если все это в нем допилить.
Старый 23.02.2007, 11:54   #12  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от raz Посмотреть сообщение
Ну что все так набросились на человека...
А то что встроенный в аксапту аутлук позволит реализовать workflow, любые одобрения, обмен сообщениями, посылать ссылки на документы, котрые будут открывать эти документы и прочее, конечно если все это в нем допилить.
аутлук не реализовывает workflow.
одобрения см в управлении платежами
ссылки на документы см в документооброте.

разве что обмен сообщениями...
__________________
полезное на axForum, github, vk, coub.
Старый 23.02.2007, 13:04   #13  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,500 / 1098 (40) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Цитата:
Сообщение от mazzy Посмотреть сообщение
аутлук не реализовывает workflow.
я же не про стандартный аутлук говорю, а про самописный, и при его помощи можно реализовать подобие workflow, что бы некий документ прошел несколько человек, котрые сделав с ним что то, могли породить другие докуметы и т.д.
документ - это не файл *.doc, а аксаптовый журнал (sales, purch, ledger, invent...).

Цитата:
Сообщение от mazzy Посмотреть сообщение
одобрения см в управлении платежами
ну это жалкое подобие того что нужно
Старый 28.02.2007, 16:30   #14  
moid is offline
moid
Участник
 
84 / 10 (1) +
Регистрация: 05.02.2007
Есть строка (1100001), которая определяет день недели. Единицы означают, что день выбран (понедельник,вторник, воскресенье). Нули соответственно не выбранные дни.

Нужна функция, в параметрах которой передаются: дата начала, кол-во недель.

X++:
date WeekNt(date _date, int Coun)
{
//нужно, чтобы эта функция возвращала дату следующего выбранного дня недели 
//относительно _date + Coun
//К примеру: к 28.02.2007 прибавляем 3 недели и ф-я должна вернуть выбранный
// день. 
}
Дальше если взять дату от полученного дня, то должна вернуться дата
следующего выбранного дня, если больше выбранных дней нет в этой неделе, то к
дате прибавляем Coun и смотрим новую неделю

Последний раз редактировалось moid; 28.02.2007 в 16:38.
Старый 28.02.2007, 17:03   #15  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от moid Посмотреть сообщение
Дальше если взять дату от полученного дня, то должна вернуться дата
следующего выбранного дня, если больше выбранных дней нет в этой неделе, то к
дате прибавляем Coun и смотрим новую неделю
(ой, маманя... )
А можно от руки расписать несколько последовательных вызовов функции и значений, которые будут возвращаться?
Может, чисто визуально глядя на последовательность что-нить и родится... Распишите здесь, вместе поглядим

P.S. ИМХО Coun бы только куда-нибудь довели до "общепринятого": либо до Count, либо до cnt, а то прямо на стуле ерзаю от такого идентификатора
Старый 28.02.2007, 17:08   #16  
moid is offline
moid
Участник
 
84 / 10 (1) +
Регистрация: 05.02.2007
Цитата:
Распишите здесь, вместе поглядим
Если через 30 мин сам ничего не придумаю... тода попытаюсь объяснить подробнее..
Если есть Outlook можно там посмотреть как работает.
Задачи -> Повторения -> Еженедельно -> Первый пункт
Старый 28.02.2007, 17:36   #17  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
//К примеру: к 28.02.2007 прибавляем 3 недели и ф-я должна вернуть выбранный
// день.
В Global есть функция dateMthFwd, возвращающая дату, отстоящую от заданной на целое кол-во месяцев (вперед или назад). Посмотрите в нее. Для месяцев это действительно не совсем тривиально, потому что месяцы имеют разную продолжительность в днях. Функция для месяцев должна корректно учитывать особенно даты в концах месяцев - с 28 по 31 число. Т.е. 31.01.2007 + 1 месяц должно = 28.02.2007.

Недели же все одинаковые - по 7 дней. Поэтому дата, отстоящая вперед (назад) на заданное кол-во недель, получается простым прибавлением (вычитанием) к заданной дате кол-ва дней, кратного 7.

Хотя, учитывая Ваш шаблон 1100001, Вам, наверное, хочется, чтобы некая функция генерила примерно такую последовательность:
1, 2, 7, 8, 9, 14, 15, 16, 21... Нет?
Старый 28.02.2007, 18:11   #18  
moid is offline
moid
Участник
 
84 / 10 (1) +
Регистрация: 05.02.2007
Я сделал. Глючит время-от времени где-то. Отладчиком еще пройдусь и завтра скину код
Старый 01.03.2007, 09:45   #19  
moid is offline
moid
Участник
 
84 / 10 (1) +
Регистрация: 05.02.2007
PHP код:
static Date WeekSel(date _dateint Counstr ST)
{
    
int a;
    ;
    if(
strRightPos(ST,'1') > dayofwk(_date))
    {
       for(
a=1a<=7a++)
       {
         if((
Substr(ST,a,1) == "1") && dayofwk(_date)) //есть выбранный день
         
{
            return (
mkdate(dayofmth(_date)+ a-dayofwk(_date), mthofyr(_date), year(_date)));
         }
       }
    }
    else
      return(((
_date) + 7*Coun) - dayofwk(_date) + strLeftPos(ST,'1'));

Старый 22.02.2007, 14:24   #20  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от moid Посмотреть сообщение
Outlook на аксапте переписываю.
Да, фраза не для слабонервных.

А зачем?
тот, что в Офисе от Microsoft плохо работает?

Инетересно было бы посмотреть, что получится.
Или это строго коммерческая разработка?
Теги
дата

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Подробный отчет по датам к оплате ax_f DAX: Функционал 3 15.11.2004 17:10
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:41.