Скрипты
Разработка

Динамическое формирование групп

Добрый день.
Необходимо динамически изменять запрос для динамических групп, например для пользователей из разных компаний(у них должны быть разные группы). Как это реализовать?(изменить запрос на выборку этих групп). И где вызывается инициализация групп(например в разделе контрагенты)

Нравится

12 комментариев

+ подскажите пожалуйста как можно передавать параметры и изменять select Query

А может сделать несколько динамических групп с разными настройками фильтрации и правильно раздать на них права, чтобы каждая группа пользователей видела свои динамические группы?

 

Можно, но может ли ,допустим, один контрагент входить в несколько групп(и везде отображать), плюс в любом случаи мне нужно будет передавать параметр в selectQuery и там с помощью switch`а выбирать что-то конкретное под пользователя, а я не знаю как это сделать=(

+ как в select query передаются параметры? мне это необходимо для использования их в запросах

SelectQuery.Parameters.ItemsByName(FilterName).Value = ParamValue;

либо

ApplySelectQueryFilter(SelectQuery, FilterName, ParamValue, Enabled);

необходимо подключать скрипт scr_DB

А в хранимки как я понял параметр используется с помощью такого синаксиса Where ID=:Parameter

А как вручную поменять selectquery, у меня не получается изменить сам t-sql в обход дизайнера
мне необходимо в написать что-то типа:
Select
(case (:Parametr)

when'1' then 'Example1'

when '2' then 'Example2'
end
) as Name

Поточнее это я сделал но результата нет

Для этого в сервисе SelectQuery Вы можете использовать CustomSQLColumn. Перед выполнением SelectQuery.Open() Вам необходимо установить значение параметра. Это можно сделать с помощью функции SetParameterValue из скрипта scr_DB.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Пробывал писать так:

(case @IsAeroClub
when 1 then tbl_Contact.Name
when 0 then tbl_ContactTur.Name
else '-10'
end )

и так
(case :IsAeroClub
when 1 then tbl_Contact.Name
when 0 then tbl_ContactTur.Name
else '-10'
end )
и без скобок

Присвоение параметра делал в OnDatasetBeforeOpen:
if( Connector.CurrentUser.AccountName=="Ваша компания")
Dataset.SelectQuery.Parameters.ItemsByName("IsAeroClub").Value = true;

Результат всегда- столбец не определён

Правильно :IsAeroClub. Лучше в скобках.

tbl_Contact и tbl_ContactTur - эти таблицы есть в Вашем запросе? Их необходимо включить в CustomSQL-колонку (внизу под текстом SQL есть список используемых таблиц).

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Всё подключил

(case :IsAeroClub
when 1 then tbl_Contact.Name
when 0 then tbl_ContactTur.Name
else '-10'
end )

Присвоение параметра делал в OnDatasetBeforeOpen:
if( Connector.CurrentUser.AccountName=="Ваша компания")
Dataset.SelectQuery.Parameters.ItemsByName("IsAeroClub").Value = true;

function ds_AccountOnDatasetAfterOpen(Dataset) {
//TODO
debugger;
Dataset.GotoFirst();
Но тут всё равно не активно
var DataField = Dataset.DataFields.ItemsByName("PrimaryContactNameTur");

}

тоже самое и с
(case :IsAeroClub
when 1 then '1'
when 0 then '2'
else '-10'
end )

Всё заработало, спасибо за помощь

Показать все комментарии