Здравствуйте!
Такая проблема: есть настройка прав пользователей к подразделениям в модуле зарплата (таблица UserRight) и есть отчет, который работает с использованием интерфейса getAnyPodr (выбор подразделений, по работникам которых выдает разную информацию ). Но нужно чтобы пользователь при вызове отчета (ard) имел доступ только к подразделениям доступным ему по
таблице UserRight.
Сейчас он может получить информацию по всем подразделениям , какие есть в каталоге подразделений.
если интерфейс SelectSalaryDepartaments - это то что нужно, то можно а нем поподробнее: параметры, куда складываются значения множественного выбора:
1) если в Pick, то wTable -&
2) если в Mаркер, то имя маркера.
Хорошо бы исходник, если можно
Спасибо.
SelectSalaryDepartaments это то что нужно или нет?
Модератор: Sparrow
-
- заказчик
- Сообщения: 87
- Зарегистрирован: Пт, 14/03/2008 11:15
- Имя Фамилия: Марина Гаврилюк
- Откуда: КЧХК
- Контактная информация:
-
- топ-софт
- Сообщения: 1
- Зарегистрирован: Пт, 18/04/2008 16:29
- Имя Фамилия: Александр Пацино
- Откуда: ТопСофт
- Контактная информация:
Полагаю, что SelectSalaryDepartaments не совсем то что Вам нужно.
В Зарплате есть очень удобный интерфейс пометки доступных подразделений и лицевых счетов, который позволяет скрыть множество низкоуровневых операций, которые придется реализовывать используя SelectSalaryDepartaments. Такой интерфейс называется TraditionalPersonalAccountFilter(исходник: PAFilter.vip). Он предоставляет пользователю выбор подразделений в соответствии с разрешениями, прописанными в таблице UserRights. Автоматически перечитывает доступные лицевые счета после выбора подразделений (таблица CURLSCHET). Для него написан пакет утилит PAFilter.vpp, который значительно облегчает встраивание интерфейса в прикладной код.
Если Вас интересуют детали, то помеченные с помощью него подразделения для каждого пользователя хранятся в таблице APPLDOCS, где APPLDOCS.WTABLE = 1( константа: xrtCurrentDepartments в money.ccm ) и APPLDOCS.CREC = UserId. Ссылка на подразделение хранится в поле: APPLDOCS.CTIPDOC. Для извлечения списка ссылок помеченных подразделений для низкоуровневых операций удобно использовать: IAdjacentRefsIterator (SecondaryRefsIterator ) (исходник: XRefs.vip). Например:
В Зарплате есть очень удобный интерфейс пометки доступных подразделений и лицевых счетов, который позволяет скрыть множество низкоуровневых операций, которые придется реализовывать используя SelectSalaryDepartaments. Такой интерфейс называется TraditionalPersonalAccountFilter(исходник: PAFilter.vip). Он предоставляет пользователю выбор подразделений в соответствии с разрешениями, прописанными в таблице UserRights. Автоматически перечитывает доступные лицевые счета после выбора подразделений (таблица CURLSCHET). Для него написан пакет утилит PAFilter.vpp, который значительно облегчает встраивание интерфейса в прикладной код.
Если Вас интересуют детали, то помеченные с помощью него подразделения для каждого пользователя хранятся в таблице APPLDOCS, где APPLDOCS.WTABLE = 1( константа: xrtCurrentDepartments в money.ccm ) и APPLDOCS.CREC = UserId. Ссылка на подразделение хранится в поле: APPLDOCS.CTIPDOC. Для извлечения списка ссылок помеченных подразделений для низкоуровневых операций удобно использовать: IAdjacentRefsIterator (SecondaryRefsIterator ) (исходник: XRefs.vip). Например:
Код: Выделить всё
var SRI: IAdjacentRefsIterator;
LoadVipRef(SRI, 'SecondaryRefsIterator');
var CurrentDepartmentList: longint;
CurrentDepartmentList := InitMarker('', 8, 200, 100, true);
// Закачка в маркер списка текущих подразделений:
// xrtCurrentDepartments = 1
if ( SRI.First(xrtCurrentDepartments, UserId) )
{
do
{
InsertMarker(CurrentDepartmentList, SRI.GetAdjacent);
} while SRI.Next;
}
Последний раз редактировалось AlPatsino Пн, 21/04/2008 12:17, всего редактировалось 1 раз.
- Screw
- топ-софт
- Сообщения: 73
- Зарегистрирован: Пт, 14/09/2007 22:54
- Имя Фамилия: Виталий Корзюк
- Откуда: ТопСофт
- Контактная информация:
Можно использовать
- интерфейс Z_KATPODR::GetPodalN - для выбора подразделений с учетом разграничения прав доступа
- метод Z_LSCHET::ICurLsFunctions.LoadFullCurrentDepartmentList: longint - для доступа к списку текущих подразделений (по окончании работы с возвращаемым маркером обязательно уничтожьте его).
Код: Выделить всё
//
// (c) 1994, 2008 корпорация ГАЛАКТИКА
// Проект : ГАЛАКТИКА
// Система : Заработная плата
// Назначение : obj-интерфейс "Ф-ии пересканирования тек. лицевых счетов"
// Параметры : нет
//
#ifndef _CLSFUNCS_INCLUDED_
#define _CLSFUNCS_INCLUDED_
#ifdef ComponentVersion
#component "Z_Lschet"
#end
#include DepTree.vih
#doc
Объектный интерфейс для работы со списком текущих лицевых счетов и
подразделений.
#end
objinterface ICurLSFunctions;
#doc
Возвращает маркер со списком текущих подразделений.
#end
function LoadCurrentDepartmentList: longint;
#doc
Возвращает маркер с полным списком текущих подразделений (если фильтр по
подразделениям не установлен, в маркер будут помещены nrec-и всех доступных
подразделений).
#end
function LoadFullCurrentDepartmentList: longint;
#doc
Возввращает 32-х битную контрольную сумму содержимого маркера
(предполагаемый размер элемента = 8 байт).
#end
function GetDepartmentsCheckSum(Departments: longint): longint;
#doc
Обновляет список текущих лицевых счетов. Возвращает true в случае успеха
или false - в противном случае.
#end
function ReScan: boolean;
#doc
Устанавливает фильтр по подразделениям, ссылки на которые переданы в
маркере Departments, и, если необходимо, обновляет список текущих лицевых
счетов. Возвращает true в случае успеха или false - в противном случае.
#end
function ReScanIfNecessary(Departments: longint): boolean;
#doc
Возвращает строку с информацией о текущем фильтре по подразделениям.
#end
function GetDepartmentFilterStr: string;
end;
#doc
Объектный интерфейс индикатора состояния фильтра по подразделениям.
#end
objinterface IDepartmentFilterStateDetector;
#doc
Возвращает true, если установлен фильтр по одному или нескольким (но не по
всем доступным) подразделениям. В противном случае возвращает false.
#end
function IsDepartmentFilterSet: boolean;
end;
#doc
Объектный интерфейс для управления флагом пересканирования текущих лицевых
счетов.
#end
objinterface ICurLSFunctions1;
#doc
Устанввливает значение флага необходимости пересканирования текущих лицевых
счетов для всех пользователей.
#end
procedure SetRescanNecessary4AllUsers(Value: boolean);
#doc
Устанавливает значение флага необходимости пересканирования текущих лицевых
счетов для текущего пользователя.
#end
procedure SetRescanNecessary(Value: boolean);
end;
#doc
Объектный интерфейс для управления периодом выборки информации о текущих
лицевых счетах.
#end
objinterface IPeriodForScanFuncs;
#doc
Устанавливает месяц для пересканирования (описывается датой dValue).
#end
procedure SetPeriodViewBeginning(dValue: date);
#doc
Возвращает месяц для пересканирования (описывается датой).
#end
function GetPeriodViewBeginning: date;
end;
#doc
Объектный интерфейс для инициализации фильтра по цеху учета (обычный)
#end
objinterface ICurLSFunctions2;
#doc
Инициализирует фильтр по цеху учета (обычный фильтр лицевых счетов по подразделению) </brief>
#end
function InitCommonFilter: boolean;
end;
#doc
Объектный интерфейс настройки фильтра по цеху отнесения затрат
#end
objinterface ICexozFilter;
#doc
Инициализирует фильтр по цеху отнесения затрат </brief>
Метод позволяет задать период сканирования. Под периодом сканирования понимается
период в который попадают суммы из таблиц SumVidOp, Nachisl, Nenach с указанным
в фильтре цехом отнесения затрат.
Параметры:
yearParam - год
monthBeginning - месяц начала периода сканирования
monthEnding - месяц конца периода сканирования
#end
procedure InitCexozFilter(yearParam: word; monthBeginning: byte; monthEnding: byte);
end;
#doc
Объектный интерфейс определения доступности подразделения
#end
objinterface IDepartmentAvailability;
#doc
Возвращает true, если подразделение доступно
#end
function IsAvailable(Department: comp): boolean;
end;
//******************************************************************************
// Декларация стандартной реализации функционала работы со списком текущих
// лицевых счетов и подразделений
//******************************************************************************
vipInterface CurLSFunctions
implements
ICurLSFunctions,
IDepartmentValidatorEquipped,
IDepartmentFilterStateDetector,
ICurLSFunctions1,
IPeriodForScanFuncs,
ICexozFilter,
IDepartmentAvailability,
ICurLSFunctions2
#ifdef ATL51
Licensed(Free)
#end
;
#end