17.03.2007, 00:04 | #1 |
Участник
|
Помогите советом профи ! Пользователи поделены на несколько групп в таблице User Setup. Каждая группа может видеть только заказы своей группы в 36-й таблице. Основываясь на User Setup(US) добавляю след.код на OnOpenForm для 36-й таблицы [codebox]IF US.GET(USERID) THEN BEGIN находим пользователя в User Setup US1.SETRANGE(US1.UserGroup,US.UserGroup) фильтруем User Setup по группе IF US1.FIND('-') THEN REPEAT IF UserFilter='' THEN UserFilter=US1.CodeUser ELSE UserFilter:=UserFilter+'|'+US1.CodeUser составной фильтр С1|C2|C3......... до 256 символов UNTIL US1.NEXT=0 FILTERGROUP(2) SETFILTER(SalesPersonCode,UserFilter) накладываю фильтр на 36 таблицу FILTERGROUP(0) END[/codebox] При запуске формы выдает ошибку. Фильтр C1|C2|C3...... слишком длинный для SalesPersonCode Code(10) Подскажите пожалуйста что я делаю не так. |
|
17.03.2007, 13:19 | #2 |
Участник
|
В приведенном коде ошибок нет.
Убедитесь в том, что в таблице User Setup поле CodeUser имеет длину 10... А лучше выложите сообщение об ошибке таким, каким оно появляется у Вас на экране. |
|
17.03.2007, 13:52 | #3 |
Участник
|
Если я правильно понял - весь смысл в том, что некоторым пользователям присвоена некая группа и код менеджера. И потом менеджеры должны видеть заказы своей группы?
Не очень хороший путь вы выбрали... А, если у вас будет количество менеджеров чтолько, что в 250 символов не влезете? Есть такое понятие - Responsibility Center (Дистрибуторский Центр). Он как раз и предназначен для разделения центров ответственности. Лучше играть с ним, как мне кажется. Или идти по тому же принципу. Добавьте эту группу не в User Setup, а в саму карточку менеджера. При вставке менеджера в заказ - копируйте в заказ поле группы. Ну и, разумеется, при входе в заказ из User Setup делаете соответствие, что за менеджер вошел (Кажется, у Вас это поле, отвечающее за менеджера CodeUser называется). UserGroup берете уже из карточки менеджера. Фильтр накладывайте в заказе не на Salesperson, а на эту группу. Таким образом - вам не страшны 250 символов и т.п. |
|
19.03.2007, 11:37 | #4 |
Участник
|
|
|
19.03.2007, 12:42 | #5 |
Участник
|
а может проще настроить фильтры защиты для конкрентных ролей? Программировать ничего не надо было бы.
__________________
Want to believe... |
|
19.03.2007, 21:16 | #6 |
Участник
|
Сам не пробовал, но ты можешь попробовать.
OnFindRecord(Which : Text[1024]) : Boolean Код: US.GET(USERID); //находим пользователя в User Setup US.SETRANGE(UserGroup,US.UserGroup); //фильтруем User Setup по группе US.SETRANGE(UserGroup,SalesPersonCode); //фильтруем User Setup по автору заказа exit(not US.ISEMPTY); //Если группы совпадают то показываем заказ например если пользователь принадлежит нескольким группам то циклами искать и.... |
|
19.03.2007, 21:50 | #7 |
Участник
|
Исправлюсь
OnFindRecord(Which : Text[1024]) : Boolean Код: US.GET(USERID); //находим пользователя в User Setup US.SETRANGE(UserGroup,US.UserGroup); //фильтруем User Setup по группе US.SETRANGE("User ID",SalesPersonCode); //фильтруем User Setup по автору заказа exit(not US.ISEMPTY); //Если группы совпадают то показываем заказ |
|
26.04.2007, 10:58 | #8 |
Участник
|
Спасибо всем за советы !
Проблема решена. |
|