01.11.2011, 13:32 | #21 |
Administrator
|
Цитата:
Сообщение от Pustik
А если нужно отображать клиента в зависимости от каких-либо условий, которые не подходят под логику Inner Join, Exist Join и т.д. Например, есть форма, которая отображает список номенклатур проданных клиентам за период. В ней рядом с номенклатурой я хочу видеть клиента, которому продал эту номенклатуру по самой дорогой цене за этот период.
Нет, Вы всё-таки подумайте: как ограничить доступ на display-метод, определённый на форме?
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
01.11.2011, 14:10 | #22 |
Участник
|
Согласен с тем, что ответственность за отображение/скрытие контролов нужно по максимому перекладывать на ядро системы. В случае display-метода, этого можно добиться, например, научив систему анализировать relation на расширенном типе данных у значения возвращаемого методом
|
|
01.11.2011, 16:14 | #23 |
Ищущий знания...
|
Читал, читал ветку, и решил сюда же запостить пожелание о том, что бы была возможность перейти к основной таблице из поля диалога, который был создан с помощью класса Dialog. Это конечно мелочь, но иногда очень этого не хватает.
Ну конечно проверять на основе какого EDT (и вообще на его ли основе) создано поле в диалоге, и если у этого EDT есть Relation (ну или заполнено свойство HelpForm), то дать возможность перейти к основной таблице.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
01.11.2011, 16:37 | #24 |
Участник
|
Цитата:
Цитата:
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. |
|
01.11.2011, 17:25 | #25 |
Administrator
|
Цитата:
Цитата:
Сообщение от lev
Читал, читал ветку, и решил сюда же запостить пожелание о том, что бы была возможность перейти к основной таблице из поля диалога, который был создан с помощью класса Dialog. Это конечно мелочь, но иногда очень этого не хватает.
Ну конечно проверять на основе какого EDT (и вообще на его ли основе) создано поле в диалоге, и если у этого EDT есть Relation (ну или заполнено свойство HelpForm), то дать возможность перейти к основной таблице. Цитата:
Цитата:
Сообщение от Pustik
А чего тут думать-то у display-метода есть EDT, который он возвращает.У EDT relation.Определили таблицу.Смотрим свойство FormRef у соответствующей таблицы, если FormRef пустой тогда вот-так Работа с Lookup.Определили форму.Итак нашли и таблицу и форму - все нужные нам объекты. Дальше определяем права у этих объектов в таблице настройки прав стандартным образом. Думаю если найдены объекты с правами не должно быть проблем.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
01.11.2011, 17:39 | #26 |
Ищущий знания...
|
А какое обоснование ругани было (если не секрет) ?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
01.11.2011, 18:06 | #27 |
Участник
|
Цитата:
Цитата:
Дак ведь здесь речь-то идет о возможности "Перейти к основной таблице". Т.е. права на этот display-метод настроены уже изначально. И если пользователь видит этот метод значит права настроены так, что он должен видить этот метод. Остается проверить права как-раз на объекты, которые он может открыть через "Перейти к основной таблице". Или я что-то не понимаю. Поправьте если я не прав.
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. |
|
01.11.2011, 18:11 | #28 |
Administrator
|
Ну, уж прямо ругани-то не было Если честно, подробностей я уже не помню. Задача была поставлена так: сделать, чтобы работало, как все остальные стандартные диалоги. Возможно, идея в том, что диалог предполагает некоторую модальность, и не хотелось давать пользователям лишний повод про неё забыть.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
01.11.2011, 18:19 | #29 |
Administrator
|
Цитата:
Цитата:
Сообщение от Pustik
Дак ведь здесь речь-то идет о возможности "Перейти к основной таблице". Т.е. права на этот display-метод настроены уже изначально. И если пользователь видит этот метод значит права настроены так, что он должен видить этот метод. Остается проверить права как-раз на объекты, которые он может открыть через "Перейти к основной таблице". Или я что-то не понимаю. Поправьте если я не прав.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
01.11.2011, 18:37 | #30 |
Участник
|
Цитата:
Согласен про анализ Relation на ExtendedDataType я возможно поторопился. Но анализ самих ExtendedDataType в теории может предоставить такой инструмент. Как вы считаете, ExtendedDataType гипотетически может выступать объектом-еденицей настройки прав доступа? На память не помню а проверить возможности сейчас нет. Есть ли у объекта ExtendedDataType свойство SecurityKey? |
|
01.11.2011, 18:49 | #31 |
Administrator
|
Цитата:
Цитата:
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
02.11.2011, 08:49 | #32 |
Ищущий знания...
|
Цитата:
Сообщение от Maxim Gorbunov
Ну, уж прямо ругани-то не было Если честно, подробностей я уже не помню. Задача была поставлена так: сделать, чтобы работало, как все остальные стандартные диалоги. Возможно, идея в том, что диалог предполагает некоторую модальность, и не хотелось давать пользователям лишний повод про неё забыть.
По поводу "модальности" диалогового окна, вопрос спорный... В системе диалог открывается не как модальная форма, и это хорошо! Ведь иногда, что бы заполнить поля диалога, нужно сходить в некоторые справочники, и уточнить какое же значение нужно выбрать. Если диалог будет модальным, то его надо будет в начале закрыть, потом уже ходить по справочникам, а вся информация которая уже была введена в диалоге потеряется и её надо будет вводить заново, что не есть хорошо (ведь на диалоге может быть с десяток полей, и вот заполнив 9 (15) полей ты понимаешь, что сейчас тебе надо закрыть окно, а потом заново 9-ть (15-ть) полей заполнить... уверен пользователь по этому поводу немного расстроился бы ). Так вот, я как раз для таких случаев (когда надо посмотреть уточняющие параметры в справочниках для указания какого то значения в диалоге) и предлагаю добавить возможность перехода к форме основной таблицы прям из диалога, мне кажется это очень удобным (на личном опыте, очень часто об этом вспоминаю ).
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
26.04.2012, 08:09 | #33 |
Мрачный тип
|
Мы пользуем дописанную функцию в классе Global - и для display/edit - методов, и для контролов, передавая в нее расширенный тип и значение
X++: static void makeJump(int _typeId, Anytype _id) { SysDictType dictType; SysDictRelation typeRelation; TableId relationTable; FieldId relationField; SysDictTable dictTable; Common record; str formRef; FormRun fr; Args args; ; dictType = new SysDictType(typeid2extendedTypeId(_typeId)); if(dictType) { typeRelation = dictType.relationObject(); relationTable = typeRelation.table(); relationField = typeRelation.lineExternTableValue(1); if(relationTable != 0) { dictTable = new SysDictTable(relationTable); if(dictTable) { formRef = dictTable.formRef(); if(formRef) { record = dictTable.makeRecord(); select record where record.(relationField) == _id; if(record) { args = new Args(formRef); args.record(record); fr = new FormRun(args); fr.init(); fr.run(); fr.wait(); } else throw error(strfmt('Для таблицы %1 не найдено значение поля %2 равное "%3"', tableid2name(relationTable), fieldid2name(relationTable, relationField), _id)); } else throw error(strfmt('Таблица %1 не имеет определенной в АОТ формы отображения', tableid2name(relationTable))); } else throw error(strfmt('У расширенного типа %1 в АОТ указана в качестве связанной несуществующая таблица с кодом %2', dictType.name(), relationTable)); } else throw error(strfmt('Расширенный тип %1 не имеет в АОТ указания на связанныую с ним таблицу', dictType.name())); } else throw error(strfmt('В системе отсуствует расширенный тип данных с кодом %1', _typeId)); }
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
|
За это сообщение автора поблагодарили: macklakov (5), Logger (5), lev (4), Krasher (1), S.Kuskov (5). |
26.04.2012, 19:04 | #34 |
Британский учённый
|
Все же обычно display\edit методы отображают неключевые данные, чаще расчетные. И привязать их наверняка просто невозможно. Но если нужно добавить переход к форме, то можно так:
Пример перехода к форме наменклатуры по значению из дисплейного метода. X++: public int showContextMenu(int _menuHandle) { Args args; FormRun formRun; int goto; int selection; PopupMenu popupMenu = PopupMenu::create(_menuHandle, this.hWnd()); ; popupMenu.insertBreak(); goto = popupMenu.insertItem("Go to form"); selection = popupMenu.draw(); switch (selection) { case goto: args = new Args(); args.name(formstr(InventTable)); args.record(InventTable::find(this.valueStr())); formRun = classFactory.formRunClass(args); formRun.init(); formRun.run(); return 0; default: return selection; } return selection; }
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
|
За это сообщение автора поблагодарили: S.Kuskov (5). |
26.04.2012, 19:24 | #35 |
Участник
|
Уже обсуждалось на первой странице. В случае, когда данные не могут быть привязаны к какой-либо "основной таблице", то и расширенный тип даных для отображения/ввода таких данных логично использовать без relation'а. По поводу таких случаев вопросов нет. Вопрос, поднятый в этой теме, касается других случаев, когда для создания display/edit методов программист осознано выбирает расширенный тип данных связанный relation'ом с определённой "осовной таблицей". В таких случаях можно было бы и реализовать возможность перехода к основной таблице. И совсем не нужно анализировать содержащееся в контроле значение, для определения направления перехода. Направление перехода изначально предопределено relation'ом на ExtendedDataType.
|
|