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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.03.2007, 00:04   #1  
yashina is offline
yashina
Участник
 
11 / 10 (1) +
Регистрация: 09.07.2006
Thumbs up

Помогите советом профи !
Пользователи поделены на несколько групп в таблице 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  
Голышев Михаил is offline
Голышев Михаил
Участник
 
106 / 10 (1) +
Регистрация: 03.07.2006
В приведенном коде ошибок нет.

Убедитесь в том, что в таблице User Setup поле CodeUser имеет длину 10...

А лучше выложите сообщение об ошибке таким, каким оно появляется у Вас на экране.
Старый 17.03.2007, 13:52   #3  
randrews is offline
randrews
Участник
Аватар для randrews
 
312 / 10 (1) +
Регистрация: 06.12.2004
Если я правильно понял - весь смысл в том, что некоторым пользователям присвоена некая группа и код менеджера. И потом менеджеры должны видеть заказы своей группы?

Не очень хороший путь вы выбрали... А, если у вас будет количество менеджеров чтолько, что в 250 символов не влезете?

Есть такое понятие - Responsibility Center (Дистрибуторский Центр). Он как раз и предназначен для разделения центров ответственности.
Лучше играть с ним, как мне кажется.

Или идти по тому же принципу.
Добавьте эту группу не в User Setup, а в саму карточку менеджера.
При вставке менеджера в заказ - копируйте в заказ поле группы. Ну и, разумеется, при входе в заказ из User Setup делаете соответствие, что за менеджер вошел (Кажется, у Вас это поле, отвечающее за менеджера CodeUser называется). UserGroup берете уже из карточки менеджера.
Фильтр накладывайте в заказе не на Salesperson, а на эту группу.

Таким образом - вам не страшны 250 символов и т.п.
Старый 19.03.2007, 11:37   #4  
OntheJump is offline
OntheJump
Участник
 
165 / 10 (1) +
Регистрация: 31.10.2006
Цитата:
Сообщение от Tiger Посмотреть сообщение
SETFILTER(SalesPersonCode,UserFilter)
эта строчка смущает. В 36-ой таблице есть поле "Salesperson Code", т.е. получается, что вы зачем-то используете новое поле..может здесь собака зарыта?
Старый 19.03.2007, 12:42   #5  
DA_NEAL is offline
DA_NEAL
Участник
Аватар для DA_NEAL
Лучший по профессии 2017
Лучший по профессии 2009
 
788 / 54 (3) ++++
Регистрация: 05.08.2002
Адрес: Королев
а может проще настроить фильтры защиты для конкрентных ролей? Программировать ничего не надо было бы.
__________________
Want to believe...
Старый 19.03.2007, 21:16   #6  
Storkich is offline
Storkich
Участник
 
149 / 10 (1) +
Регистрация: 08.03.2007
Сам не пробовал, но ты можешь попробовать.

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  
Storkich is offline
Storkich
Участник
 
149 / 10 (1) +
Регистрация: 08.03.2007
Исправлюсь
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  
yashina is offline
yashina
Участник
 
11 / 10 (1) +
Регистрация: 09.07.2006
Спасибо всем за советы !
Проблема решена.
 


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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:23.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.