20.01.2004, 18:36 | #1 |
Участник
|
Многоуровневый справочник
Недавно я убил немного времени чтобы создать многоуровневый справочник в Аксапта. Причем решение работает на MsSQL2000 и не используется рекурсия.
В группе дерева отображаются как элементы самой группы так и элементы вложенной подветви.Что у меня получилось можно посмотреть на вложенном скрин шоте. Если что обращайтесь. |
|
20.01.2004, 19:03 | #2 |
Участник
|
А чем он лучше Абстрактного классификатора ? ( к тому же, находящегося в отличие от Вашего в свободном доступе на данном форуме, что дает возможность "пощупать", а не картинки смотреть)
|
|
20.01.2004, 19:43 | #3 |
Участник
|
присоединяюсь к предудыщему вопросу.
и добавлю еще один: чем это лучше товарного каталога в корпоративном портале? |
|
21.01.2004, 13:18 | #4 |
Участник
|
Дайте мне пожалуйста линк на абстрактный классификатор.
И если он полезней моего, тоя я свой обязательно выложу для свободного использования. По-моему это логично. |
|
21.01.2004, 17:57 | #6 |
Участник
|
У меня Axapta 3.0 SP1 и классификатор поставить не получилось.
Даже глобальную компиляцию делал.Все равно ошибки лезут. |
|
21.01.2004, 18:10 | #7 |
Участник
|
обращайтесь к авторам, читайте описание.
если вы пытаетесь поставить абстрактный классфикатор только для того, чтобы решить надо ли выкладывать ваш многоуровневый справочник.... забейте и не выкладывайте, народ будет пользоваться классификатором или просто ставить фильтры как в CRM |
|
22.01.2004, 09:00 | #8 |
Участник
|
Да нет свой я по -любому выложу попозже. А поставить хочется чтобы чему - то новому научится. Все таки задачка не совсем тривиальная.
|
|
27.01.2004, 08:31 | #9 |
NavAx
|
кстати, а чего _нетривиального_ в этой задаче? Эт я к тому, что вообщем то НЕ будучи ГУРУ в аксаптовском программировании потратил на это дело 1 день. Причем не для номенклатуры, а в общем виде.
Потом выкинул, поскольку понял что никому кроме привыкших к 1С это нафиг не нужно.
__________________
И все они создания природы... |
|
27.01.2004, 11:21 | #10 |
Участник
|
То, что показано на картинке, действительно пишется за день.
Однако я бы не сказал, что это никому не нужно. Во многих внедренческих фирмах, что-то подобное написано, и на более продвинутом уровне. Единствено, я не понял зачем надо было делать частное решение под MS SQL? |
|
27.01.2004, 18:07 | #11 |
Banned
|
Вообще, прошу прощения за критику, но все эти решения, включая хваленый Абстрактный Классификатор, довольно слабые. Помимо чисто эстетических несовершенств (например, авторы не смогли нормально разместить код на классах, порой просто неряшливо писали код), предложенные решения страдают одним большим недостатком:
- авторы не смогли абстрагировать задачу и написать универсальную гибкую модификацию, не измененяя существующие формы системы (к примеру, InventTable, если речь идет о классификаторе номенклатуры), хотя, доказано, этого можно добиться. То же самое касается lookup'а. Результат: под каждую новую таблицу систему приходится дополнительно программировать. Плохо, плохо, плохо. Цитата:
Во многих внедренческих фирмах, что-то подобное написано, и на более продвинутом уровне.
Резюме: пользуйте коммерческие решения. |
|
27.01.2004, 18:43 | #12 |
Участник
|
Цитата:
Изначально опубликовано EVGL
предложенные решения страдают одним большим недостатком: - авторы не смогли абстрагировать задачу и написать универсальную гибкую модификацию, не измененяя существующие формы системы (к примеру, InventTable, если речь идет о классификаторе номенклатуры), хотя, доказано, этого можно добиться. И что подразумевается под неизменением существующих форм? Добавление контролов в runtime, если я правильно понял... |
|
27.01.2004, 19:06 | #13 |
Banned
|
Цитата:
В этой связи вопрос, как можно грамотно реализовать работу древовидного классификатора, не перекрывая метод selectionChanged FormTreeControl?
Цитата:
Добавление контролов в runtime, если я правильно понял...
|
|
|
За это сообщение автора поблагодарили: Lucky13 (1). |
28.01.2004, 15:06 | #14 |
Участник
|
Цитата:
Активизировав FormRun\controlMethodOverload или FormRun\controlMethodOverloadObject .
Однако, на мой взгляд, это лишь позволит избежать модификаций дизайна формы, добавлять и править методы самой формы придется. С одной стороны - это конечно не мало, особенно при переходе на новый сервиспак, но с другой - для каждой новой таблицы программировать придется... Круто было бы, если можно вообще не модифицировать форму, включая методы! p.s. В настоящий момент, перенос функциональности показа дерева, с шаблона для справочника номенклатуры, на новую таблицу займет у меня не более 15 минут. При переходе на новый сервиспак и того меньше. Стоит ли игра свеч? |
|
28.01.2004, 16:29 | #15 |
Banned
|
Цитата:
это лишь позволит избежать модификаций дизайна формы, добавлять и править методы самой формы придется
Не проверял, работает ли другой прием: создавать методы на SysSetupFormRun, активизируя потом FormRun\controlMethodOverload. Не столь сложно работать и с произвольным datasource. Единственное, что реализовать трудно, это обратную связь от источника данных: перемещение фокуса (выделенного элемента) по дереву синхронно с перемещением по datasource (т.е. с каждым вызовом datasource.active()). Но тут можно включить таймер c частотой ~100 мсек., который будет периодически проверять источник данных на предмет смены текущей записи. Пользователь и не заметит отличия. Цитата:
В настоящий момент, перенос функциональности показа дерева, с шаблона для справочника номенклатуры, на новую таблицу займет у меня не более 15 минут. При переходе на новый сервиспак и того меньше. Стоит ли игра свеч?
|
|
19.02.2007, 15:05 | #16 |
Участник
|
Мне очень понравилась Ваша идея и я сделал абстрактный классификатор, используя эту методику. Все работает отлично, единственное чего не получается сделать - просмотр к каким уровням классификатора пренадлежит выбранная запись т.к. для этого нужно вносить изменения в метод active формы, которая использует классификатор. Менять все формы где используется классификатор из-за одной функции не хочется, может есть такое же элегатное решение этой пробемы?
|
|
19.02.2007, 15:29 | #17 |
Участник
|
Нам посмотреть можно?
|
|
19.02.2007, 15:36 | #18 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: kashperuk (4). |
19.02.2007, 16:22 | #19 |
Участник
|
кстати про controlMethodOverloadObject.
можно ли использовать более одного обхекта обработчика одновременно (у меня не получилось) |
|
19.02.2007, 16:52 | #20 |
Участник
|
controlMethodOverloadObject это метод класса FormRun, поэтому у каждого его наследника может быть свой обработчик. Я делал у нескольких форм разные обработчики. Что касается моего классификатора, то если у формы уже был обработчик controlMethodOverloadObject, а я заменяю его своим, то естейственно первый обработчик действовать не будет. Я не нашел в Аксапте форм, которые используют controlMethodOverloadObject, поэтому это не существенно.
|
|