25.01.2007, 11:21 | #1 |
MCTS
|
Видимость поля
Здравствуйте. Вот такой вопрос. В таблицу добавляем новое поле. Нужно скрыть это поле во всех формах где оно есть, если конфигурационный ключ нашей фирмы не включен. Конечно, можно было бы это сделать и через форму, но ведь легче скрывать поле прямо в самой таблице. Вопрос в том, если вообще это возможно, в какой метод это засунуть. И второй вопрос, следует ли это делать?
ну, или хотя бы как поле таблицы программно сделать невидимым, то есть программно установить Visible этого поля в No? Последний раз редактировалось Eldar9x; 25.01.2007 в 12:10. |
|
25.01.2007, 12:10 | #2 |
Участник
|
Если у поля заполнить свойство ConfigurationKey то что будет неправильно?
|
|
25.01.2007, 12:20 | #3 |
Axapta
|
А разве это не приведет к потере данных при отключенном ключе?
Отключение же просто физически удалит это поле в БД, а не скроет. |
|
25.01.2007, 12:21 | #4 |
MCTS
|
Именно так и хотел сделать, но вот это Создание feature key на поле формы
заставило искать другой путь Таким образом (не знаю насчет корректности решения) хочу в методе InitValue до супера проверить конфиг. ключ и отключить видимость поля в самой же таблице, но вот не знаю как обратиться непосредственно к полю... К тому же сообщение oip открыло еще одну проблему...- поэтому программно Последний раз редактировалось Eldar9x; 25.01.2007 в 12:27. |
|
25.01.2007, 12:42 | #5 |
Участник
|
Цитата:
Сообщение от Eldar9x
Именно так и хотел сделать, но вот это Создание feature key на поле формы
заставило искать другой путь Таким образом (не знаю насчет корректности решения) хочу в методе InitValue до супера проверить конфиг. ключ и отключить видимость поля в самой же таблице, но вот не знаю как обратиться непосредственно к полю... К тому же сообщение oip открыло еще одну проблему...- поэтому программно В Ax3.0 работают Configuration key и Security key. Возвращаясь к исходному вопросу. Если вы хотите физически удалить данные, то нужно использовать configuration key. Если вы хотите "скрыть", то нужно использовать security key. |
|
25.01.2007, 12:56 | #6 |
Axapta
|
Обратиться можно, например, так:
X++: static void setVisible(Args _args) { #AOT #define.Visible('Visible') #define.Fields('Fields') #define.No('No') treeNode treeNode; treeNode fieldNode; str properties; str tableName = tableid2Name(tableNum(tableOip)); str fieldName = fieldid2name(tableNum(tableOip), fieldNum(tableOip, field1)); str myTablePath = #TablesPath + '\\' + tableName; str myFieldPath = myTablePath + '\\' + #Fields + '\\' + fieldName; ; treeNode = infolog.findNode(myTablePath); fieldNode = infolog.findNode(myFieldPath); properties = fieldNode.AOTgetProperties(); properties = setProperty(properties, #Visible, #No); fieldNode.AOTsetProperties(properties); treeNode.AOTsave(); } |
|
|
За это сообщение автора поблагодарили: Eldar9x (1). |
25.01.2007, 13:14 | #7 |
Участник
|
может тогда просто не давать никому прав на это поле и всё?
можно даже без securityKey - если есть SK на таблице то можно добраться и до поля Последний раз редактировалось belugin; 25.01.2007 в 13:20. |
|
25.01.2007, 13:21 | #8 |
Axapta
|
|
|
25.01.2007, 13:24 | #9 |
Участник
|
Цитата:
Таким образом (не знаю насчет корректности решения) хочу в методе InitValue до супера проверить конфиг. ключ и отключить видимость поля в самой же таблице, но вот не знаю как обратиться непосредственно к полю...
2. теоретически можно подкорячить Класс SysSetupFormRun и обходить все датасурсы формы скрывая поле. |
|
25.01.2007, 13:29 | #10 |
MCTS
|
Маззи, спасибо, за объяснение. Oip, огромное спасибо за код, то что надо. Все таки буду делать программно (потом легче отыскать ))); Belugin, что значит не давать прав?, поле должно быть доступно если ключ активен...
|
|
25.01.2007, 13:31 | #11 |
MCTS
|
2 belugin: то есть пресечь проблему в "корне" (т.е. таблице) не выйдет? Все равно придется копать в сторону форм и классов? На мой взгляд, вполне логично, вырубить поле в случае нактивного конф. ключа прямо там на таблице, а не копаться в различных формах где это поле показывается. То есть обрубаем в корне, исчезает везде...
Последний раз редактировалось Eldar9x; 25.01.2007 в 13:35. |
|
25.01.2007, 13:37 | #12 |
Участник
|
вот еще идея - создать SK его задать для поля, а у него уже установить CK.
|
|
25.01.2007, 13:40 | #13 |
Участник
|
Вас проклянут все разработчики, которые будут потом работать в вашим кодом.
За то, что вы используете нештатный механизм для решения штатной задачи. Этот топик очень напоминает мультик про Львенка и Черепаху. http://hedgehoginmist.narod.ru/turtle.html Цитата:
Они недовольно посмотрели друг на друга и вместе закончили:
- И на солнышко гляжу! - И всё-таки надо петь лежу! - сказала Черепаха. - Это же я придумала! - А как же я буду петь лежу, если я сижу? - спросил Львёнок. - А ты ляг, и тогда всё будет по правде. Ты будешь лежать и петь: "Только я всё лежу!" - А я не люблю лежать, - сказал Львёнок. - Я люблю бегать. Ну, в крайнем случае - сидеть! - Но ты же лежал, когда подкрался ко мне! - Я лежал, только чтобы подслушать песню, - сказал Львёнок. - Я лежу только в особенных случаях. - Ну, а как ты спишь? Сидя, что ли? - спросила Черепаха. - Нет, сплю я лёжа. Но когда я сплю, я же не пою! - А ты представь себе, что ты спишь и поёшь!.. |
|
25.01.2007, 13:44 | #14 |
MCTS
|
Mazzy, на 100% уверен, что ведущий программист скажет также и заставит переделывать, но уж если проблема возникла, то хочу ее решить...этим путем. Belugin, а каким образом задать SK для поля таблицы, или в свойстве ConfigurationKey поля можно задать не только CK, но и SK?
Последний раз редактировалось Eldar9x; 25.01.2007 в 13:50. |
|
25.01.2007, 13:48 | #15 |
Axapta
|
Зря. Впрочем, как скажите.
|
|
25.01.2007, 13:50 | #16 |
Участник
|
Я ни на что не намекаю, но здесь прозвучала по этому поводу хорошая фраза
"Только самоубийца будет работать с такими, как ты" (что-то типа, а програмист вместо того, чтобы просто решить задачу, будет неделю придумывать и реализовывать извращенный алгоритм, который позволит сделать точно то же, что можно было сделать стандартным способом, который уже много раз испробован) Это конечно весело и прикольно, а сишнику вдвойне, но это не так, как следует делать на языке ERP системы |
|
25.01.2007, 13:51 | #17 |
MCTS
|
дык....
|
|
25.01.2007, 13:54 | #18 |
Участник
|
Цитата:
Сообщение от kashperuk
(что-то типа, а програмист вместо того, чтобы просто решить задачу, будет неделю придумывать и реализовывать извращенный алгоритм, который позволит сделать точно то же, что можно было сделать стандартным способом, который уже много раз испробован) Это конечно весело и прикольно, а сишнику вдвойне, но это не так, как следует делать на языке ERP системы
Но в основном эти решения не используются.........
__________________
Рабочий день сокращает жизнь на 8 часов |
|
25.01.2007, 13:57 | #19 |
Участник
|
Цитата:
Но, насколько мне известно, суть проблемы - сделать то, что нужно, и побыстрее |
|
25.01.2007, 14:00 | #20 |
Axapta
|
Цитата:
... Большое время подготовки, указанное нами, подразумевает подготовку грамотного разработчика. Мы вкладываем в это понятие не только умение кодировать - внутренняя среда и язык программирования Microsoft Axapta достаточно просты (а кодировать программисту со знанием Java и C++ несложно научиться за неделю). Грамотный разработчик должен знать существующиющие функциональные возможности и вести разработку, максимально использую уже имеющийся материал." Из Книги А. Еременко. |
|
|
|