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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.04.2008, 12:46   #21  
Beast-L is offline
Beast-L
Участник
Аватар для Beast-L
 
104 / 21 (1) +++
Регистрация: 20.10.2006
Адрес: Киев
Цитата:
Сообщение от mazzy Посмотреть сообщение
Нет. Я предлагаю сначала думать, а потом братся за кодирование.

Перечитайте совет еще раз.
Думать это хорошо. Только вы попробуйте объяснить это тем пользователям которые этого делать не хотят. Если бы они думали то мне бы не нужно было такую задачу выполнять.
Старый 09.04.2008, 13:16   #22  
Beast-L is offline
Beast-L
Участник
Аватар для Beast-L
 
104 / 21 (1) +++
Регистрация: 20.10.2006
Адрес: Киев
Цитата:
Сообщение от glibs Посмотреть сообщение
В одном месте вы говорите, что нельзя менять через Сервис\Системная дата. Без оговорок.
Имелось ввиду в той компании в которой нужно запретить пользователю смену даты.

Цитата:
Сообщение от glibs Посмотреть сообщение
В другом, что можно менять в одной компании, но нельзя в другой.
Ну правильно в одной нужно запретить в другой разрешить.

Цитата:
Сообщение от glibs Посмотреть сообщение
В третьем, что сменив дату в третьей компании... нельзя МЕНЯТЬ в четвертой.
Извеняюсь может чего-то не так говорю но ниокаких третих и четвёртых я не говорил.


Давайте попытаюсь сказать иначе:

1) Нужно запретить в зависимости от компании смену системной даты пользователем вручную через сервис - системная дата или через двойной щелчёк по дате в статусе окна Axapta (запрещать смену даты в коде стандартных и других модулей не нужно).

2) Сбрасывать системную дату по серверу при переходе из компании в которой разрешено менять системную дату в компанию в которой запрещено менять системную дату.

Кроме того вариант с закрытием периода не подходит по двум причинам:
1) Дописаный функционал не имеет контроля этих периодов
2) Запрет изменения системной даты нужен в пределах дня, тоесть в случае использования закрытия периодов нужно будет закрывать каждый день период длительностью в один день. Кроме того некоторые умельцы умудряются вносить данные наперёд.

Последний раз редактировалось Beast-L; 09.04.2008 в 13:29.
Старый 09.04.2008, 13:45   #23  
petr is offline
petr
Участник
Соотечественники
 
561 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
А нельзя на validateWrite определенных таблиц повесить проверку на дату и если дата введенная пользователем отличатеся от today() то просто выдавать ошибку и активировать эту проверку только для определенных компаний.
Старый 09.04.2008, 13:50   #24  
Beast-L is offline
Beast-L
Участник
Аватар для Beast-L
 
104 / 21 (1) +++
Регистрация: 20.10.2006
Адрес: Киев
Цитата:
Сообщение от petr Посмотреть сообщение
А нельзя на validateWrite определенных таблиц повесить проверку на дату и если дата введенная пользователем отличатеся от today() то просто выдавать ошибку и активировать эту проверку только для определенных компаний.
Теоретически можно но это займёт очень много времени и ещё больше на вылавливание глюков после этого.
Старый 09.04.2008, 13:56   #25  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Цитата:
Сообщение от Beast-L
...
2) Сбрасывать системную дату по серверу при переходе из компании в которой разрешено менять системную дату в компанию в которой запрещено менять системную дату.
...
Это уже похоже на логичную постановку задачи.

Можно запрограммировать в форме выбора компании.

Но это кривое решение. Правильнее было бы зашить проверку в ваш функционал, и вообще не завязываться при разработке решения на системную дату, раз она так для него важна. Вы тупо режете целый ряд возможностей, который давал пользователям стандартный функционал ради своей криво написанной доработки.
__________________
С уважением,
glibs®
Старый 09.04.2008, 13:59   #26  
Beast-L is offline
Beast-L
Участник
Аватар для Beast-L
 
104 / 21 (1) +++
Регистрация: 20.10.2006
Адрес: Киев
Ну хорошо давайте предположим что нет никакого доработаного функционала. Как в этом случае решить такую задачу?
Старый 09.04.2008, 14:09   #27  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
petr вам уже написал. Только today() должно вызываться на АОСе.
__________________
С уважением,
glibs®
Старый 09.04.2008, 14:18   #28  
Beast-L is offline
Beast-L
Участник
Аватар для Beast-L
 
104 / 21 (1) +++
Регистрация: 20.10.2006
Адрес: Киев
Ещё какие нибудь варианты есть?
Старый 09.04.2008, 14:44   #29  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от mazzy
Ну, дык допишите ваш функционал еще чуть-чуть.
Пусть он проверяет периоды. На таблице периодов есть необходимые методы для проверки.
Цитата:
Сообщение от Beast-L Посмотреть сообщение
Всё дело в трудозатратах. А вообще если заплатят - напишем.
Вам по любому придется "допиливать" функционал.

По сути, Ваше желание сводится к тому, чтобы иметь дополнительную таблицу для хранения текущей системной даты в каждой компании (или сдвига в днях от текущей даты). Ведь чтобы реализовать автоматическое переключение даты при переходе в другую компанию надо знать на какую дату переключаться.

Вот и оцените, какие трудозатраты будут выше: допиливание ранее сделанного функционала или создание нового функционала.
Старый 09.04.2008, 14:50   #30  
Beast-L is offline
Beast-L
Участник
Аватар для Beast-L
 
104 / 21 (1) +++
Регистрация: 20.10.2006
Адрес: Киев
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Вам по любому придется "допиливать" функционал.

По сути, Ваше желание сводится к тому, чтобы иметь дополнительную таблицу для хранения текущей системной даты в каждой компании (или сдвига в днях от текущей даты). Ведь чтобы реализовать автоматическое переключение даты при переходе в другую компанию надо знать на какую дату переключаться.

Вот и оцените, какие трудозатраты будут выше: допиливание ранее сделанного функционала или создание нового функционала.
Ну а если просто сбрасывать дату в серверную и не восстанавливать при переходе обратно?

Ведь основная цель - не дать пользователю внести данные задним числом в той компании где ему это делать не позволено.
Старый 09.04.2008, 14:54   #31  
3oppo is offline
3oppo
Участник
Аватар для 3oppo
 
222 / 32 (2) +++
Регистрация: 30.06.2005
Сколько у вас таких пользователей? Если их меньше 20 то создайте двух разных юзеров для двух разных компаний, одному разрешите менять дату другому нет, вот и вся проблема! Так будет намного правильней, и логичней, чем «городить огород» на период внедрения. Не вижу не каких проблем в том, что бы когда пользователь собрался вводить исторические данные, он взял бы и зашел под другим именем.
Старый 09.04.2008, 15:05   #32  
Beast-L is offline
Beast-L
Участник
Аватар для Beast-L
 
104 / 21 (1) +++
Регистрация: 20.10.2006
Адрес: Киев
Цитата:
Сообщение от 3oppo Посмотреть сообщение
Сколько у вас таких пользователей? Если их меньше 20 то создайте двух разных юзеров для двух разных компаний, одному разрешите менять дату другому нет, вот и вся проблема! Так будет намного правильней, и логичней, чем «городить огород» на период внедрения. Не вижу не каких проблем в том, что бы когда пользователь собрался вводить исторические данные, он взял бы и зашел под другим именем.
Предлагал такой вариант, но было отказано по той простой причине что пользователей 470 это только пока.
Старый 09.04.2008, 15:21   #33  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
А теперь обратите внимание, что в 5ке (Microsoft Dynamics AX 2009) будет кардинально переделана работа с временем и датами. Дата и время - только из 1 точки: сервера базы данных, т.к. к нему цепляется множество АОСов, которые могут находиться в разных часовых поясах. Время - по UMT, а уже на клиенте будет отбражено в соответствии с часовым поясом и настройками клиенты.

Подумайте, если будете со временем мигрировать на 5+.

С Уважением,
Георгий
Старый 09.04.2008, 15:43   #34  
Beast-L is offline
Beast-L
Участник
Аватар для Beast-L
 
104 / 21 (1) +++
Регистрация: 20.10.2006
Адрес: Киев
Цитата:
Сообщение от George Nordic Посмотреть сообщение
А теперь обратите внимание, что в 5ке (Microsoft Dynamics AX 2009) будет кардинально переделана работа с временем и датами. Дата и время - только из 1 точки: сервера базы данных, т.к. к нему цепляется множество АОСов, которые могут находиться в разных часовых поясах. Время - по UMT, а уже на клиенте будет отбражено в соответствии с часовым поясом и настройками клиенты.

Подумайте, если будете со временем мигрировать на 5+.

С Уважением,
Георгий
Когдато будем обязательно. Спасибо учтём!
Старый 22.04.2008, 18:06   #35  
Beast-L is offline
Beast-L
Участник
Аватар для Beast-L
 
104 / 21 (1) +++
Регистрация: 20.10.2006
Адрес: Киев
Кому всётаки интересно решение:

\Classes\Application\setDefaultCompany

X++:
......................................................................
    }

    #define.WarnFlag(0x08)

    if (dialog && new Session().clientKind() != ClientType::COMObject)
    {
        if (thisCompany != _selectableDataArea)
        {
            if (!cache.get(classstr(info), identifierstr(Autologoff), false))
            {
                select userInfo
                    where userInfo.id == curUserId();

                if (userInfo && userInfo.generalInfo & #warnFlag)
                    warning(strFmt("@SYS53441", _selectableDataArea));

            }
        }
    }

    if(SecurityKeySet::getMenuItemAccess(menuitemdisplaystr(SystemDate), MenuItemType::Display) <= AccessType::View)
    {
        if(getServerDate() != systemdateget())
        {
            warning(strfmt("Дата изменена с %1 на %2", systemdateget(), getServerDate()));

            systemdateset(getServerDate());
        }
    }

    inventDim::findOrCreateBlank();

........................................
\Forms\SystemDate\Methods\init

X++:
void init()
{
    ;

    if(SecurityKeySet::getMenuItemAccess(menuitemdisplaystr(SystemDate), MenuItemType::Display) == AccessType::NoAccess)
    {
        throw error("Нет прав для этой операции");
    }

    super();

    machineDate.dateValue(today());
    machineTime.value(timenow());

    systemDateOrig = systemdateget();
    newDate.dateValue(systemDateOrig);

    if(SecurityKeySet::getMenuItemAccess(menuitemdisplaystr(SystemDate), MenuItemType::Display) == AccessType::View)
    {
        NewDate.allowEdit(false);
    }
}
Пока что лучше не нашлось.

Последний раз редактировалось Beast-L; 22.04.2008 в 18:16.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Влияние даты поставки (Закупка) на сводное планирование RSJustInTime DAX: Функционал 8 06.06.2005 14:25
Lookup даты для выбора месяца Antidot DAX: Программирование 0 21.01.2005 21:24
Очень не хочеться вручную устанавливать даты для всех строк журнала .... ATimTim DAX: Функционал 1 14.09.2004 19:33
Как запретить смену компании? raz DAX: Администрирование 7 08.08.2003 12:17
Проверка даты Wamr DAX: Программирование 9 15.12.2002 17:28

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

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

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