Публикация

Иногда при постановке задачи возникает необходимость добавить к этой задаче еще десяток пользователей системы. Добавление вручную каждого пользователя на закладку "Контакты" занимает значительную часть времени пользователя. Полезным функционалом было бы создание новой кнопки "Добавить группу контактов".
Предлагаю вариант решения:
1. Вам необходимо в грид детали "Контакты" (менеджера деталей раздела "Задачи") добавить новую кнопку. Назвать ее, например, "Добавить группу пользователей" и присвоить Caption "AddUsersGroup".
2. Далее Вам необходимо реализовать две функции, которые потом будут вызываться в обработчике события нажатия на созданную кнопку.
2.1. Одна из функций должна реализовывать появление окна выбора существующих групп пользователей. Необходимая функция будет выглядеть примерно следующим образом:

function AddUsersGroup() {
var Dataset = GetSingleItemByCode('ds_Group', 'ContactInTaskGridArea');
var SearchFieldNames = 'Name';
var DisplayFieldNames = 'Name';
var KeyFieldName = 'ID';
var KeyValue = '';
var SearchFieldName = 'Name';
var SearchValue = '';
var NotifyObject = Self;
var Tag = 'SelectUsersGroupWindow';
var IsReadOnly = true;
ShowSelectDataWindow(Dataset, SearchFieldNames, DisplayFieldNames,
KeyFieldName, KeyValue, SearchFieldName, SearchValue, NotifyObject,
Tag, IsReadOnly);
}

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

function ProcessAddUsersGroup(Sender) {
var GroupID = Sender.Attributes('KeyValue');
if (!GroupID) {
return;
}
var UserSelectQuery = GetSingleItemByCode('sq_User',
'ContactInTaskGridArea');
var ContactInTaskDataset = GetSingleItemByCode('ds_ContactInTask',
'ContactInTaskGridArea');
ApplySelectQueryFilter(UserSelectQuery, 'GroupID', GroupID, true);
var UserDataset = UserSelectQuery.Open();
var TaskID = Self.Attributes('ParentItemID');
while (!UserDataset.IsEOF) {
ContactInTaskDataset.Append();
ContactInTaskDataset.Values('ID') = Connector.GenGUID();
ContactInTaskDataset.Values('TaskID') = TaskID;
ContactInTaskDataset.Values('ContactID') =
UserDataset.Values('UserContactID');
ContactInTaskDataset.Post();
UserDataset.GotoNext();
}
ContactInTaskDataset.Close();
UserDataset.Close();
}

3. Далее нужно в обработчике события OnClick созданной кнопки прописать вызов процедуры AddUsersGroup (вызова окна выбора групп).
function amiAddUsersGroupOnExecute(ActionMenuItem) {
AddUsersGroup();
}

4. Затем в обработчике события OnNotify грида менеджера деталей "Контакты" раздела "Задачи", прописать вызов фукнции ProcessAddUsersInGroup с необходимыми условиями.

function wnd_ContactInTaskGridAreaOnNotify(ScriptableService, Sender, Message,
Data) {
if (Message == MSG_OK) {
if (Sender.Tag == 'SelectUsersGroupWindow') {
ProcessAddUsersGroup(Sender);
}
RefreshDataset(BaseGridArea.GridDataset);
} else {
scr_BaseGridArea.wnd_BaseGridAreaOnNotify(ScriptableService, Sender,
Message, Data);
}
}

В прикрепленном файле высылаю пример текста доработанного сервиса.

Желаю удачи!

С уважением,
Мельникова Екатерина

Поделиться

0 комментариев
Войдите или зарегистрируйтесь, чтобы комментировать
Публикация

Многие пользователи системы версии Terrasoft CRM 3.2 и выше сталкивались с вопросом импорта из MS Excel в конкретную статическую группу раздела. Ниже приведу настройки такого импорта (пример со скриншотами прикреплен).

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

1) Основная таблица - Контрагенты.
2) Перетянуть название контрагента, Тип (справочник и поле названия)и другие поля из шаблоны, которые должны быть проимпортированы в таблицу контрагентов.
3) Из обратных связей контрагента (Контрагент в группе - Контрагент перетянуть поле-справочник и название контрагента).
4) Перетянуть из настроек колонку "Контрагент в группе.Контрагент" на закладку "Проверка уникальности".
5) Из обратных связей контрагента (Контрагент в группе - Группа) перетянуть поле-справочник на закладку "Проверка уникальности" и указать значение группы из справочника.
6) Сохранить настройки.

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

Поделиться

0 комментариев
Войдите или зарегистрируйтесь, чтобы комментировать