Добрый день!

В Terrasoft X15 3.2.1.4 был создан раздел.
Не понятно, почему у меня есть в нем группа "Все..." и я могу добавить другие группы, а у другого пользователся, который подключился к той же базе и заходит под тем же логином не отображается эта группа и при открытии раздела вылетает ошибка открытия источника данных.
Что может помочь???

Заранее спасибо.

Нравится

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

Нужно раздать права на группы.
В том числе, дать права на корневую группу всем пользователям на чтение.

Но мы заходим под одним и тем же пользователем.

Точно к той же базе подключается?
Какая ошибка?

да, база на одном компе и все подключены к ней.
При открытии раздела ошибка: Ошибка открытия источника данных "ds_ItemsInGroup".
Попробовали добавить права пользователю Supevisor на таблица раздела, в результате чего перестала появляться ошибка при попытке добавить группу. Группа добавилась, но ее у того пользователя не видно не видно, зато я могу ее видеть на своем компьютере.

Подытожу:
1. На двух компьютерах установлена одна и та же версия
2. С обоих компьютеров идет подключение к одной и той же конфигурации
3. Логин производится под одним и тем же пользователем
И при этом на одном компьютере видны все группы, на другом нет. Так?

Пожалуйста, проверьте все три пункта. Еще, для надежности, можно попробовать очистить кеш на обоих машинах, обычно он где-то здесь: C:\Documents and Settings\a.popov\Application Data\Terrasoft CRM

По все трем пунктам - да.
После удаления Cashe и Profile ошибка при открытии раздела появляется на всех компах и группы не видны.

Ошибка возникает при попытке открыть ds_ItemGroup

function OpenDatasetWithDisabledEvents (Dataset) {
Dataset.DisableEvents();
try {
Dataset.Open();
}
finally { // тут ошибка
Dataset.EnableEvents();
}
}

А можно полный текст сообщения, которое вы получаете - скопируйте из лога

"Kat" написал:finally { // тут ошибка

Так ошибка на Dataset.Open() или на Dataset.EnableEvents()? Если на Dataset.Open(), то можно было бы запрос посмотреть, который в базу идет (если конечно до запроса дело доходит).

как правило, запрос идет после Dataset.Open(), а на нем и вылетает ошибка о том, что не получается открыть набор данных. Решили проблему так:

// скрипт раздела
function Initialize() { 
InitializeGroups(...);
dlGroups.Dataset.Open(); // добавили эту строчку
...

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

Физически запрос базу идет где-то в середине Dataset.Open(). Что там еще делается внутри извесно лишь разработчикам. Так что запрос может и выполнился. Посмотрите профайлером что идет в базу. Вполне возможно вы куда-то не передаете какие-то параметры и из-за этого идет кривой запрос, который и вызывает свал. После анализа запроса все может быстро прояснится.
Кстати, посмотрите у вас датасет групп открывается на OnShow или на OnPrepare окна раздела.

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

Иногда при постановке задачи возникает необходимость добавить к этой задаче еще десяток пользователей системы. Добавление вручную каждого пользователя на закладку "Контакты" занимает значительную часть времени пользователя. Полезным функционалом было бы создание новой кнопки "Добавить группу контактов".
Предлагаю вариант решения:
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 комментариев
Показать все комментарии