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

 

 

Нравится

3 комментария

Владимир Соколов,

 

необходимо решение для версии 7.16

Jana Sergejenko,

Долго и много наворачивать. При этом теряется возможность использовать элемент "Выполнить задачу". Потому из своего опыта скажу, что легче перейти на 7.18

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

Добрый день. Подскажите как можно отфильтровать справочник контактов по группе? Смысл в том что при выборе из справочника в списке должны быть сотрудники только определенной группы (у нас тебе группа "телефермеры")

Нравится

14 комментариев
Лучший ответ

Александр Тыра,

1. Можно сделать эту группу не функциональной, а организационной ролью.

2. Можно попробовать написать свое представление и для фильтрации нужных контактов завязаться на это представление.

Доброе утро.

Ваша группа 'Телефермеры' - это группа администрирования или какая-то другая?

Телефермеры — это как телепузики?smiley

Если это группа администрировования, см. тут. Если группа контактов, то условие фильтра будет даже проще, только по полю FolderId в таблице ContactInFolder. 

Алла Савельева,

"Организационные роли"

Александр Тыра,

Посмотрите решение по ссылке выше, которое привел Александр Зверев.

Алла Савельева,

"Организационные роли" работают, а вот "Функциональные роли" нет

Зверев Александр,

Спасибо, решение отличное, но только работают так только 

"Организационные роли", а вот "Функциональные роли" нет

Для функциональной должно быть похоже, только другой набор полей с квадратными скобками. В таблице SysAdminUnitInRole хранятся и те, и те роли.

Зверев Александр, 

я видел что и те и те, но только при фильтре "Функциональные роли" фильтруются, я так понял, не люди а группы, а люди входят в "Организационные роли", потому такой способ и не работает

Если есть доступ к базе, напишите SQL-запрос, обращающийся к Contact, SysAdminUnit, SysUserInRole и SysAdminUnitInRole и получающий нужную Вам выборку контактов, а затем адаптируйте его под синтаксис с квадратными скобками.

Зверев Александр,

спасибо за совет, попробую

Зверев Александр,

Select * from "Contact" INNER JOIN "SysAdminUnit" ON "Contact"."Id" = "SysAdminUnit"."ContactId"
where "SysAdminUnit"."Id" IN (Select "SysAdminUnitId" from "SysAdminUnitInRole" where "SysAdminUnitRoleId" = '{C7C2A8E0-C54A-485B-A7A7-6FE3590E769B}')

так работает, только теперь не могу перевести в код, не срабатывает у меня

 

filterGroup.add("IsGroupAccess",
    Terrasoft.createColumnFilterWithParameter(
    Terrasoft.ComparisonType.EQUAL,
    "[SysAdminUnit:Contact].[SysAdminUnitInRole:SysAdminUnit].SysAdminUnitRole.Id",
    "{C7C2A8E0-C54A-485B-A7A7-6FE3590E769B}"));

так пробую - не работает

Александр Тыра,

1. Посмотрите sql-профайлером, какой запрос формируется в базу данных при вызове Ввшего кода.

2. Также посмотрите статьи по принципам построения путей к колонкам вот эту и эту.

 

Алла Савельева,

тут как раз пишут что к таблице этой не добраться такими запросами

https://community.terrasoft.ua/questions/esq-sintaksis-zaprosa-pri-cepo…

Александр Тыра,

1. Можно сделать эту группу не функциональной, а организационной ролью.

2. Можно попробовать написать свое представление и для фильтрации нужных контактов завязаться на это представление.

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

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

4 комментария

Добрый день, Владимир!

Добавлять дополнительные поля в мобильное приложение возможно с версии 7.5, посредством мастера мобильного приложения.
Расширенный поиск по всем полям уже запланирован, в версию 7.7 он еще не войдет, но в последующие планируем включить.
Что касается добавления работы со статическими группами\тегами – планируем в 7.7.

Добрый день!

В релизе 7.11 реализована функциональность быстрой фильтрации в разделах и деталях мобильного приложения. Для поиска нужных записей в разделе (или на детали) можно настроить "быстрый" фильтр по колонкам объекта. 

Наталия Крылова,

Добрый день! А как можно искать в мобильном приложении не по самим колонкам объекта, а по связанным колонкам. Например, находясь в активностях, отфильтровать активности по контрагенту определенного типа, и т.п.

Фильтровать по связанным колонкам нельзя, зато скоро обещают добавить динамические группы. То есть в веб-версии настраиваем, потом в мобильной в онлайн-режиме заходим в группу и фильтруем по её условию.

Показать все комментарии
Здравствуйте!Есть идея позволить пользователю(разработчику) при использовании мастера разделов давать название и заголовок для групп, аналогично полям. В текущей реализации группы именуются по шаблону "group(№группы)". Хотелось бы добавить возможность называть группы собственным именем, например "StartAddressGroup"
1 комментарий

Спасибо, что помогаете нам развивать и улучшать наши продукты. Ваша идея принята для анализа аналитиками проектного офиса и будет рассмотрена возможность ее реализации в одной из последующих версий программного продукта

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

Добрый день!

TS 3.3.2.211, Оракл

Никак не могу понять в чём проблема. Создал раздел по аналогии с другими. При добавлении группы в раздел возникает ошибка: "null" - есть null или не является объектом в функции ds_ItemGroupOnDatasetAfterPost скрипта ds_ItemGroupScript на строке

Filters.ItemsByCode('RecordID').TestExpression.Field =
                RightsTable.Fields('RecordID');

Если место получения переменной RightsTable

var RightsTable = Select.FromTable.RightsTable;

пройти под отладчиком, то данная переменная принимает не null значение и скрипт не вылетает. Какая-то фантастика. Помогите разобраться в данной ситуации.

Нравится

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

Ozzy, очистите Cache и профиль. Затем проверьте, появится ли ошибка.

Наталия, все почистил. Проблема осталась.

Значит нужно анализировать реализацию раздела. Вложите, пожалуйста, сервисы раздела.

Прикладываю сервисы раздела. Связанных таблиц не приложил. Внешние ключи можно удалить.

Загрузила сервисы, ошибка воспроизвелась.
Следующие действия привели к ее устранению:
1. Открыла таблицу tbl_PromPurchGroup.
2. Заполнила значение свойства Primary Display Field равным Name:
/system/files/_1_.png
3. Пересохранила таблицу. В результате группы добавляются корректно и без ошибок.

Наталия, мне, к сожалению, Ваш совет не помог. Сделал поле для отображения в таблице, даже в датасете сделал. Почистил кеш и профиль. Удалил полностью все сервисы и создал их заново. Получаю ту же ошибку. Кстати, при попытке посмотреть права данной группы, тоже вылетает ошибка, только в скрипте scr_Access в функции OpenAccessWindow на строке wndAccessRights.Attributes('TableUSI') = Table.RightsTable.USI, т.к. переменная Table null. Хотя если это место пройти под отладчиком, то все отрабатывает правильно. При повторной попытке открыть Права доступа группы в той же сессии - все работает нормально. Могу предоставить удаленное подключение.

В ходе удаленного подключения ошибка устранена пересохранением таблицы групп (tbl_PromPurchGroup).

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

Добрый день!

Есть следующая задача:
Распечатать стикеры, на которых будет ФИО, название компании, телефон и адрес контактов, входящих в определенную группу.

По ней у меня есть два вопроса:
1) Как сделать так, чтобы отчет формировался только по данным из определенной группы?
2) Для моего случая неплохо подходит стандартный отчет fastreport "Стикеры для контактов (Украина, СНГ)", однако мне необходимо изменить в нем кое-что. Главное - добавить номер телефона. Также хорошо бы убрать часть адреса (страну, город, индекс), т.к. в данном случае она не нужна. Я попытался сделать это в дизайнере отчетов, однако не понял, как это делается. Не могли бы вы подскзаать?

Буду очень благодарен за быстрый ответ, особенно на первый вопрос!

Нравится

1 комментарий

Для формирования отчёта есть два режима: отчёт формируется либо для всех записей, либо для выбранных. Если Вам необходимо, чтобы отчёт формировался только для определённой группы, установите ему тип фильтрации "Для выбранных записей". Затем в нужном разделе выберите группу, выделите в ней все записи и сформируйте по ним отчёт. Если записей в группе больше 40, необходимо перейти на следующую страницу и повторить процедуру повторно. Либо изменить настройки системы таким образом, чтобы на странице отображалось не 40 записей, а сколько необходимо.

Для того, чтобы добавить в отчёт номер телефона, нужно сначала вынести соответствующую колонку в запрос и датасет отчёта (в Вашем случае - sq_ContactSticker и ds_ContactSticker). Только после этого её можно будет использовать в компонентах отчёта. Для удаления ненужных полей из отчёта откройте его в дизайнере, выберите поле, в котором отображаются данные, откройте его двойным кликом мыши, и в появившемся окне текстового редактора удалите ненужные строки. После этого сохраните изменения. Чтобы в запросах по прежнему не выбирались удалённые из отчёта поля, можно их удалить из датасета и запроса. Но перед этим необходимо проверить, не используются ли эти поля в других отчётах.

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

Версия: 3.3.1.67 / MSSQL

Помогите пожалуйста разобраться:
Есть реестр раздела(ну любой в принципе). В нем выделены некоторые элементы (CTRL+Click) :

Var ParentItemIDs = GetAttribute(Self, 'ParentItemIDs');
var IDs = ParentItemIDs.CommaText.split(',');

Вот они у нас в массиве IDs.

ВОПРОС!
Как находясь в скрипте scr_AccessGridArea интерпретировать следующую задачу:

ЕСЛИ пользователь имеет права назначать или удалять или менять права доступа
ТО {
Назначить права доступа к элементам массива IDs значение, противоположное значению DataField.Name; Если было true -> false и наоборот.

Только для пользователя или группы, на чьем имени был кликнут тот или инной DataField (галочка) Изменить. Читать, Удалять
}

Нравится

1 комментарий

Игорь, реализовать данный функционал Вы можете доработав функцию dlDataOnDatasetDataChange скрипта scr_AccessGridArea.

function dlDataOnDatasetDataChange(DataField) {
          if ((DataField.Name == 'CanRead') || (DataField.Name == 'CanWrite') ||
                    (DataField.Name == 'CanDelete') ||
                    (DataField.Name == 'CanChangeAccess')) {
                    var Dataset = DataField.ParentDataFields.ParentDataset;
                    Dataset.Post();                 
     // begin               
var AdminUnitID = Dataset('AdminUnitID');
                    var ParentItemIDs = GetAttribute(Self, 'ParentItemIDs');
                    if (ParentItemIDs.Count > 1) {
                              var RightsDataset = GetItemRightDataset(AccessGridArea.TableUSI);
                              RightsDataset.FetchRecordsCount = -1;
                              RightsDataset.AutoRefresh = false;
                              RightsDataset.DisableEvents();                        
                              try {
                                       var ParentItemID;
                                       for (var i = 0; i <= ParentItemIDs.Count - 1 ; i++) {
                                                 ParentItemID = ParentItemIDs.Items(i);
                                                 if (AccessGridArea.RecordID == ParentItemID) {
                                                           continue;
                                                 }
                                                 ApplyDatasetFilter(RightsDataset, 'RecordID', ParentItemID, true);
                                                 ApplyDatasetFilter(RightsDataset, 'AdminUnitID', AdminUnitID, true);
                                                 RightsDataset.Open();
                                                 RightsDataset.GotoFirst();
                                                 while (!RightsDataset.IsEOF) {
                                                           RightsDataset.Edit();                                                          
                                                           RightsDataset(DataField.Name) = DataField.Value;
                                                           RightsDataset.Post();
                                                           RightsDataset.GotoNext();
                                                 } 
                                                 RightsDataset.Close();
                                       }
                              } finally {
                                       RightsDataset.EnableEvents();
                              }
                    }
// end
                    Dataset.Edit();
          }
}
Показать все комментарии

У версії 3.2.0.х в деталі "Файли" відсутній механізм  видалення файлу з групи. Для вирішення цієї проблеми потрібно додати відповідні пункти в меню видалення та в контексне меню в сервісі wnd_FilesDetailGridArea. А в сервіс scr_FilesDetailGridArea додати обробники подій на ці кнопки та функцію:

function CurrentGroupClear(){
        var Dataset = dlData.Dataset;
        var FileID = Dataset('ID');
        var FileGroupID = Self.Attributes('FileGroupID');
        var FilesDataset = GetSingleItemByCode('ds_FileInItem', 'CurrentGroupClear');
        FilesDataset.FetchRecordsCount = 1;
        ApplyDatasetFilter(FilesDataset, 'ID', FileID, true);
        FilesDataset.Open();
        if (!FilesDataset.IsEmptyPage) {
                FilesDataset.Edit();
                FilesDataset('FileGroupID') = null;
                FilesDataset.Post();
        }
        FilesDataset.Close();
       
        var UpdateQuery =
                GetSingleItemByCode('uq_UpdateFileGroup', 'CurrentGroupClear');
        UpdateQuery.ColumnsValues.ItemsByName('FileGroupID').Value = null;
        UpdateQuery.Parameters('OldFileGroupID').Value = FileGroupID;
        UpdateQuery.Parameters('NewFileGroupID').Value = null;
        try {
         UpdateQuery.Execute();
        }catch(e){
        }
        Dataset.Close();
        Dataset.Open();
}

Можна, звичайно, завантажити виправлені сервіси. Тоді майте на увазі, вони україномовні.

Автор цієї функції Артем Репко:cool::twisted:

Нравится

Поделиться

7 комментариев
        try {
         UpdateQuery.Execute();
        }catch(e){
        }

Вы "глушите" все исключения. Зачем?

Були не бажані. Інакше не глушив би :wink:. В Террасофт CRM іноді бувають виключення, які простіше заглушити ніж зрозуміти. Подивіться по конфігурації таких заглушок вистачає.

Ну тогда можно обернуть весь код функции, почему только Execute запроса? :smile:

Це вже на ваш смак :smile:

Ну просто интересно :smile:
Ошибки в Execute запроса на Update будут точно такими же как строчках чуть выше:

                FilesDataset.Edit();
                FilesDataset('FileGroupID') = null;
                FilesDataset.Post();

Почему там Вы не обернули в try..catch?

Теоретично, так. Олександр, виникла потреба поставити затичку. SQL-запит виконується успішно, а Execute() викликає помилку.

Те саме виникає при злитті знайдених зв'язків після перевірки на дублі.

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

Здравствуйте,

Установили TS X15 3.3.1.31. При запуске не отображаются группы, поэтому нет никаких записей в реестрах. Группы можно увидеть лишь вызовом пункта контекстного меню "Отобразить группы всех пользователей".
Попробовали 38 билд той же версии - ничего не изменилось.
Помогите, пожалуйста.

Нравится

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

Билд Вам не поможет :wink:

Сделайте так: "Отобразить группы всех пользователей", на группе установите права доступа на чтение для "Все пользователи"

--
www.it-sfera.com.ua

С правами как только не экспериментировали. Сейчас для Всех пользователей на все группы все права даны, но группы при запуске так и не видны. Что еще можно попробовать?

www.informicus.ru

Главное верхний уровень "Все контрагенты"
Для этой группы проблем с правами доступа нету?

--
www.it-sfera.com.ua

Дело в том, что не отображается группа "Все..." ни в одном разделе. Следовательно, для этой группы с правами доступа проблемы есть:sad:

www.informicus.ru

Виталий правильно подсказывает. Просмотрите права именно для этой группы. Может быть такое, что она доступна только "старому" Супервизору :)

1) Выбираю "Отобразить группы всех пользователей"
2) Правой кнопкой по группе "Все контрагенты" щелкаю и выбипаю "Права доступа", где отмечены все пункты для группы "Все пользователи".

Добавила Supervisor все права на группу и так заработало. Не пойму только, почему Supervisor находясь в групее "Все пользователи" не "видит" эти группы.

Только есть еще проблема...мне придется так для всех разделов проделать...
И не понятно, для других пользователей не будет ли такой же проблемы???

www.informicus.ru

Если я не ошибаюсь, там с правами доступа для группы "Все пользователи" есть нюансы при работе. Все пользователи по умолчанию попадают в эту группу - поэтому я ею в принципе не пользуюсь. Создаю свою группу "Все сотрудники" и уже ее "дроблю".

Впервые столкнулись с такой проблемой именно в версии 3.3.
С супервизором разобрались. Надеюсь, с дургими пользователми проблем не будет (последуем примеру Сергея с группой "Все сотрудники").

Спасибо!!!

www.informicus.ru

Здравствуйте.

Для решения такой проблемы нужно удалить-добавить этого пользователя из группы "Все пользователи": для этого используйте деталь "Группы" в под реестром "Пользователи".

Хочу Вас уверить, что при создании новых пользователей они автоматически будут находится в этой корневой группе. И проблем с правами на группы не возникнет.

Спасибо. значит я лишний раз перестраховывался :)

Добрый день, Kat.
Вы имеете ввиду продукт CRM? Начиная с версии 3.3.1 продукт X15 переименован в CRM.
Дело в том, что указанной Вами ошибки в сборке 3.3.1.31 не существует, поэтому необходимо понять какая точно версия у Вас установлена.

Устанавливали Terrasoft CRM (X15) 3.3.1.31 и 38

www.informicus.ru

Добрый день, Kat.
С Вами свяжутся сотрудники тех.поддержки для уточнения более детальной информации.

Добрый день, Kat.
Насколько мне известно Ваша проблема решена. Не удаляйте больше пользователя Supervisor после восстановления базы :smile:

Да, причина несиправности обнаружена.
Спасибо!

www.informicus.ru

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

Здравствуйте!

Предлагаю Вашему вниманию некоторую реализацаю возможности выгрузки фильтров динамической группы в файл (*.xml) и загрузки для другой динамической группы.

Подробная инструкция прикреплена.

Приятной работы!

Нравится

Поделиться

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