<< Click to Display Table of Contents >> Разработка > Примеры разработки > Документы Как получить данные без учета прав доступа |
![]() ![]() |
Ситуация
Сотрудникам необходимо просматривать сумму входящих счетов в разрезе организации. При этом у сотрудников может не быть прав на просмотр самих входящих счетов.
Решение
В карточку организации нужно добавить кнопку, при нажатии на которую выводится сумма входящих счетов, поступивших от выбранной организации. Для получения суммы без прав доступа используется метод AccessRights.AllowRead(). В клиентском коде нужно вызвать серверную функцию с этим методом и вывести сумму на экран.
1.В своем решении перекройте тип справочника «Организации» (Sungero.Parties.Company).
2.В редакторе решения добавьте зависимость от модуля «Договоры» (Sungero.Contracts).
3.Метод AccessRights.AllowRead() можно использовать только в серверном коде. Поэтому в перекрытом типе справочника создайте серверную функцию InvoicesAmount() и напишите ее код:
/// <summary>
/// Получить сумму входящих счетов по организации.
/// </summary>
/// <returns> Сумма входящих счетов по организации.</returns>
[Remote]
public double InvoicesAmount()
{
// Задать переменную вещественного типа для суммы входящих счетов.
var amount = 0.0;
// Получить данные без учета прав доступа.
AccessRights.AllowRead(
() =>
{
// Вычислить сумму входящих счетов по организации.
amount = (double)Sungero.Contracts.IncomingInvoices.GetAll().Where(d => Sungero.Parties.Counterparties.Equals(d.Counterparty, _obj)).ToList().Sum(t => t.TotalAmount);
});
return amount;
}
4.В перекрытом типе справочника создайте действие ShowAmountDEV и в событии Выполнение вызовите ранее созданную серверную функцию. Для этого напишите код:
/// <summary>
/// Показать сумму входящих счетов.
/// </summary>
/// <param name="e"></param>
public virtual void ShowAmountDEV(Sungero.Domain.Client.ExecuteActionArgs e)
{
// Вызвать функцию для расчета суммы входящих счетов по организации.
var amount = Functions.Company.Remote.InvoicesAmount(_obj);
// Вывести сумму.
Dialogs.ShowMessage(amount.ToString());
}
5.На ленту карточки организации добавьте кнопку Вывести сумму входящих счетов и в качестве вызываемого действия выберите ShowAmountDEV.
6.Опубликуйте разработку.
В результате в карточке организации появится кнопка Вывести сумму входящих счетов:
При нажатии на кнопку выводится сумма входящих счетов по организации:
© Компания Directum, 2024 |