Добрый день! Есть такая задача: при наведении курсора мыши, изображение должно увеличиваться. Попробовали реализовать это так. Создала замещающий клиентский модуль CommonCSSV2, в котором определила:

img.big {cursor: pointer; max-width: 500%;}
img.big:hover {max-width: none;}

В карточке определила класс для поля фото:

"operation": "insert",
"name": "UsrPhoto",
"values": {

//класс для фото
"wrapClass": [
"img.big"
],

"getSrcMethod": "getSrcMethod",
"onPhotoChange": "onPhotoChange",
"beforeFileSelected": "beforeFileSelected",
"readonly": false,
"defaultImage": "",
"generator": "ImageCustomGeneratorV2.generateCustomImageControl"
},

"parentName": "PhotoContainer",
"propertyName": "items",
"index": 0
}

К сожалению на страничке ничего не изменилось (кэш чистила). Подскажите, пожалуйста, что не так? Спасибо!

Нравится

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

Юлия, добрый день!

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

define("MyPageV2", ["MyPageV2Resources", "css!MyCSSModule"], function(resources) {
		...
	}
);

Касательно самих стилей - скорее всего, они перекрываются базовыми стилями image-edit-container и ts-image-edit-full-size-element. Попробуйте добавить свои стили примерно так:

.image-edit-container .big {
	cursor: pointer;
}
 
.image-edit-container .big:hover {
	width: 200% !important;
	height: 200% !important;
	max-width: none;
	max-height: none;
}
 
.image-edit-container .ts-image-edit-full-size-element:hover {
	max-width: none;
	max-height: none;
}

И в карточке:

"operation": "insert",
"name": "UsrPhoto",
"values": {
	"classes": {"wrapClass": ["big"]}}
	...
}

Олег, огромное Вам спасибо!!! Все получилось! Вы гений!

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

Для того, чтобы увеличенное фото отображалось поверх остальных элементов страницы, можно в стиле .image-edit-container .big:hover установить значение свойства z-index больше 10. У остальных контролов по умолчанию 10.

Олег, добрый день! Спасибо, все получилось!!!

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

Юлия, возможно, Вам нужно заместить FileDetailV2.

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

Юлия, возможно, класс контейнера, который содержит поле с изображением на детали "Файлы", отличается от image-edit-container. Попробуйте заменить стили для этого класса, по аналогии с image-edit-container.

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

//стиль для увеличения фото щита в файлах и сообщениях
.entity-image-container-class .big {
float: left;
width: 128px;
height: 128px;
text-align: center;
line-height: 30% !important;
cursor: pointer;
z-index: 15;
}

.entity-image-container-class .big:hover {
width: 200% !important;
height: 200% !important;
max-width: none;
max-height: none;
}

.entity-image-container-class .ts-image-edit-full-size-element:hover {
max-width: none;
max-height: none;
}

Также создать замещающий модуль для файла FileDetailV2 и прописать класс "big" вот тут:

selectEntityContainer.items.push(checkBoxConfig);
var imageContainer = ViewUtilities.getContainerConfig("entity-image-container",
["entity-image-container-class"]);
var imageViewConfig = {
className: "Terrasoft.ImageView",
imageSrc: {"bindTo": "getEntityImage"},
classes: {wrapClass: ["entity-image-view-class"]},
classes: {wrapClass: ["big"]},
click: {"bindTo": "onEntityImageClick"}
};

Показать все комментарии
7.6
пакет
Технические вопросы
7.x

Здравствуйте, подскажите пожалуйста, как правильно собрать пакет на версии 7.6.
При создании пакетов получаю ошибку

E:\WWW\project76\Terrasoft.WebApp\DesktopBin\WorkspaceConsole>Terrasoft.Tools.Wor
kspaceConsole.exe -userName=Supervisor -userPassword=Supervisor -workspaceName=D
efault -operation=SaveSVNContent -destinationPath=D:\Temp\Repository\ -contentTy
pes=Repository -workingCopyPath=D:\Temp\Source\ -repositoryUri=http://SERVER-iis
:8888/svn/project76/trunk/project76 -sourceControlLogin=Supervisor -sourceControl
Password=myPass
Ошибка: Unable to load one or more of the requested types. Retrieve the LoaderEx
ceptions property for more information.
Работа утилиты закончена.

лог:
Ошибка: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
at System.Reflection.Assembly.GetTypes()
at Terrasoft.Common.ReflectionUtilities.FindTypeByShortName(Assembly assembly, String name)
at Terrasoft.Core.SchemaManagerItem`1.get_TypeName()
at Terrasoft.Core.Entities.SystemEntitySchemaManager.InitializeSafeSchema(ISchemaManagerItem schemaManagerItem, Assembly assembly)
at Terrasoft.Core.SchemaManagerItem`1.get_SafeInstance()
at Terrasoft.Core.Manager`2.FindInstanceByName(String name)
at Terrasoft.Core.SystemUserConnection.InitializeCurrentUser(String userName, TimeZoneInfo timeZone, String clientIP, String agent, Boolean logSessionStart)
at Terrasoft.Core.AppConnection.InitializeSystemUserConnection(ConfigurationSection schemaManagerProviderConfigurationSection)
at Terrasoft.Core.AppConnection.Initialize(ConfigurationSectionGroup appConfigurationSectionGroup)
at Terrasoft.Tools.WorkspaceConsole.WorkspaceConsoleApplication.Initialize(ConfigurationSectionGroup appConfigurationSectionGroup)
at Terrasoft.Tools.Common.BaseConsoleApplication`2.Run(String[] args)

Работа утилиты закончена.

Нравится

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

Здравствуйте, Александр!

У нас такая же ошибка возникала, если бинарные файлы были распакованы через проводник Windows, а не через архиватор.
Распакуйте бинарные файлы с помощью действия "Extract to.." WinRAR или 7-zip, подготовьте заново WorkspaceConsole согласно с разрядностью Вашей операционной системы. После этих действий у нас ошибки не возникало.

Странно,но действительно помогло. Спасибо!

Проводник Windows при копировании файлов из архива может так и оставить часть данных в сжатом виде.
Отсюда делаем выводы, что лучше всё же пользоваться архиваторами, они знают своё дело :)

А каким образом собрать именно необходимый пакет или все пакеты из конфигурации? WC не может найти требуемый пакет.

Ошибка: Пакет с именем "УказанноеНазваниеПакета" не найден

Александр, прошу определиться, где Вам лучше вести диалог - на community или на портале.

Александр, удобнее на community.На портале был создан вопрос из-за важности срока реакции.

Ок, тогда перенесу сюда свой ответ:

Для этого есть параметр -packageName. Там Вы и указываете название пакета. Убедитесь, что он есть в прописанном Вами пути.

Можно выгрузить просто все пакеты:

1) Выгрузка рабочего пространства (из БД) в репозиторий (zip-архив)

Terrasoft.Tools.WorkspaceConsole.exe -operation=SaveDBContent -workspaceName=Default -destinationPath=D:\Temp\Repository\ -contentTypes=Repository

2) Выгрузка рабочего пространства (из Svn) в репозиторий (zip-архив)

Terrasoft.Tools.WorkspaceConsole.exe -operation=SaveSvnContent -workspaceName=Default -destinationPath=D:\Temp\Repository\ -contentTypes=Repository -workingCopyPath=D:\Temp\Source\ -repositoryUri=http://tscoredev5:8050/svn/ts5conf/Product/trunk -sourceControlLogin=[Имя пользователя для SVN] -sourceControlPassword=[Пароль пользователя для SVN]

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

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

Структура репозитория приведена на картинке

Александр, пожалуйста, вышлите текст ошибки которая возникает при указании ключа -packageName

Ошибка: Пакет с именем "[ИмяПкета]" не найден
   в Terrasoft.Tools.WorkspaceConsole.WorkspaceConsoleApplication.GetPackageByName(PackageStorage storage, String packageName)
   в Terrasoft.Tools.WorkspaceConsole.WorkspaceConsoleApplication.SetNotDependsOnPackagesNotChangedStateByName(PackageStorage storage, String packageName)
   в Terrasoft.Tools.WorkspaceConsole.WorkspaceConsoleApplication.ComposeWithoutSaving(PackageStorage sourceStorage, String sourceStoragePrimaryInfo, PackageStorage targetStorage, String targetStoragePrimaryInfo, SysPackageInstallType skipInstallType, String packageName, Boolean loadBeforeCompose)
   в Terrasoft.Tools.WorkspaceConsole.WorkspaceConsoleApplication.Compose(PackageStorage sourceStorage, String sourceStoragePrimaryInfo, PackageStorage targetStorage, String targetStoragePrimaryInfo, SysPackageInstallType skipInstallType, String packageName, Boolean loadBeforeCompose)
   в Terrasoft.Tools.WorkspaceConsole.WorkspaceConsoleApplication.SaveSvnRepository(WorkspaceConsoleOptions options)
   в Terrasoft.Tools.WorkspaceConsole.WorkspaceConsoleApplication.SaveSvnContent()
   в Terrasoft.Tools.WorkspaceConsole.WorkspaceConsoleApplication.Execute()
   в Terrasoft.Tools.Common.BaseConsoleApplication`2.Run(String[] args)

Также после сбора пакета из БД пытаюсь установить пакет на бандл 7.6.0.996_SalesOmnichannel_Marketing_Softkey_MSSQL_RUS
и возникает следующая ошибка

Ошибка: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
   at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
   at System.Reflection.Assembly.GetTypes()
   at Terrasoft.Common.ReflectionUtilities.FindTypeByShortName(Assembly assembly, String name)
   at Terrasoft.Core.SchemaManagerItem`1.get_TypeName()
   at Terrasoft.Core.Entities.SystemEntitySchemaManager.InitializeSafeSchema(ISchemaManagerItem schemaManagerItem, Assembly assembly)
   at Terrasoft.Core.SchemaManagerItem`1.get_SafeInstance()
   at Terrasoft.Core.Manager`2.FindInstanceByName(String name)
   at Terrasoft.Core.SystemUserConnection.InitializeCurrentUser(String userName, TimeZoneInfo timeZone, String clientIP, String agent, Boolean logSessionStart)
   at Terrasoft.Core.AppConnection.InitializeSystemUserConnection(ConfigurationSection schemaManagerProviderConfigurationSection)
   at Terrasoft.Core.AppConnection.Initialize(ConfigurationSectionGroup appConfigurationSectionGroup)
   at Terrasoft.Tools.WorkspaceConsole.WorkspaceConsoleApplication.Initialize(ConfigurationSectionGroup appConfigurationSectionGroup)
   at Terrasoft.Tools.Common.BaseConsoleApplication`2.Run(String[] args)
 
Работа утилиты закончена.

Дополнительно прошу выслать все параметры указанные в WorkSpаce Console без исправлений.

Параметры вызова в приложении
wc_scripts.txt

При загрузке пакета ошибка похожа на проблему из первого поста, но распаковка файлов из архива не помогла. Установлена система Win 8.1 + NetFramework 4.6

Александр, предлагаю продолжить наше взаимодействие в рамках обращения в техническую поддержку.
Пожалуйста, направьте на support@terrasoft.ru cодержимое папки "Packages".

Сергей,добрый день! Отписался в техническую поддержку 1 сентября после прочтения Вашего поста. Скажите пожалуйста, есть ли какие-то результаты по данному вопросу?

Сергей,добрый день! Отписался в техническую поддержку 1 сентября после прочтения Вашего поста. Скажите пожалуйста, есть ли какие-то результаты по данному вопросу?

Здравствуйте, Александр!

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

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

Выполнить первичный импорт даннных в CRM-систему из БД на MS SQL Server. Как это сделать?

Нравится

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

Добрый день!

Вы можете попробовать воспользоваться переносом данных таблиц из одной БД в другую. Например, в Management Studio это «Export data» (https://www.google.com.ua/webhp?sourceid=chrome-instant&ion=1&espv=2&ie…+).

Или как вариант можете данные выгрузить из БД в Excel (https://www.google.com.ua/webhp?sourceid=chrome-instant&ion=1&espv=2&ie…), а затем с помощью импорта в bpm’online загрузить их в приложение.

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

Выполнить интеграцию по клиентам (физ. лицам, юр. лицам и индивидуальным предпринимателям), договорам, заявкам - после создания в СРМ системе клиента информация попадает в БД на MS SQL Server. После обновления данных информация попадает в БД на MS SQL Server. Как это сделать?

Нравится

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

Если у Вас есть доступ к БД, то Вы можете создать триггеры на таблицы, из которых данные должны попадать в хранилище (вторая БД).
Если у Вас нет доступа к БД, то необходимо реализовать конфигурационную логику, которая будет мониторить изменения объектов в системе. И затем взаимодействовать сторонним веб-сервисом, который будет работать с хранилищем.

Показать все комментарии
oktell_коннектор
7.x

Добрый день.
Не могу добиться внятного ответа от компании, которая сопровождает нас. Поэтому пишу здесь. Рассматриваем интеграцию с ip-телефонией oktell. Выяснилось, что надо приобретать коннектор, только с ним будет интеграция. Но какой функционал привнесет этот коннектор, как он выглядит, как он устанавливается и где, мне не ясно. Нет никакой информации по этому поводу. Прошу помочь с этим вопросом. Может есть у кого описание или презентация?

Нравится

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

Вся интересующая Вас информация есть в Академии Terrasoft.
http://academy.terrasoft.ua/documents/docs/product/bpm'online%20sales/o…

Коннектор позволит получать CallerID из Oktell и использовать его в конфигурации bpm'online (Например для определения ФИО пользователя).
Также коннектор позволяет управлять уже принятым звонком - выполнить перевод звонка, установить на удержание, завершить звонок.
Как устанавливается коннектор, также описано в Академии:
http://academy.terrasoft.ua/documents/docs/product/bpm'online%20sales/o…

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

Показать все комментарии
Интеграция и импорт данных
событие
Технические вопросы
7.x

Здравствуйте. Я знаю C# и T-SQL, но в BPM'online только начал работать. Я прошу вас помочь мне в следующем.
1) Создать бизнес процесс, который по событию добавления/обновления записи выгружает информацию в шлюзовую таблицу и вызывает хранимую процедуру (которая, как я понимаю, перезаписывает данные из шлюзовой таблицы в целевую). Как это сделать?
2) Выполнить интеграцию по клиентам (физ. лицам, юр. лицам и индивидуальным предпринимателям), договорам, заявкам - после создания в СРМ системе клиента информация попадает в БД на MS SQL Server. После обновления данных информация попадает в БД на MS SQL Server. Как это сделать?
3) Выполнить первичный импорт даннных в CRM-систему из БД на MS SQL Server. Как это сделать?

Нравится

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

Здравствуйте, Евгений!
По вашим второму и третьему вопросам созданы отдельные темы:
http://www.community.terrasoft.ua/forum/topic/12869
http://www.community.terrasoft.ua/forum/topic/12870

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

Для отслеживания создания/изменения/удаления записи Вы можете использовать начальный элемент сигнал. В сигнале необходимо указать объект в bpm'online, в котором должны произойти изменения. Далее элементом "Чтение данных" Вы считываете измененный объект.
Далее элементом "Задание сценарий" Вы можете либо:

  1. вызвать веб сервис для интеграции (описание вызова веб сервиса прикреплено)
  2. вызвать хранимую процедуру

Хранимая процедура предварительно должна быть создана в системе (для этого перейдите в конфигурацию и на вкладке SQL-сценарии добавьте процедуру.

Большое спасибо за помощь.

Показать все комментарии
GeneratedWebFormService
SaveWebFormLeadData
Технические вопросы
7.x

Версия 7.2.0.942 marketing.

Пытаюсь настроить форму web-to-lead. Создал форму, разместил на сайте. С сайта уходит запрос, а лид в bpm не создается. Начал дебажить сервис GeneratedWebFormService и обнаружил что UserConnection = null .

Подскажите с чем может быть связано и как исправить?

Нравится

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

Вячеслав, добрый день!

Для корректной регистрации лидов в bpm`online с внешней формы на сайте необходимо внести в системные настройки логин и пароль пользователя, под которым лиды смогут регистрироваться в системе:

1. Перейти в Управление конфигурацией
2. Открыть вкладку системные настройки
3. Отфильтровать 2 системные настройки - Имя пользователя для регистрации лидов из внешних ресурсов, Пароль пользователя для регистрации лида из внешних ресурсов.
4. Внести в них соответствующие данные для авторизации и сохранить.

После этих действий лиды будут успешно попадать в систему.

Спасибо!

Спасибо! Всё получилось.

К слову сайт training.terrasoft.ru уже не существует, а на academy.terrasoft.ru информация только о версиях старше 7.4 к тому же на Академии не работает поиск (точнее не работают гиперссылки из поиска).
Было бы здоров иметь доступ к информации, в частности инструкциям, и старых версий.

Здравствуйте, Вячеслав.
Да, к сожалению, указанный Вами ресурс больше не актуален. Если Вам необходима документация по версиям продукта ниже 7.4, пожалуйста, пришлите запрос к нам на почту support@terrasoft.ru.
Хорошего дня.

Показать все комментарии
Активность
цвет
Технические вопросы
7.x

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

Пытаюсь реализовать задачу, изменить цвет активностей (на оранжевый), если у активности высокий приоритет.
Переопределил метод prepareResponseCollection:
prepareResponseCollection: function(collection) {
var highPriorityId = "D625A9FC-7EE6-DF11-971B-001D60E938C6";
this.callParent(arguments);
var colour = "#F94D00";
collection.each(function(item) {
if (item.get("PriorityId") === highPriorityId) {
item.customStyle = {
background: colour
};
item.set("Background", colour);
}
}, this);
}

Если без ифа, то цвет меняют все активности.
С ифом не работает(цвет не меняется).
Подскажите, что неправильно (подозрение на item.get("PriorityId") )?

Нравится

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

Алексей, добрый день!

Попробуйте в сравнении использовать item.get("Priority").value - в активностях поле "Приоритет" типа "Справочник".

При использовании item.get("Priority").value страница активностей перестала отображаться вообще (Загрузка, не прекращается, не загружает)

Попробуйте

var priority = item.get("Priority");
if (!this.Ext.isEmpty(priority) && (priority.value === highPriorityId)) {
...
}

Возможно, не для всех активностей установлен приориет.

Теперь страница отображается, но цвет активностей с высоким приоритетом не меняется.
По всей видимости, дело не в этом.
Также проверил, приоритет проставлен для всех активностей.

Алексей, Вы добавляли поле "Priority" в атрибуты схемы?

attributes: {
	...
	"Priority": {
		dataValueType: Terrasoft.DataValueType.LOOKUP
	}
}

Также попробуйте включить отладчик, установить точку остановки в момент проверки условия и проверить значение переменной priority в этот момент.

в priority - undefined.
Вот код:
define("ActivitySectionV2", ["ConfigurationConstants", "FieldForceConfigurationConstants"],
function(ConfigurationConstants, FieldForceConfigurationConstants) {
return {

entitySchemaName: "Activity",
details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
attributes: {
"Priority": {
dataValueType: Terrasoft.DataValueType.LOOKUP
}
},

methods: {
prepareResponseCollection: function(collection) {
var highPriorityId = "D625A9FC-7EE6-DF11-971B-001D60E938C6";
this.callParent(arguments);
var colour = "#F94D00";
collection.each(function(item) {
var priority = item.get("Priority");
debugger;
if ((!this.Ext.isEmpty(priority)) && (priority.value === highPriorityId)) {

item.customStyle = {
background: colour
};
item.set("Background", colour);
}
}, this);
}
},
diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/
};
});

Алексей, Вы хотите реализовать данный функционал в расписании активностей? Дело в том, что в режиме расписания доступны не все колонки схемы Activity, а только некоторые. Для получения значения поля "Приоритет" активности необходимо добавить соответствующую колонку в запрос.

Попробуйте для начала вместо item.get("Priority") подставить item.get("Status"). Если значение будет отличаться от undefined, переопределите схему ActivitySectionV2, добавив в список колонок метода getGridDataColumns колонку "Priority".

Здравствуйте, Олег.
Действительно, после подставки item.get("Status") - priority получила значение.
После переопределения метода getGridDataColumns и добавления в него колонки "Priority" все заработало.
Спасибо Вам за консультацию.

Показать все комментарии
7.4
раздел
редактируемый реестр
Технические вопросы
7.x

Здравствуйте, возможно ли реализовать редактируемый реестр для раздела в Bpm Online 7.4?
Также интересует вопрос - можно ли реализовать переключение между редактируемым реестром и плиточным представлением?

Нравится

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

Александр, добрый день!

Редактируемый реестр возможен в приложении начиная с версии 7.4.1
Для версии 7.4.0 данной возможности нет.

А насколько трудозатратно будет перенести такой реестр из более старших версий?

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

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

Показать все комментарии
email
уведомления
Технические вопросы
7.x

Здравствуйте.
Был построен бизнес-процесс, где после завершённой задачи будет приходить электронное сообщение на конкретный адрес.
Цепочка была проверена работает. Однако, за 4 тестовых выполненных задачи пришло 130 писем.
Помогите разобраться с данным вопросом:
1. Как настроить уведомления, чтобы приходило 1 письмо, а не 130?
2. В теле письма нужно указать по какой именно выполненной задачи пришло данное сообщение.
Скриншоты БП прилагаются.
Буду очень признателен за помощь.

Нравится

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

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

"Демьяник Алексей Олегович" написал:

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

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


Отправил вам запрос на удалённое подключение

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