Добрый день!

как  можно выгрузить и загрузить фильтры?

Нравится

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

Андрей, что именно Вы имеете в виду, куда нужно их выгрузить?

 

В обычном разделе все статические и динамические группы хранятся в таблицах ContactFolder, AccountFolder и подобных. Для динамических групп фильтры записываются в поле SearchData, при желании в SQL-запросе можно сконвертировать в текст значение поля и увидеть их внутреннее устройство.

 

Если требуется перенести с базы на базу, можно SQL-запросами перенести значение поля из нужной записи. Для этого или скопировать в текст запроса закодированное значение из SearchData, или написать запрос, обращающийся к обеим базам.

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

Приветы. Буду очень признателен за помощь.

Есть таблица с такими колонками: 

1. Поле типа справочник - x. 

2. Поле типа справочник - y.

3. Поле типа дата - d.

 

Результат: 

Таблица, грид, где первая колонка со значениями поля - x с соответствующим заголовком.

Другие заголовки колонок после заголовка x - значение полей d. А на пересечении x и d - значение справочника y. 

Как то так:

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

 

Буду рад любой помощи, гайду или указанием примера в системе :)

Sales 7.16

Нравится

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

Андрей, с версии 7.16 систему как раз добавили функциональность сводных таблиц. Настраивается в итогах, блок «список».

specs_dashboards_chart_summary_table.png

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

 

Если что-то не подойдёт, кроме стандартной функциональности есть ещё стороннее дополнение для сводных таблиц.

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

Фишка в том что бы это можно было редактировать :)

Тогда, наверное, так не получится. Разве что делать привязанное к этой таблице view с триггерами на изменение, реализующими сохранение в нужную запись таблицы, объект и деталь с редактируемым реестром по нему. Но это только для случая, если количество столбцов заранее известно и стабильно (например, дни одного месяца с 1 по 31, если в месяце меньше дней, как-то обработать).

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

Добрый день.

Подскажите кто-нибудь, правильно ли я понимаю, что для настройки глобального поиска и механизма дедупликации необходимо использовать 3 сервера:

- для ElasticSearch

- для компонентов глобального поиска

- для сервис массового поиска дублей.

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

Нравится

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

Добрый день

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

По серверам я сделал только 2 сервера. Creatio-ES - для ElasticSearch и Creatio-DD - для сервисов глобального поиска и дедупликации. Есть нюанс. Я выделил только 30 ГБ места на Creatio-DD и сегодня получил предупреждение что свободно только 20% места. Так что думаю лучше выделять больше свободного места.

Добрый день

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

По серверам я сделал только 2 сервера. Creatio-ES - для ElasticSearch и Creatio-DD - для сервисов глобального поиска и дедупликации. Есть нюанс. Я выделил только 30 ГБ места на Creatio-DD и сегодня получил предупреждение что свободно только 20% места. Так что думаю лучше выделять больше свободного места.

Поиск дублей ставится на любой сервер, он не связан с другими сервисами.

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

Если в бизнес-правиле описать сравнение со статусом из справочника, то оно срабатывает.

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

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

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

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

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

Нравится

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

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



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



Добавить обязательность полю можно с помощью другого бизнес-правила с тем же условием, но с другим действием -  "Делать поле обязательным". 



Если же, поле изначально обязательное, то правило будет отрабатывать только для новых записей, в которых это поле будет заполнено при создании записи. Поле будет автоматически добавляться на мини-карточку.

A.Sorotiuk пишет:

Добавить обязательность полю можно с помощью другого бизнес-правила с тем же условием, но с другим действием -  "Делать поле обязательным".

Есть и такое правило, но тоже не срабатывает. Если посмотрите на screenshot, то по идее должны отобразится оба поля (и оба стать обязательными), так как стадия конечная. Однако, отображается и становится обязательным только то поле, для которого БП настроен по сравнению с конкретным значением справочника, а не с параметром

 

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

 

Я у себя добавил два необязательных поля, настроил такие же правила для видимости, как у Вас, всё отработало. Какая Вами используется версия?

Последняя демка с сайта:



https://080799-crm-bundle.terrasoft.ua

support/support



В разделе "Продажи" настраивал для тестов



Причём, заметил ещё одну особенность:

Если перевести на стадию "завершена с проигрышем", то одно поле не отображается и не становится обязательным

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

Явно не срабатывает в момент перевода на новую стадию

Владимир, под указанной учёткой нет прав админа и нельзя посмотреть все эти бизнес-правила, свойства полей в объекте и нет ли дополнительной логики на карточках. Можете или дать админские права или показать все правила, связанные и с обязательностью, и с видимостью полей?

Александр, прошу прощения. Сейчас выдал права

Спасибо, подключился. Насколько понимаю, дело не в сравнении с параметром, а в проверке обязательности. Если оба эти поля заполнены, переключение между двумя финальными стадиями происходит нормально. Если правила обязательности отключить — то тоже.

 

А при смене стадии через DCM происходит попытка автоматического сохранения в новой стадии, чему мешают пустые обязательные поля.

 

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

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

Посоветуйте, пожалуйста, как управлять доступностью (запрещать переходить на них) отдельных стадий ActionsDashboard в зависимости от значений полей в карточке?

Нравится

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

Если только на заполнение полей, то с этим справятся бизнес-правила типа делать поле обязательным, если стадия ="требуемое значение". Кликнуть на стадию дает, но не сохраняет без заполнения полей.

Нет, к сожалению, необходим запрет перехода на стадию в некоторых случаях. (Что-то похожее на то, как сделан запрет для некоторых ролей в коробке)

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

К сожалению, базовыми, "коробочными", средствами, такое сделать невозможно.

Можно же не коробочными. 



Есть идеи по тому, как сделать это кодом?

А если на уровне встроенного БП объекта (или событийного слоя) на событии Saving проверять новую и старую стадию и значения других полей и если нет, то отменять путём установки IsCanceled? Сохранить так дать не должно, но нужно смотреть, к чему приведёт в интерфейсе карточки с кейсом.

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

Пытаюсь обратиться к сервису http://.../0/rest/ITdsBSC/CaseBSC методом POST, предварительно получил в GET cookies и явно передавал params, в т.ч. utf-8, но возвращается в неизвестной кодировке 403 ошибка, как через postman правильно посылать POST запросы? Делал по гайду с академии, какие могут быть идеи в чем проблема? P.S. url очистил т.к. NDA

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

Нравится

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

Если сервис не анонимный, то не прошли аутентификацию. Надо сначала вызвать авторизоваться через метод http://.../ServiceModel/AuthService.svc/Login получить куки и в заголовке своего запроса передать значение BPMCSRF

Если сервис не анонимный, то не прошли аутентификацию. Надо сначала вызвать авторизоваться через метод http://.../ServiceModel/AuthService.svc/Login получить куки и в заголовке своего запроса передать значение BPMCSRF

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

В бизнес-процессе нужно было обнулить у контрагента поле-ссылку на другого клиента, имеющее тип Id. Для  этого выполнил запись в поле значения Guid.Empty. При этом поле пустым не стало, а в него записалось что-то вроде "00000-000000000-0000-00000".  И все бы ничего, можно и такое значение считать пустой ссылкой. Но при слиянии этого контрагента с другим,  система почему-то автоматически в поле ссылки результирующего контрагента проставила эти нули, а не вполне конкретную ссылку из второго контрагента. При этом не было даже запроса, какую из ссылок выбрать.

Вопрос: как в блоке Изменение данных бизнес-процесса записать в поле ссылки (ID) реально пустое значение?

Нравится

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

Илья, странно, что у Вас записалось «00000-000000000-0000-00000». Вы уверены, если посмотреть в базе, там тоже так?

Если именно так, то либо на этом поле отключена проверка целостности и в него можно писать любые Guid, либо в справочнике есть запись с Id «00000-000000000-0000-00000» и для системы такое значение не отличается от другого заполненного.

Пишите null

Дело в том, что в языке C# нет понятия NULL - для переменных разных типов NULL выражается по разному:

  1. Для справочных полей это Guid.Empty
  2. Для строковых полей это String.Empty
  3. Для полей с типом «Дата/время» это DateTime.MinValue
  4. Для логических полей «пустого»поля нет (нужно указывать значение false).

Но почему у Вас при вставке Guid.Empty реально в базу попал такой Guid, нужно разбираться. Если поле с ограничением целостности по связям и в справочнике такой записи нет, такого быть не должно.

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

После добавления одного поля в карточку задачи и в EntityConnection, поля начинают "плясать". Иногда открывается в таком виде, при этом заполненные значения не видны. 

И после рефреша всё проходит, но потом может появиться снова

 

Как с этим бороться?Изображение удалено.

Нравится

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

1) Делаем select запрос в EntityConnection, видим поле Position, радуемся, настраиваем порядок.

2) Обновляем деталь, видим беспорядок, грустим (сортировка как бы есть, но её нет, т.к. в коде детали хлам, который не работает)

3) Вспоминаем, что у нас есть руки, и редактируем EntityConnectionsDetailV2:

methods: {
	/**
	 * Убираем позиции с 999 индексом (исключаем ненужные связи)
	 * */
	removePositions: function(item) {
		return item.$Position !== 999;
	},
 
	/**
	 * обработка и сортировка связей
	 * */
	processEntityConnectionsResponse: function(collection) {
		var filtered = collection.filterByFn(this.removePositions, this);
		var sorted = filtered.sort(null, null, function(a, b) {
			var v1 = a.$Position;
			var v2 = b.$Position;
 
			return v1===v2 ? 0 : (v1 > v2 ? 1 : -1);
		});
		collection.clear();
		collection.loadAll(sorted);
		this.loadColumnValues(collection);
 
		return sorted;
	}
}

 

Молитвой и божьим словом, на сколько я помню обращения в саппорт коллег))

1) Делаем select запрос в EntityConnection, видим поле Position, радуемся, настраиваем порядок.

2) Обновляем деталь, видим беспорядок, грустим (сортировка как бы есть, но её нет, т.к. в коде детали хлам, который не работает)

3) Вспоминаем, что у нас есть руки, и редактируем EntityConnectionsDetailV2:

methods: {
	/**
	 * Убираем позиции с 999 индексом (исключаем ненужные связи)
	 * */
	removePositions: function(item) {
		return item.$Position !== 999;
	},
 
	/**
	 * обработка и сортировка связей
	 * */
	processEntityConnectionsResponse: function(collection) {
		var filtered = collection.filterByFn(this.removePositions, this);
		var sorted = filtered.sort(null, null, function(a, b) {
			var v1 = a.$Position;
			var v2 = b.$Position;
 
			return v1===v2 ? 0 : (v1 > v2 ? 1 : -1);
		});
		collection.clear();
		collection.loadAll(sorted);
		this.loadColumnValues(collection);
 
		return sorted;
	}
}

 

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

Коллеги, добрый день!

 

Подскажите, пожалуйста, при работе с коннектором https://marketplace.terrasoft.ua/app/file-storage-creatio какие есть ограничения по правам доступа, или по объему файлов?



Например, как поведет себя приложение, если менеджер в Creatio добавит новый документ Контрагенту, к папке хранилища которого у него нет доступа?

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



Выводятся ли в интерфейсе Creatio какие-то пользовательские уведомления об ошибке синхронизации, если таковые произошли?



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

Нравится

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

Мы используем. По правам доступа проблем нет. Т.к. выгрузка осуществляется под пользователем приложения. Главное дать права на папку этому пользователю IIS.

Ограничения файлов и размеров - системные настройки.

Ошибок не будет выводится. Если что то пошло не так в момент выгрузки в файловое хранилище, то файл останется в БД (у нас не было еще таких ситуаций). 

Данное дополнение не дружит с мобильной версией. Загрузить файл с мобильного приложения не получится.

Мы используем. По правам доступа проблем нет. Т.к. выгрузка осуществляется под пользователем приложения. Главное дать права на папку этому пользователю IIS.

Ограничения файлов и размеров - системные настройки.

Ошибок не будет выводится. Если что то пошло не так в момент выгрузки в файловое хранилище, то файл останется в БД (у нас не было еще таких ситуаций). 

Данное дополнение не дружит с мобильной версией. Загрузить файл с мобильного приложения не получится.

Кирилл, добрый день,

 

Алексей совершенно верно уточнил, что права доступа на сетевые папки нужно предоставить пользователю, под которым запущен сайт (процесс IIS) и права пользователей Creatio не учитываются.

Размер файла не должен превышать размер в Мб, указанный в системной настройке MaxFileSize. Если больше, выдаст пользователю сообщение.

В случае, если не будет прав доступа - ошибка будет записана в лог-файл FileService, а загружаемый файл будет сохранен базовым способом - в БД.

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

Каким образом можно, кликнув на номер телефона в Creatio, сделать звонок через tel-протокол?

То есть,  кликать по ссылке вида "tel: +35722444032"? Желательно, глобально, а не переопределяя каждое поле

 

Нравится

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

Владимир, вопрос обсуждали тут и тут.

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

/**
 * Starts call in CTI panel.
 * @param {String} number Phone number to call.
 * @return {Boolean} False, to stop click event propagation.
 */
onCallClick: function(number) {
	return this.callContact(number, this.$Id, this.$Account);
}

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

/**
 * Starts phone call in CTI panel.
 * @protected
 * @param {String} number Phone number to call.
 * @param {String} entitySchemaName Customer field entity schema name.
 * @param {String} customerId Customer record unique identifier.
 * @param {Terrasoft.Collection} relationFields Call instance crelation column values collection.
 * @return {Boolean} False to stop click event propagation.
 */
makeCall: function(number, entitySchemaName, customerId, relationFields) {
	if (this.isNotEmpty(number)) {
		this.sandbox.publish("CallCustomer", {
			number: number,
			customerId: customerId,
			entitySchemaName: entitySchemaName,
			callRelationFields: relationFields
		});
	}
	return false;
},

Также пробовал просто создавать средство связи типа «web» и там писать ссылку с tel и цифрами, но так работать не будет.

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