Вопрос

Добрый день!

Вопрос следующего характера:
Необходимо изменить номера обращений - переделать поле текстовое в числовое. Есть пример https://community.terrasoft.ru/articles/sortirovka-po-nomeru-dogovora-d… но там выводится новая колонка, но моя задача - изменить текущую.

1) Что стоит предусмотреть и что может повлиять на работу? (сейчас создаются новые обращения формата "только цифры")

2) Если в это поле будет писаться текст (случайно попадет) - что изменится?

3) Что станет с БП, которые берут значение этого поля как текст?

У меня такой же вопрос

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

А почему нельзя добавить новую колонку, спрятав при необходимости старую, при этом все базовая функциональность и ваши наработки работающие с номерами останется работоспособной

1) трудно сказать  нужно тестировать полностью весь блок работы с обращениями выискивая блох

2) в число текст не впихнуть будет ошибка при сохранении

3) зависит от того как именно обрабатывается строка в БП

Григорий Чех,

В принципе, задача с новой колонкой подойдет, но люди привыкли по номеру переходить в объект. Но почему-то нельзя установить "Отображаемое значение" числовое, только строку. 

Быстров Сергей,

Оставьте отображаемое значение как оно и было а по новой добавленной колонке отсортируйте реестр, например как описано тут

Григорий Чех,

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

Быстров Сергей,

Есть еще костыльный вариант установить шаблон маски в SP{0:00000000} тогда номера будут формироватся в виде SP000000001,  SP000000002 и тд что позволит сортировать по текстовому полю номер, возможно вам это подойдет если пользователи не будут ругаться на лидирующие нули.

Григорий Чех,

А вот на это ругается первая линия, потому что "лишние цифры - это плохо". Поэтому сразу откинули такой вариант. Может можно как-то переопределить фильтр: когда мы пытаемся фильтровать по номеру, на самом деле фильтр делается по другому полю "UsrNumber"?

Быстров Сергей,

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

Григорий Чех,

А провернуть такое можно, если в реестре не выведена эта колонка? Просто еще ни разу не делал подобного. Если есть какие-то примеры - буду рад.

Быстров Сергей,

Как то так попробуй (код набросал на глазок, те сырой нужно  отлаживать)

initQuerySorting: function(esq) {
	var columnName = "Number";
	if (esq.columns.contains(columnName)) {
		//var numColumn = esq.addColumn(columnName);
		var numColumn = esq.columns[columnName];
		if (numColumn.orderPosition && numColumn.orderPosition > 0) {
			var numNewColumn = esq.addColumn("NewNumberIntegere");
			numNewColumn.orderDirection = numColumn.orderDirection;
			numNewColumn.orderPosition = numColumn.orderPosition;
			delete numColumn.orderDirection;
			delete numColumn.orderPosition;
		} else {
			this.callParent(arguments);
		}
}
},

 

Григорий Чех,

Спасибо за помощь, получилось вот так:

initQuerySorting: function(esq) {
	this.callParent(arguments);
	var columnName = "Number";
	if (esq.columns.contains(columnName)) {
	var numColumn = esq.columns.collection.get(columnName);
		if (numColumn.orderPosition && numColumn.orderPosition === 1) {
			var numNewColumn = esq.columns.collection.get("UsrNumber");
			numNewColumn.orderDirection = numColumn.orderDirection;
			numNewColumn.orderPosition = 0;
			delete numColumn.orderPosition;
		}
	}
},
getGridDataColumns: function() {
	return {
		"UsrVIPobr": {path: "UsrVIPobr"},
		"UsrNumber": {path: "UsrNumber"}
	};
},

 

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

Добрый день коллеги.
Столкнулся со странной ситуацией. Обратился к ТС, но все же решил и тут задать свой вопрос:
При реализации очередной кастомизации необходимо было выполнить запрос EntitySchemaQuery:
    
    var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager.GetInstanceByName("ServiceEngineer"));
    var colId = esq.AddColumn(esq.CreateAggregationFunction(AggregationTypeStrict.Count, "Id"));
    var esqFilter = esq.CreateFilterWithParameters(FilterComparisonType.Equal, "ServiceItem", serviseId);
    esq.Filters.Add(esqFilter);
    result = esq.GetSelectQuery(UserConnection).GetSqlText();
    return result;

Реализовывал с использованием ServiceHelper, где для анализа данных реализовал два метода: GET и POST.
Странность заключается в том, что исходный код у данных методов одинаков, а результат разный (см. аттач GET.png и POST.png)

У меня такой же вопрос

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

Вероятно, дело не в GET и POST, а в том, что второй раз запускается под пользователем, у которого нет прав на таблицу ServiceEngineer. См. тут или тут.

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

Ситуация по шагам: 

1. Клиент пишет обращение 

2. Ему приходит оповещение (Ваше обращение зарегистрировано т.д.) 

3. Клиент отвечает на это оповещение что-либо. 

4. В системе создается новое обращение 

5. Клиенту приходит еще одно оповещение соответственно. 

 

Разворачивал демостенд, насколько понимаю это является стандартной логикой BPM. 

Вопрос:

Можно ли избежать такой ситуации? Как сделать так, что бы при ответе на оповещение не создавалась новое обращение? 

У меня такой же вопрос

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

Новые письма привязываются к существующим инцидентам, если в их тексте есть упоминания номера, например №SR-12345.Значит, нужно в автоматическом шаблоне или в ручном ответе указывать номер в таком формате. Тогда при ответе будет не создаваться новое, а переоткрываться старое. Формат задаётся в системной настройке «Маска номера обращения». 

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

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

Возможно ли реализовать данный кейс посредством бизнес-процессов?

У меня такой же вопрос

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

Возможно

стартовый сигнал изменение состояния обращения на закрыто (отменено/огтклонено), дальше меняете состояния у всех не закрытых обращений у которых Id из стартового сигнала родитель!

Возможно

стартовый сигнал изменение состояния обращения на закрыто (отменено/огтклонено), дальше меняете состояния у всех не закрытых обращений у которых Id из стартового сигнала родитель!

Григорий Чех,

Благодарю! Сработало.

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

Добрый день. Версия 7.12.

Подскажите, в чём может быть причина возникновения такой ошибки при загрузке деталей:

Возникает при открытии вкладки с деталями, страница на этом перестаёт грузиться и зависает.

У меня такой же вопрос

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

Уточните, после каких изменений начала возникать описанная проблема?

Стандартно таких деталей нет. Если их схемы ставили из пакета, что-то могли развернуть неверно или не полностью.

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

Добрый вечер!

После переустановки ОС на Win 10, в CRM не работает часть функционала.

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

2. При нажатии правой кнопкой мыши по любому проекту, список предлагаемых опций урезанный.

3. При использовании функции «Глобальный поиск», нет возможности перейти ни к одному из найденных пунктов. Система выдает предупреждение.

Изображение удалено.

 

4. При попытке открыть меню Файл-Настройки-Системные настройки, CRM выдает ошибку .

 

Прочитала на community (https://community.terrasoft.ru/questions/obnovlenia-win10-i-terrasoft-34) , что в версии 3.3.4 можно удалить обновление KB4074588, но к сожалению, такой технической возможности у нас в компании нет. Подскажите, пожалуйста, как можно решить эти проблемы? Спасибо!

У меня такой же вопрос

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

Под Windows 10 не работают полноценно ни 3.3.2, ни 3.4.0. Нужно обновляться с 3.3.2 на 3.4.1: скачивать новые файлы программы, менять номер версии в базе в tbl_DatabaseInfo и покупать заново лицензии. Либо же продолжать использовать предыдущие версии Windows.

И, заодно, если у кого-то 3.3.1, там обновление, помимо упомянутого, требует дополнительных шагов.

Зверев Александр, Александр, спасибо за ответ! К сожалению, обновиться до версии 3.4.1 нет возможности, по политике компании.
Всё дело в том, что на первых ПК с обновленной ОС, CRM работал корректно, как и на Win 7.

Но на ПК, которые ставим сейчас, CRM работает не корректно. Сравнили версии ОС, они разные. Обратились сейчас в наш тех.отдел. Чтобы они попытались понять в чем разница, между версиями на ОС Win 10. Ждем от них ответа.

Так в том и дело, что Win10 перестала нормально работать с 3.3.2 и 3.4.0 начиная с одного из её обновлений около года назад.

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

Добрый день!

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

Поэтому появляется три вопроса:
1) как осуществить функционал вставки из буфера? Например: находясь в поле "Решение" нажимается вставка скриншота из буфера и в детали "Файлы и ссылки" этого обращения появляется файл с названием "Решение_Название файла"
2) вставка документа (например pdf) путем перетаскивания его на поле "Решение" и чтобы он появлялся в детали "Файлы и ссылки" этого обращения появляется файл с названием "Решение_Название файла"
3) как добавить в шаблон, который отправляется автоматически, эти самые файлы? С использованием макросов invoke?

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

У меня такой же вопрос

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

По размеру, есть системная настройка «Максимальный размер загружаемого файла» (MaxFileSize). По умолчанию там 10 Мб, можно менять.

По шаблону со вложением, см. приложение.

По остальному, в теории, такое возможно. Например, на детали файлов в любом разделе есть место для перетаскивания файла. См. в FileDetailV2 логику, связанную с DragAndDropContainer:

onFileSelect: function(files) {
	if (files.length <= 0) {
		return;
	}
	const config = this.getUploadConfig(files);
	const isNewRecord = this.getIsNewRecord();
	this.set("FileUploadConfig", config);
	if (isNewRecord) {
		const args = {
isSilent: true,
messageTags: [this.sandbox.id]
		};
		this.sandbox.publish("SaveRecord", args, [this.sandbox.id]);
	} else {
		this.upload(config);
	}
},
 
 
/**
 * Uploads files using FileAPI.
 * @private
 * @param {Object} config File upload configuration.
 * @param {Function} callback Callback.
 */
upload: function(config, callback) {
	this.Terrasoft.ConfigurationFileApi.upload(config, callback);
},
 
 
onUpload: function() {
	this.showBodyMask();
},
 
initDropzoneEvents: function() {
	const dropZone = document.getElementById("DragAndDropContainer");
	if (!dropZone) {
		return;
	}
	if (this.Terrasoft.Features.getIsEnabled("CheckMasterRecordEditRights") &&
!this.get("CanEditMasterRecord")) {
		return;
	}
	this.Terrasoft.ConfigurationFileApi.initDropzoneEvents(dropZone, function(over) {
		if (over) {
dropZone.classList.add("dropzone-hover");
		} else {
dropZone.classList.remove("dropzone-hover");
		}
	}, function(files) {
		this.onFileSelect(files);
	}.bind(this));
},
 
onRender: function() {
	this.callParent(arguments);
	this.initDropzoneEvents();
...

 

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

Я не могу найти где можно увидеть список файлов к Обращению.
Само обращение отображается по запросу 
***bpmonline.com/0/ServiceModel/EntityDataService.svc/CaseCollection(guid'ae67f3b8-c319-4a59-9d97-f8585f6b3d33')
Но внутри него я не могу найти список прикрепленный файлов.

Вопрос.

Где искать ? 

У меня такой же вопрос

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

Для каждой детали используется свой адрес в OData. Файлы обращения, соответственно, будут: ***bpmonline.com/0/ServiceModel/EntityDataService.svc/CaseFileCollection/. Там можно посмотреть Id файлов и связи с обращениями. А непосредственно скачивание производить в FileService.

Я правильно понял чтоб мне найти файл который принадлежит к обращению мне нужно считать все файлы которые отдает CaseFileCollection и пройти все skiptoken ? После того как считал найти в них ид моего обращения ? И лишь потом узнать что за файл.  

Нет ли другого метода ? Т.е. сделать какой-то запрос чтоб по ид обращения он выдал мне список файлов которые есть в данном обращении ? 

Конечно, все качать не надо. Можно наложить фильтр по полю связи с обращением. См. примеры тут.

не хватило разума мне понять.
view-source:https://*****.bpmonline.com/0/ServiceModel/EntityDataService.svc/CaseFileCollection?$filter=Name eq 'WhatsApp Image 2018-01-16 at 14.15.07 (1).jpeg'
По такому запросу ответ отдает верный.

view-source:https://*****.bpmonline.com/0/ServiceModel/EntityDataService.svc/CaseFileCollection?$filter=CaseId eq guid'829a0b1a-650b-4844-b664-59053f9434ad'
По этому запросу отдает Элемент коллекции с именем CaseId не найден

Что он от меня хочет ? 

CaseFileCollection?$filter=Case/Id eq guid'829a0b1a-650b-4844-b664-59053f9434ad'

 

Спасибо!
Никогда б не догадался. Ниже привожу рабочий пример.
https://*.bpmonline.com/0/ServiceModel/EntityDataService.svc/CaseFileCollection?$filter=Case/Id eq guid'1f779f3d-60b4-4a2c-a4b4-43e2cf89d8f0'

ссылку выше про  FileService. Я почитал. Но результата опять нет. 
 

http://адрес_сайта/0/rest/FileService/GetFile/e9eafee9-c4e4-4793-ad0a-003bd2c6a9b4/935b6ecb-3509-4c8a-bc7e-03ab0661da24

Тут первый GUID — ID схемы ContactFile (видно в URL, если её открыть в дизайнере), второй — ID записи в таблице.

Я думал что по этому запросу https://*.bpmonline.com/0/ServiceModel/EntityDataService.svc/CaseFileCollection?$filter=Case/Id eq guid'1f779f3d-60b4-4a2c-a4b4-43e2cf89d8f0'
я узнаю ид файла. Но нет. Ид тут другой. И ID схемы CaseFileCollection Тоже у меня нет.
Вопрос. 
Где я должен получить эти ИД ? 

По ссылке написано всё верно. Первый Id — для схемы CaseFile посмотрите в дизайнере. Второй — Id нужной записи в этой таблице, которую Вы получите по результату CaseFileCollection.

Да, все верно. Я не туда смотрел. Спасибо.

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

Всем доброго времени суток.

Не нашёл чего-то - есть ли возможность вызвать веб-сервис (такой https://academy.terrasoft.ru/documents/administration/7-13/integraciya-…) из клиентской схемы?

В примерах вижу только вызов из бизнес-процессов.

У меня такой же вопрос

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

Вы можете вызвать сервис реализованный на C# так:

ServiceHelper.callService("UsrSaveProcedure", "ProcedureSql",
 
                function(response) {
 
                    console.log(response.ProcedureSqlResult);
 
                }, {CardId: this.get("Id")}, this);

А через вызванный сервис на клиенте, но уже на серверной части можете вызывать любые внешние веб-сервисы.
Или вы имеете ввиду, что-то иное?

Вы можете вызвать сервис реализованный на C# так:

ServiceHelper.callService("UsrSaveProcedure", "ProcedureSql",
 
                function(response) {
 
                    console.log(response.ProcedureSqlResult);
 
                }, {CardId: this.get("Id")}, this);

А через вызванный сервис на клиенте, но уже на серверной части можете вызывать любые внешние веб-сервисы.
Или вы имеете ввиду, что-то иное?

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

Всем доброго времени суток. Версия 7.12.

Есть справочник "Объекты администрирования" и есть одно из его представлений - "Роли". А можно ли отфильтровать только организационные роли?

У меня такой же вопрос

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

SELECT *
  FROM SysAdminUnit
 where sysadminUnittypeValue =0

Денис, здравствуйте!

Информация есть на Академии (https://academy.terrasoft.ru/documents/base/7-13/chasto-zadavaemye-vopr…):

В этом объекте содержится организационная структура компании: пользователи, организационные и функциональные роли. Каждая запись в таблице относится к определенному типу, для которого указывается цифра (“SysAdminUnitTypeValue”). Например, организационной роли соответствует цифра “1”, роли руководителей — цифра “2”, а пользователям — цифра “4”.

Также пример фильтрации ниже:

 Рис. 1

Рис. 2

Вильшанский Дмитрий пишет:
Например, организационной роли соответствует цифра “1”, роли руководителей — цифра “2”, а пользователям — цифра “4”.

Дмитрий, а почему в системе:

с "1" только "System administrators",

а с "0" - "Sales Department", "All portal users", "Accounting Department" и "All employees"

Хотя, в списке организационных полей есть и те, и другие

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

по моему, там ещё есть разница между понятиями Организация и Подразделение.

У меня в итоге всё что мне нужно фильтруется вот таким образом:

var typeFilter = Terrasoft.createFilterGroup();
typeFilter.setLogicalOperation(1);
typeFilter.add("ManagerFilter", Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "SysAdminUnitTypeValue", 2));
typeFilter.add("DivFilter", Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "SysAdminUnitTypeValue", 1));
typeFilter.add("OrgFilter", Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "SysAdminUnitTypeValue", 0));
filterGroup.add("typeFilter", typeFilter);

 

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