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



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

  • возможно ли заменить синий цвет фона на иной, например желтый или как в веб-версии серый. Изображение удалено.
  • Цвет заголовков (например, "Контакты") сделать не черным, а иным цветом и изменить жирность шрифта 
  • Кнопки возможно менять по цвету, форме? Изображение удалено.
  • Менять иконки? Изображение удалено.

На данный момент Заказчик уже использует моб. приложение creatio. Есть потребность изменить внешний вид под фирменный стиль компании Заказчика.  

Нравится

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

Добрый день, Максим!



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



Как вариант, можно в коде попробовать менять CSS при помощи Terrasoft.util.writeStyles, как предлагается тут, или просто задать новые стили на вкладке LESS нужных мобильных схем.

 

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



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



Название этих схем формируется следующим образом:

- Mobile+Объект+RecordPageSettings+Название рабочего места  для схемы настроек страницы, например MobileCaseRecordPageSettingsDefaultWorkplace;

- Mobile+Объект+GridPageSettings+Название рабочего места для  схемы настроек реестра, например MobileCaseGridPageSettingsDefaultWorkplace.

Рекомендую Вам обратить внимание на блок документации по разработке в мобильном приложении на Академии Creatio



Примеры некоторых реализаций Вы можете посмотреть на Community: https://community.terrasoft.ru/questions/deistvia-nad-zapisami-detali-v-mobilnom-prilozenii https://community.terrasoft.ru/articles/susestvuet-li-v-79-sposob-zadat-cvet-stroke-v-reestre-mobilnogo-prilozenia



Уже создали пожелание на Product Owner`a ответственной команды разработки для рассмотрения реализации более легкого способа изменения стилей в следующих версиях приложения.



Спасибо, что делаете наш продукт лучше.



С уважением, Елена.

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

После добавления в Конфигурации колонки (целое число) в объект с именем UsrMinTicketPrice в пакете Custom система не хочет сохраняться. Пишет:

Не удалось обновить структуру для схем:

UsrRating, UsrRating, UsrRating, UsrRating, UsrRating

Нравится

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

Добрый день, 

Если попробовать выполнить обновления структуры БД по отдельности для каждой схемы из списка, какие ошибки возникают? 

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

Возникла проблема с вызовом веб-сервиса из студии.  Возвращает ошибку 404. Пример сервиса:

 namespace Terrasoft.Configuration
{
    using System;
    using System.ServiceModel;
    using System.ServiceModel.Web;
    using System.ServiceModel.Activation;
    using Terrasoft.Core.DB;
    using Terrasoft.Web.Common;
 
    [ServiceContract]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
    public class UpsertContactService : BaseService
    {
        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped,
        ResponseFormat = WebMessageFormat.Json)]
        public string GetTransformValue(string inputParam)
        {
            // Изменение значения входящего параметра.
            var result = inputParam + " changed!";
            return result;
        }
    }
}

Пример вызова:

HttpWebResponse authresponse = (HttpWebResponse)authRequest.GetResponse();
            var myRequest = HttpWebRequest.Create("https://мой сайт/0/ServiceModel/UpsertContactService.svc/GetTransformValue") as HttpWebRequest;
 
            myRequest.Method = "POST";
            myRequest.ContentType = "application/json";
            foreach (Cookie Cook in authresponse.Cookies)
            {
                myRequest.Headers.Add(Cook.Name, Cook.Value);
            }
            myRequest.CookieContainer = bpmCookieContainer;
 
            using (var requestStream = myRequest.GetRequestStream())
            {
                using (var writer = new StreamWriter(requestStream))
                {
                    writer.Write(@"111");
                }
            }
            using (HttpWebResponse response = (HttpWebResponse)myRequest.GetResponse())
            {
                using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.ASCII))
                {
                    string s = reader.ReadToEnd();
                    Console.WriteLine(s);
                }
            }

Авторизация проходит успешно, БП получилось запустить. Как запустить сервис и получить от него ответ?

Нравится

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

Добрый день

Виталий, в статье на академии есть ответ https://academy.terrasoft.ru/docs/developer/back-end_development/config…

 

Ответ 404 верный, т.к. у вас нет такого сервиса. Вы создаете конфигурационный сервис, который вызывается по другому url.

 

А зачем в Header добавлять значения всех кук из аутентификации? Достаточно только BPMCSRF.

Во-вторых. Вызов под каким пользователем происходит? под портальным? Если да, то надо сервис добавить в список разрешенных для портальных - \папка приложения\Terrasoft.WebApp\SspServices\SspServiceList.txt

Добавить комментарий

Алексей Следь,

происходит под админом, сайт в облаке, через постмен тоже 404.

Вот что в браузере пишет:

Добрый день

Виталий, в статье на академии есть ответ https://academy.terrasoft.ru/docs/developer/back-end_development/config…

 

Ответ 404 верный, т.к. у вас нет такого сервиса. Вы создаете конфигурационный сервис, который вызывается по другому url.

 

Артем Гура,

Да! То что нужно! Вот рабочий код:

HttpWebResponse authresponse = (HttpWebResponse)authRequest.GetResponse();
            var myRequest = HttpWebRequest.Create("https://mysite.com/0/rest/UpsertContactService/GetTransformValue") as HttpWebRequest;
 
            myRequest.Method = "POST";
            myRequest.ContentType = "application/json";
            myRequest.Headers.Add(authresponse.Cookies["BPMCSRF"].Name, authresponse.Cookies["BPMCSRF"].Value);
            myRequest.CookieContainer = bpmCookieContainer;
 
            using (var requestStream = myRequest.GetRequestStream())
            {
                using (var writer = new StreamWriter(requestStream))
                {
                    writer.Write(@"{""inputParam"":""Test!""}");
                }
            }
            using (HttpWebResponse response = (HttpWebResponse)myRequest.GetResponse())
            {
                using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.ASCII))
                {
                    string s = reader.ReadToEnd();
                    Console.WriteLine(s);
                }
            }

И еще как авторизовался, может кому нужно будет:

var authRequest = HttpWebRequest.Create(@"https://mysite.com/ServiceModel/AuthService.svc/Login") as HttpWebRequest;
            authRequest.Method = "POST";
            authRequest.ContentType = "application/json";
            var bpmCookieContainer = new CookieContainer();
            authRequest.CookieContainer = bpmCookieContainer;
            using (var requestStream = authRequest.GetRequestStream())
            {
                using (var writer = new StreamWriter(requestStream))
                {
                    writer.Write(@"{
                                ""UserName"":""Supervisor"",
                                ""UserPassword"":""Supervisor"",
                                ""SolutionName"":""TSBpm"",
                                ""TimeZoneOffset"":-120,
                                ""Language"":""Ru-ru""
                                }");
                }
            }

 

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

Доброго дня!

 

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

 

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

 

Исходный код прилагаю.

addRecord: function(typeColumnValue) {
    var config = {
	    recordId: Terrasoft.GUID_EMPTY,
		operation: Terrasoft.ConfigurationEnums.CardOperation.ADD,
		entitySchemaName: "Account",
		valuePairs: this.getAddMiniPageDefaultValues(),
		miniPageSchemaName: "AccountMiniPage",
	};
    this.openMiniPage(config);
},
 
getAddMiniPageDefaultValues: function() {
    var defaultValues = [];
    defaultValues.push({
        name: "Parent", 
        value: this.get("MasterRecordId")
    });
	defaultValues.push({
	    name: "Category",
		value: "dc199b6d-e948-4598-8a12-c38ca90428d8"
	});
	return defaultValues;
}

Благодарю за ваши ответы

Нравится

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

Вадим, добрый день

У вас деталь - это один модуль, а миникарточка - другой. Единственный вариант общения между модулями - это сообщения. И да, при  работе с этой миникарточкой вы всегда будете отправлять сообщение, а вот реагировать на него будет деталь только в том случае, если этот модуль сейчас загружен в системе (фактически, если он отображается на экране)

Вадим, добрый день.

 

Попробуйте реализовать нужный Вам функционал через обмен сообщениями песочницы. Более подробно об этом можно почитать в статье на Академии.

Алла Савельева,

Спасибо за ответ! Однако реализация не совсем очевидна. Неужели для реализации этого кейса придется постоянно публиковать сообщение со стороны добавляемого объекта для обновления детали? Учитывая то, что добавляемый объект, помимо детали, может создаваться и из других мест

Вадим, добрый день

У вас деталь - это один модуль, а миникарточка - другой. Единственный вариант общения между модулями - это сообщения. И да, при  работе с этой миникарточкой вы всегда будете отправлять сообщение, а вот реагировать на него будет деталь только в том случае, если этот модуль сейчас загружен в системе (фактически, если он отображается на экране)

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

Добрый день!

Подскажите, пожалуйста, как создать нередактируемый раздел на основе VIEW?

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

Может быть где-то есть реализованные примеры?

Руководители хотят анализировать "сборную" активность из разных объектов в одном месте (определенные процессы, записи в ленте, визирования и т.п.)

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

 

Нравится

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

Владимир, добрый день! 



Для более детального ознакомления с разделами на основе VIEW рекомендую Вам ознакомиться со статьёй:



https://academy.terrasoft.ua/docs/developer/back-end_development/locali…

Лев, спасибо за ссылку. 

Объекты на основе VIEW используем очень часто, но здесь вопрос именно о разделе. А у него есть своя специфика, насколько я понимаю.

И потому хотелось узнать именно об этом опыте

Добрый день.

 

Я когда-то такое делала.

 

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

 

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

 

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

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

 

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

Можно её восстановить?

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

Установили дополнение для выделения цветом записей в разделе Обращения https://marketplace.terrasoft.ru/template/vydelenie-cvetom-zapisey-v-ra…

Где регулируются цветовая палитра и правило отображения цвета? Конкретно у этого дополнения

Нравится

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

Светлана,

 

настройки правил отображения цвета в реестре выполнены в схеме CaseSection пакета LabCaseColoring. Выполните свои настройки по аналогии с примером или обновите схему.

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

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

Нравится

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

В схеме детали, переопредели эту функцию и там можно указать к какому полю какую подсказку показать

getCellControlsConfig: function(entitySchemaColumn) {
              var columnName = entitySchemaColumn.name;
              var enabled = (entitySchemaColumn.usageType !== Terrasoft.EntitySchemaColumnUsageType.None) &&
                  !Ext.Array.contains(this.systemColumns, columnName);
 
              var config = this.getDefaultCellControlsConfig(columnName, {
                  enabled: enabled,
                  caption: entitySchemaColumn.caption,
              });
 
              //Название поля
              if (columnName === "qrtName") {
                config.hint = "Подсказка"; //Текст Позсказки
              }
 
              if (entitySchemaColumn.dataValueType !== Terrasoft.DataValueType.DATE_TIME &&
                  entitySchemaColumn.dataValueType !== Terrasoft.DataValueType.BOOLEAN) {
                  config.focused = {"bindTo": "Is" + columnName + "Focused"};
              }
              return config;
          }

Не очень понятен вопрос, можно пример со скриншотом?

я попробую по другому объяснить

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

мне же необходимо тоже самое но в реестре

Dima Avdoshin,

теперь понятен вопрос, к сожалению с таким не сталкивался, может кто-то другой сможет подсказать

В схеме детали, переопредели эту функцию и там можно указать к какому полю какую подсказку показать

getCellControlsConfig: function(entitySchemaColumn) {
              var columnName = entitySchemaColumn.name;
              var enabled = (entitySchemaColumn.usageType !== Terrasoft.EntitySchemaColumnUsageType.None) &&
                  !Ext.Array.contains(this.systemColumns, columnName);
 
              var config = this.getDefaultCellControlsConfig(columnName, {
                  enabled: enabled,
                  caption: entitySchemaColumn.caption,
              });
 
              //Название поля
              if (columnName === "qrtName") {
                config.hint = "Подсказка"; //Текст Позсказки
              }
 
              if (entitySchemaColumn.dataValueType !== Terrasoft.DataValueType.DATE_TIME &&
                  entitySchemaColumn.dataValueType !== Terrasoft.DataValueType.BOOLEAN) {
                  config.focused = {"bindTo": "Is" + columnName + "Focused"};
              }
              return config;
          }

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

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

Нравится

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

Есть метод setDefaultMode в FileDetailV2, переопределите его вызвав в нем функцию this.setTiledMode();

Итого:

setDefaultMode: function() {

                this.setTiledMode();

            },



Либо Вариант #2:

onRender: function() {

                this.callParent(arguments);

                this.setTiledMode();

            },

 

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

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

1. Не работает с мобильным приложением.

2. Не работает дополнение https://marketplace.terrasoft.ru/app/mime-attachment-processing-creatio, а это для меня критично, т.к. почта с подписью

3. Не работает дополнение https://marketplace.terrasoft.ru/app/downloading-files-one-archive-crea…

4. Нельзя работать с файлами в БП.

5. Вызывает ошибки в стандартном функционале. Со стороны Террасофта внесли исправления в коробку, а ошибка осталась. Нулевой размер файлов если публиковать сообщение в обращении на портале с вложением. Ответ техподдержки - "дополнение FileStorageForCreatio некорректно отрабатывает и с ним связано то, что после правок файлы на деталь добавляются с нулевым размером. Рекомендуем Вам временно удалить данное приложение. С самой проблемой дополнения FileStorageForCreatio, пожалуйста, обратитесь на Community, так как дополнение поддерживается только через Community." Ах, да. Галка выгружать файлы отключена!

6. Не поддерживается. От слова Совсем. Еще в начале апереля писал, что используются устаревшие методы. В конце мая подключил техподдержку. В результате отписка от 31.05.21 "по решению File storage сменилась ответственная команда. Запрос на обновление устаревших методов передала, по результатам планирования работ уведомлю о сроках."

 

Уж лучше пусть растет БД и все функции работают, чем это все.

 

В итоге принято решение уходить от этого дополнения. Но есть 2 вопроса:

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

И второй самый важный. - как же мне загнать все выгруженые файлы обратно в БД?

Нравится

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

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

 

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

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

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

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

 

С учетом отсутствия качественной поддержки решения и сроков по исправлению ошибок (п. 6) команда Маркетплейс снимает это приложение с публикации.

 

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

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

Добрый день!

Столкнулись с проблемой формирования отчетов по участникам.   

1) Кнопка «Сформировать отчет» до этого не реагировала. Сейчас при нажатии отчёт вроде бы формируется и попадает в уведомления

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

2) Отображается уведомление, что отчет сформирован

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

3) При нажатии на уведомление об Отчете – выдает ошибку "Не найдена страница для веб-адреса"

Нравится

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

Что за дополнение используется? Версия системы? Дополнение обновляли?

Алексей Следь,

версия системы 7.17.3. Приложение Advanced excel reports for Creatio

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