Skip to content

Commit 60781dd

Browse files
Merge pull request #228 from Flexberry/feature-add-info-func-currentuse
Добавлена информация о применении функции funcCurrentUser
2 parents 9452e04 + 96ac547 commit 60781dd

3 files changed

Lines changed: 67 additions & 1 deletion

File tree

_data/sidebars/flexberry-orm_sidebar.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,10 @@ entries:
411411
title_ru: FuncToChar
412412
url: /fo_func-to-char.html
413413
output: web
414+
- title: FuncCurrentUser
415+
title_ru: FuncCurrentUser
416+
url: /fo_func-currentuser.html
417+
output: web
414418
- title: SQLWhereLanguageDef
415419
title_ru: SQLWhereLanguageDef
416420
url: /fo_function-list.html

pages/products/flexberry-orm/query-language/fo_external-lang-def.ru.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,6 @@ lang: ru
6565
### Разное
6666

6767
* [funcToChar](fo_func-to-char.html) - функция преобразования выражения в строку.
68-
* `funcCurrentUser`
68+
* [funcCurrentUser](fo_func-currentuser.html)
6969
* [funcImplication](fo_function-implication.html) - функция импликации.
7070
* `ExternalLangDef.ExistViewName` - строковая константа, которая используется для обозначения имени представления, когда строятся ограничения на детейлы.
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
---
2+
title: FuncCurrentUser
3+
sidebar: flexberry-orm_sidebar
4+
keywords: CurrentUser, Flexberry ORM, Ограничения
5+
summary: Параметры и пример использования функции FuncCurrentUser
6+
toc: true
7+
permalink: ru/fo_func-currentuser.ru.html
8+
lang: ru
9+
---
10+
11+
`FuncCurrentUser` - функция из [ExternalLangDef](fo_external-lang-def.html), служащая для того, чтобы в ограничении использовать имя текущего пользователя (`FriendlyName`).
12+
13+
## Использование
14+
15+
Для применения данной функции в используемом сервисе данных [`SQLDataService`](fo_sql-data-service.html) необходимо означить свойство `ICurrentUser CurrentUser`, тогда при формировании ограничения будет использовано `CurrentUser.FriendlyName`.
16+
17+
```csharp
18+
if (value.FunctionDef.StringedView == "CurrentUser")
19+
{
20+
if (CurrentUser != null)
21+
{
22+
return string.Format("'{0}'", CurrentUser.FriendlyName);
23+
}
24+
else
25+
{
26+
throw new InvalidOperationException("Property CurrentUser is not defined for this data service. Add initialization for this property.");
27+
}
28+
}
29+
```
30+
31+
### Пример использования
32+
33+
Ниже представлен пример применения функции `funcCurrentUser`. Здесь среди записей типа `Лес` ищется та, где `Лес.Название` равно `FriendlyName` текущего пользователя.
34+
35+
```csharp
36+
SQLDataService ds = dataService as SQLDataService;
37+
ExternalLangDef languageDef = new ExternalLangDef(ds);
38+
LoadingCustomizationStruct lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(Лес), Лес.Views.ЛесE);
39+
40+
lcs.LimitFunction = languageDef.GetFunction(
41+
languageDef.funcEQ,
42+
new VariableDef(languageDef.StringType, nameof(Лес.Название)),
43+
languageDef.GetFunction(languageDef.funcCurrentUser)); // Задание ограничения.
44+
45+
ICurrentUser currentUser = new TestCurrentUser();
46+
ds.CurrentUser = currentUser;
47+
DataObject[] foundObjects = ds.LoadObjects(lcs);
48+
```
49+
50+
В данном примере использован следующий класс.
51+
```csharp
52+
private class TestCurrentUser : ICurrentUser
53+
{
54+
public string Login { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
55+
56+
public string Domain { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
57+
58+
public string FriendlyName { get => "Great One"; set => throw new NotImplementedException(); }
59+
}
60+
```
61+
62+
В реальном примере требуется задание логики определения текущего пользователя.

0 commit comments

Comments
 (0)