Добрый день!

Есть запрос, Terrasoft.Core.DB.Select, вот кусок:

                    .Distinct().Column("bslc", "Id").As("LinkId")
                    .Column("bslc", "Code").As("Code")
                    .Column("cardProfile", "TextValue").As("Name")
                    .Column("priority", "IntegerValue")

При попытке выполнить, ругается на выделенную строку, так как тип колонки NCLOB (Oracle.DataAccess.Client.OracleException: 'ORA-00932: inconsistent datatypes: expected - got NCLOB').

Если выполнять этот запрос из БД, то так:

                    SELECT DISTINCT
                        "bslc"."Id" "Id",
                        "bslc"."Code" "Code",
                        TO_CHAR("cardProfile"."TextValue") "Name",
                        "priority"."IntegerValue"

не ругается.

Можно ли в Terrasoft.Core.DB.Select использовать TO_CHAR() и как это сделать?

Нравится

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

После редактирования страницы и нажатия на пользовательскую кнопку, я передаю её guid (точнее, ид создаваемого в ней объекта) в бизнес-процесс. Но так как  перед вызовом не было нажато "сохранить", объекта с этим guid нет. Я могу эмулировать действие нажатия кнопки "сохранить" из кода? Не хочется вручную создавать объект по данным из страницы, так как пользователь может потом нажать "сохранить". И да, можно ли как-то убрать эту кнопку насовсем, или перехватить вызываемый ей метод, чтобы в коде при определённых обстоятельствах просто не вызывать this.CallParent?

Нравится

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

Думаю, можете вызвать тихое сохранение при нажатии на пользовательскую кнопку: 

this.save({isSilent: true});

 

Думаю, можете вызвать тихое сохранение при нажатии на пользовательскую кнопку: 

this.save({isSilent: true});

 

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

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

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

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

Нравится

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

на страницу, в секцию атрибутов добавить, если надо вкл/выкл по условию

attributes: {
            
            "ButtonEnabled": {
                "dataValueType": Terrasoft.DataValueType.BOOLEAN,
                "type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
                "value": false
            }

Вызов функции на кнопке

  onButtonClick: function(){ 
                this.SomeFunc();

Сама кнопка в DIFF            

    {
                "operation": "insert",
                "name": "Button",
                "values": {
                    "itemType": 5,
                    "caption": {
                        "bindTo": "Resources.Strings.ButtonCaption"
                    },
                    "click": {
                        "bindTo": "onButtonClick"
                    },
                    "style": "blue",
                    "enabled": {
                        "bindTo": "ButtonEnabled"
                    },
                    "layout": {
                        "colSpan": 12,
                        "rowSpan": 1,
                        "column": 0,
                        "row": 0,
                        "layoutName": "Tab72b43268TabLabelGridLayoutfb645753"
                    }
                },
                "parentName": "Tab72b43268TabLabelGridLayoutfb645753",
                "propertyName": "items",
                "index": 0
            },

В LocalizableString
ButtonCaption    - Текст на кнопке

Если расположение кнопки не имеет значения, то можно использовать меню в "Действиях" 

 

			getActions: function() {
				var actionMenuItems = this.callParent(arguments);
				actionMenuItems.addItem(this.getButtonMenuItem({
					"Caption": {"bindTo": "Resources.Strings.MyButtonCaption"},
					"Click": {"bindTo": "onMyButtonClick"}
				}));
				return actionMenuItems;
			},

 

на страницу, в секцию атрибутов добавить, если надо вкл/выкл по условию

attributes: {
            
            "ButtonEnabled": {
                "dataValueType": Terrasoft.DataValueType.BOOLEAN,
                "type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
                "value": false
            }

Вызов функции на кнопке

  onButtonClick: function(){ 
                this.SomeFunc();

Сама кнопка в DIFF            

    {
                "operation": "insert",
                "name": "Button",
                "values": {
                    "itemType": 5,
                    "caption": {
                        "bindTo": "Resources.Strings.ButtonCaption"
                    },
                    "click": {
                        "bindTo": "onButtonClick"
                    },
                    "style": "blue",
                    "enabled": {
                        "bindTo": "ButtonEnabled"
                    },
                    "layout": {
                        "colSpan": 12,
                        "rowSpan": 1,
                        "column": 0,
                        "row": 0,
                        "layoutName": "Tab72b43268TabLabelGridLayoutfb645753"
                    }
                },
                "parentName": "Tab72b43268TabLabelGridLayoutfb645753",
                "propertyName": "items",
                "index": 0
            },

В LocalizableString
ButtonCaption    - Текст на кнопке

Oleg,

Кнопка добавилась, и даже отображается в инспекторе, но при этом она  абсолютно невидима. В enabled установлено true.
В вашем коде изменил только родительский контейнер и, соответственно, layoutName. У других элементов на странице тот же родитель

Гусейн Гулиев,

В LocalizableStrings добавили? 

Oleg,

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

{
	"operation": "insert",
	"name": "Button",
	"values": {
		"itemType": 5,
		"caption": {// Правильно: "caption" :"Check out",
			"bindTo": "Check out" // неправильное использование bindTo
		},
		"click": {
			"bindTo": "onButtonClick"
		},
		"style": "blue",
		"enabled": true,
		"layout": {
			"colSpan": 8,
			"rowSpan": 1,
			"column": 16,
			"row": 6,
			"layoutName": "Tab84fbfd75TabLabelGridLayout489fb6f3"
		}
	},
	"parentName": "Tab84fbfd75TabLabelGridLayout489fb6f3",
	"propertyName": "items",
	"index": 6
},

 

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

Посоветуйте, пожалуйста, документацию по работе с полем "справочник" на странице пользовательского раздела. Мне нужно получить это поле и в зависимости от его значения рассчитать другие поля. На моей среде используется устаревшая версия 7.15, в которой установка значений бизнес-правилами недоступна. Всё действие происходит на одной странице раздела без перехода по кейсам, поэтому реализация с помощью бизнес процесса не рассматривается, так же как реализация посредстом бизнес-правил. Интересует именно пользовательская реализация в коде страницы посредством JavaScript

Нравится

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

У меня работает таким образом
 

			onEntityInitialized: function(){
 
				this.on("change:CardStatus", function() {
				this.set("CardClosingReason", null);
				this.set("CardSuspendingReason", null);
		//	this.set("CardClosingReason", {value: null});
			}, this);
			},

 

Нужно также перехватывать событие изменение выбранного поля справочника

У меня работает таким образом
 

			onEntityInitialized: function(){
 
				this.on("change:CardStatus", function() {
				this.set("CardClosingReason", null);
				this.set("CardSuspendingReason", null);
		//	this.set("CardClosingReason", {value: null});
			}, this);
			},

 

Oleg, большое спасибо, это то что надо. А где вы этому научились?
Может, где-то есть документация по работе с ExtJS в Creatio? Я обращался за материалам к террасофт, мне сказали, что не могут предоставить курсы/треннинг, охватывающие именно это. 
Где я могу узнать список всех возможных событий с примерами подписки на них? Если синтаксис this.on можно прочитать в туториалах по ExtJS, то аргументы "event":"sender" для Creatio я просто понятия не имею, где посмотреть. Заранее спасибо за ваш ответ

Гусейн Гулиев,

методом тыка, кучей проб и ошибок, а так же по крупицам собирая информацию на форуме.

ОГРОМНЕЙШЕЕ СПАСИБО тем, кто выклыдывает реальные примеры кода - это помогает гораздо больше, чем 1000 строк теории.

Oleg, то есть инструмент террасофт предоставили, а полную инструкцию к нему - нет? Это прям ну очень неприятно. Неужели вот совсем нигде нет прилично собранной инфы по фронту с использованием ExtJS и перечисления всех возможных событий каждого элемента поля и данным, которые из них можно извлечь?
Я правильно понимаю, что CardStatus в вашем примере - это код поля типа "справочник" на странице, верно? Который в diff указывается как bindTo?

 

О нет. Документации нет) Исходники, подсматривания в примеры, вотэтовотвсё. 

Немного помогает практикум по разработке на платформе. https://academy.terrasoft.ua/trainings

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

Добрый день!

 

Подскажите как реализовать условный поток по вхождению заданной строки в теме объекта?

Хочу преобразовать объект в зависимости от наличия определенных ключевых слов в теме письма.

Нравится

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

contains и тернарный оператор типа такого
"12".Contains("1") ? true : false (любой тип может быть не только бул) 
 
 

Dima Avdoshin,

"[#Выбрать обращения под закрытие от ТБ.Коллекция записей:Тема#]".Contains("VPN")?true : false - т.е. если я пропишу это в условном направлении то если тема будет содержать VPN то процесс пойдет по этому маршруту правильно?  Можно узнать где можно найти про про эти операторы работы с текстом в Creatio?

Алексей Демин,

это с# , формулы поддерживают его код и функциии целиком и полностью

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

Доброго дня!
Пытаемся обновиться с 7.15.1 на 7.15.2. Пробовали:
1. С помощью утилиты https://academy.creatio.com/sites/default/files/documents/downloads/UpdaterService/UpdaterService.zip. Дистрибутивы скачались, настройки install.xml сделал. При запуске - ошибка (см.скрин 1)
2. Вручную запустил SQL скрипты из папки Scenario в порядке из файла UpdateScenario.json. При этом возникает ошибка 2 - см.скрин 2. 
3. Пробую перепроверить шаги по инструкции https://academy.terrasoft.ru/docs/user/ustanovka_i_administrirovanie/razvertyvanie_onsite - страница не найдена, пишет

Как таки обновить на 7.15.2, просьба помочь?

Нравится

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

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

 

1. Какая версия MS SQL сервер у Вас установлена?

2. Почему файл install.xml Вы конфигурировали руками - он должен сконфигурироваться автоматически при запуске Downloader.ps1?

 

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

 

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

1 - версия 12

2 - https://academy.terrasoft.ru/docs/release/instrukciya-po-obnovleniyu-si…

  1. Откройте файл скрипта install.xml из папки Updater для редактирования. Заполните в нем следующие параметры соответствующими значениями:

    • WebRootDirectory — путь к корневой папке сайта.
    • InstallPackagesPath — путь к папке, где сохранены инсталляционные пакеты и утилита обновления.
    • ConnectionString — строка подключения к базе данных. Внимательно скопируйте данную строку с вашего подключения к базе.

Антон Кравченко, добрый день!
Алла права, судя по всему у Вас не совсем корректно настроен файл downloadr.json.
Стоит использовать новую инструкцию для обновления.
https://academy.terrasoft.ru/docs/release/instrukciya-po-obnovleniyu-si…
Также, проверьте корректно ли указаны параметры подключения к БД в файле ConnectionStrings.config вашего приложения.

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

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

 

Перестали отображаться системные сообщения. Остался восклицательные знак из всего сообщения. Подскажите что это может быть и как исправить.

Нравится

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

Похоже проблема была из-за репликации, в процессе запуска она заняла таблицу [dbo].[SatisfactionUpdate], как только репликация остановилась таблица высвободилась.

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

Доброго времени суток, подскажите пожалуйста:
Есть поле "Ответственный" - ссылается на Контакты, в Контактах есть поле подразделение.

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

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

Нравится

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

Вариант 1:  с помощью бизнес-правил
Вариант 2: по окончании процесса сделать обновление страницы 
Вариант 3: небольшим кодом на странице

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

 

Сергей, добрый день.

 

Обновляйтесь до последней версии - в ней есть возможность настройки такой логики пользовательскими средствами через мастер карточки редактирования!

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

Cпасибо, а можете подсказать с примером кода, или сказать где это посмотреть?

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

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

Сергей Рогов пишет:

 Посмотрите в BaseAddressPageV2 заполнение страны по городу.
Свойства             autocomplete и  autoClean
Кажется, так уже со старых версий
 

rules: {
	"City": {
		"FiltrationCityByCountry": {
			ruleType: BusinessRuleModule.enums.RuleType.FILTRATION,
			autocomplete: true,
			autoClean: true,
			baseAttributePatch: "Country",
			comparisonType: Terrasoft.ComparisonType.EQUAL,
			type: BusinessRuleModule.enums.ValueType.ATTRIBUTE,
			attribute: "Country"
		}
}

 

Добрый день.

 

Кроме вышеперечисленных вариантов, на Community есть ряд аналогичных вопросов, связанных с решением подобных задач при помощи кода, вот некоторые из них:

https://community.terrasoft.ru/questions/zhestkaya-privyazka-spravochni…

https://community.terrasoft.ru/questions/vychislyaemoe-tekstovoe-pole

https://community.terrasoft.ua/questions/avtozapolnenie-tekstovogo-polya

https://community.terrasoft.ru/questions/realizovat-avtozapolnenie-pole…

https://community.terrasoft.ru/questions/dinamichnoe-izmenenie-spravoch…

https://community.terrasoft.ru/questions/podstavit-v-detal-znachenie-sp…

Ivan Kuchma пишет:

Пора FAQ заводить :) 

Ivan Kuchma,

Спасибо за столько вариантов!

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

Доброго дня!

У нас есть рабочая Creatio Sales Enterprise на базе MS SQL Server. Сейчас мы переезжаем на другой сервер с PostgreSQL. Не получается выполнить восстановление бэкапа БД (создан в MS SQL Server, восстанавливаем в PostgreSQL). Пробовали и напрямую через интерфейс pgAdmin, и через командную строку, и конвертировали БД через программу-конвертер - результата нет. В какую сторону ещё смотреть, что поискать, у кого заказать?

Нравится

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

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

Возможно, ещё придётся переписывать хранимые процедуры и VIEW, так как местами есть существенные отличия

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

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

Релиз в проработке, к сожалению, по срокам не можем сориентировать.

Утилиту и рекомендации предоставит техническая поддержка по запросу.

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

Elena Sidko,

Елена, а Вы не могли бы ещё уточнить версии/билды/релизы MS SQL Server и PostgreSQL Server, на которых точно работает эта утилита? Мы хотим поставить точно такие же

Антон, добрый день.

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

Данная утилита работает и привязана только к версии приложения Creatio 7.15.4 под продукты Sales/Marketing/Service (без вертикальных решений по типу Real Estate, BCJ и т.д.).

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

Системные требования к серверам
Калькулятор системных требований
Системные требования к клиентскому компьютеру

 

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

 

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

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

Нравится

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

в активности создать справочное поле нового раздела. и по стандартному добавить активность указав связь id нового раздела - справочное поле нового раздела из активности

Dima Avdoshin,

Дмитрий спасибо!
Можно редактировать имеющуюся активность или нужно замещающий объект создавать?

Ещё один легкий способ. Если в новом разделе нужна ActionsDashboard и кейсы, то добавляя кейс, сразу же добавляются нужные поля в активности

Сергей Рогов,

замещающий, потому что вам же нужно как то связь указать с активностью

Dima Avdoshin,

Спасибо!

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

Спасибо за такой вариант, на нём и остановился

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