Здравствуйте, у меня вопрос по поводу интеграция. Я создал Веб – сервис (API) на C#  как с помощью DataService выставить (передать) изображению? Но у меня изображения храниться в другой базе в типе varbinary(max) в классе как byte[]. Пожалуйста по содействуйте заранее Вам спасибо.

Нравится

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

Добрый день,

Рекомендую вам ознакомиться с этим обсуждением.

Хоть оно и на английском, но там можно найти примеры кода работы с изображением внутри кода веб-сервиса.

Дима Вовченко,

К сожалению обсуждения не помог.

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

Всех приветствую!

Делаю веб-сервис. Методы Post и Get работаю без проблем. А вот с Put и Delete проблема.

Сразу была ошибка:

Изображение удалено. ее победил изменив web.config как описано в статье. Но после этого появилась новая:

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

Подскажите что делать?

На всякий случай веб-сервис:

[OperationContract]
        [WebInvoke(Method = "DELETE", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped,
        ResponseFormat = WebMessageFormat.Json, UriTemplate = "/contact")]
        public void Delete(string deleteData)
        {
            var delete = new Delete(UserConnection)
                .From("Contact")
                .Where("Id").IsEqual(Column.Parameter(deleteData));
            delete.Execute();
        }
 
        [OperationContract]
        [WebInvoke(Method = "PUT", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped,
        ResponseFormat = WebMessageFormat.Json, UriTemplate = "/contact")]
        public void Put(string data)
        {
            var update = new Update(UserConnection, "Contact")
                .Set("Name", Column.Parameter("Bla-bla-bla"))
                .Where("Id").IsEqual(Column.Parameter(data));
            update.Execute();
        }

 

Нравится

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

Добрый день!

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

[OperationContract]
		[WebInvoke(Method = "PUT", UriTemplate = "TestPut/{testId}", RequestFormat = WebMessageFormat.Json,
			ResponseFormat = WebMessageFormat.Json)]
		public string TestPut(string testId) {
			return UserConnection.CurrentUser.Name +  " TestPUT";
		}
 
		[OperationContract]
		[WebInvoke(Method = "DELETE", UriTemplate = "TestDelete/{testId}", RequestFormat = WebMessageFormat.Json,
			ResponseFormat = WebMessageFormat.Json)]
		public string TestDelete(string testId) {
			return UserConnection.CurrentUser.Name + " TestDELETE";
		}
	}
}

 

Дима Вовченко,

Спасибо за ответ!

К сожалению не помогло.

Pavel Litvinovich,

Хм, вы же обращались к запросам так "TestPut/someId" ?

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

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

Доброго дня, коллеги!

Есть раздел с несколькими страницами, соответственно кнопка [Добавить] с выпадающим списком.

Изображение удалено.Как пример, нужно разрешить одной группе пользователей создавать один тип, а другой группе - другие. 

Мини-карточка не подходит т.к. заказчик отказывается от нее.

Возможно ли это в Creatio сделать настройками или только кодом?

Нравится

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

Добрый день!



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

Единственный способ - реализация разработкой.



 

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



C уважением,

Богдан

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

Создал новое поле для секции Opportunity, тип - справочник.

Заполнил его, но через EntitySchemaQuery не могу вытащить значение.

Ловлю Exception с сообщением: Value "Usercolumn" was not found.



скрипт:

UserConnection _userConnection = (UserConnection)HttpContext.Current.Session["UserConnection"];

Guid paramID = new Guid(value.ToString());

var esq = new EntitySchemaQuery(_userConnection.EntitySchemaManager, "Opportunity");

 esq.AddAllSchemaColumns();

 esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, "Id", paramID));

              

var opportunityCollection = esq.GetEntityCollection(_userConnection);

var result= opportunityCollection[0].GetTypedColumnValue("Usercolumn");//Тут ловлю exception. Сам столбец успешно найден, но значение не цепляется.

В чём может быть проблема?

Нравится

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

Добрый день,

 

Прошу, не используйте AddAllSchemaColumns(), потому что иногда колонок в объекте может быть столько, что каждое обращение к БД запросом, который генерирует ESQ, будет БД "убивать".

 

Касательно exception: Вы в коде так и указали <sGuid> или это опечатка?

Oleg Drobina,

С первым замечанием понятно. Обычно делаю так:

esq.AddColumn("Usercolumn");

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



Да, это опечатка. В коде - Guid. Прошу прощения.

Решение проблемы следующее:

этот Usercolumn - был типом Lookup. А значит вытаскивать его надо через Id.

- esq.AddColumn("Usercolumn.Id");

- opportunityCollection[0].GetTypedColumnValue<Guid>("Usercolumn.Id")

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

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

 

Добавил действие в меню в страницу редактирования - скрин ошибок в комментарии:

 

            onMyButtonClick: function() {

                var Id =  this.get("Id");

                //console.log(Id);

                var args = {

                    sysProcessName: "ZbsAddTreatSessions",

                    parameters: {

                        TreatmentProgramId: Id

                    }

                };

                processModuleUtilities.executeProcess(args);    

            },

            getActions: function() {

                   var actionMenuItems = this.callParent(arguments);

                console.log(11);

                // Добавление линии-разделителя.

                actionMenuItems.addItem(this.getButtonMenuItem({

                    Type: "Terrasoft.MenuSeparator",

                    Caption: ""

                }));

                console.log(22);

                // Добавление пункта меню в список действий раздела.

                actionMenuItems.addItem(this.getButtonMenuItem({

                    // Привязка заголовка пункта меню к локализуемой строке

                    // схемы.

                      Caption: {bindTo: "Resources.Strings.CreateTreatSessionsCaption"},

                    // Привязка метода-обработчика действия.

                    Click: {bindTo: "onMyButtonClick"}

                }));

                console.log(33);

                 // Возврат дополненной коллекции действий раздела.

                return actionMenuItems;

            },                        

 

Нравится

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

Вот текст ошибки:

user: Supervisor/7f3b869f-34f3-4f20-ab4d-7480a5fdf647

 file: http://localhost:83/0/core/hash/ng-core/src/polyfills-es5.js?hash=b2d23…

 line: 1

 column: 16702

 message: Uncaught TypeError: Cannot read properties of undefined (reading 'apply') 

 date: Fri Aug 12 2022 00:19:01 GMT+0600 (East Kazakhstan Time)

 stack: TypeError: Cannot read properties of undefined (reading 'apply')

    at constructor.callModelMethod (http://localhost:83/0/core/hash/Terrasoft/controls/mixins/bindable.js?h…)

    at constructor.<anonymous> (http://localhost:83/0/core/hash/Terrasoft/controls/mixins/bindable.js?h…)

    at constructor.fire (http://localhost:83/core/7b05a4f154493931757b1cca921fc8a9/ExtJs/extjs-b…)

    at constructor.continueFireEvent (http://localhost:83/core/7b05a4f154493931757b1cca921fc8a9/ExtJs/extjs-b…)

    at constructor.fireEventArgs (http://localhost:83/core/7b05a4f154493931757b1cca921fc8a9/ExtJs/extjs-b…)

    at constructor.fireEvent (http://localhost:83/core/7b05a4f154493931757b1cca921fc8a9/ExtJs/extjs-b…)

    at constructor.onClick (http://localhost:83/0/core/hash/Terrasoft/controls/menu/basemenuitem.js…)

    at HTMLLIElement.eval (eval at cacheableFunctionFactory (http://localhost:83/core/7b05a4f154493931757b1cca921fc8a9/ExtJs/extjs-b…), <anonymous>:6:13)

    at HTMLLIElement.wrap (http://localhost:83/core/7b05a4f154493931757b1cca921fc8a9/ExtJs/extjs-b…)

    at t.value (http://localhost:83/0/core/hash/ng-core/src/polyfills-es5.js?hash=b2d23…)

Добрый день,

 

Это означает, что не тригерится метод-обработчик нажатия на кнопку. Поскольку это совмещенный режим, попробуйте метод-обработчик клика на кнопку добавить и на схему раздела и на схему страницы редактирования (после изменений в схемах обновите страницу с приложением). Ошибка должна уйти.

Oleg Drobina, 

огромное спасибо, у меня получилось благодаря Вашей подсказке!

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

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

Есть вот такое мультилукапное поле

 

"BsoDeliveryAddress": {
                "caption": "Адрес доставки",
                "dataValueType": this.Terrasoft.DataValueType.LOOKUP,
                "multiLookupColumns": ["BsoDeliveryAddressContact", "BsoDeliveryAddressAccount"]
            },

В зависимости от разных условий состав multiLookupColumns должен меняться.

Подскажите как это можно сделать при инициализации и непосредственно в коде в каком нибудь методе?

Нравится

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

Добрый день,

 

На схему страницы редактирования, где было добавлено мультилукап, нужно добавить метод getMultiLookupPageConfig и переопределить его:

getMultiLookupPageConfig: function(args, columnName) {
				var multiLookupColumns = ["PrimaryContact", "Country"];
				var multiLookupConfig = multiLookupColumns.map(function(column) {
					var config = this.getLookupPageConfig(args, column);
					Ext.apply(config, {
						columnName: columnName,
						columnValue: this.get(columnName),
						multiLookupColumnName: column
					});
					var lookupDefValues = this.getLookupValuePairs(column);
					if (lookupDefValues) {
						var valuePairs = config.valuePairs || [];
						config.valuePairs = this.Ext.Array.merge(valuePairs, lookupDefValues);
					}
					return config;
				}, this);
				return {
					lookupPageName: "MultiLookupModule",
					multiLookupConfig: multiLookupConfig
				};
			}

В примере выше независимо от того, что будет указано в multiLookupColumns, открываться будет мультилукап по колонкам ["PrimaryContact", "Country"]. Сюда нужно еще будет добавить проверку на columnName, потому что на странице может быть несколько мультилукапных полей, и условия присвоения значения параметру multiLookupColumns внутри метода (мы остаемся в контексте страницы, где лукап выведен, поэтому можно делать проверку по значениям на странице). Метод вызывается каждый раз, когда открывается модальное окно для выбора значения в справочнике.

Добрый день,

 

На схему страницы редактирования, где было добавлено мультилукап, нужно добавить метод getMultiLookupPageConfig и переопределить его:

getMultiLookupPageConfig: function(args, columnName) {
				var multiLookupColumns = ["PrimaryContact", "Country"];
				var multiLookupConfig = multiLookupColumns.map(function(column) {
					var config = this.getLookupPageConfig(args, column);
					Ext.apply(config, {
						columnName: columnName,
						columnValue: this.get(columnName),
						multiLookupColumnName: column
					});
					var lookupDefValues = this.getLookupValuePairs(column);
					if (lookupDefValues) {
						var valuePairs = config.valuePairs || [];
						config.valuePairs = this.Ext.Array.merge(valuePairs, lookupDefValues);
					}
					return config;
				}, this);
				return {
					lookupPageName: "MultiLookupModule",
					multiLookupConfig: multiLookupConfig
				};
			}

В примере выше независимо от того, что будет указано в multiLookupColumns, открываться будет мультилукап по колонкам ["PrimaryContact", "Country"]. Сюда нужно еще будет добавить проверку на columnName, потому что на странице может быть несколько мультилукапных полей, и условия присвоения значения параметру multiLookupColumns внутри метода (мы остаемся в контексте страницы, где лукап выведен, поэтому можно делать проверку по значениям на странице). Метод вызывается каждый раз, когда открывается модальное окно для выбора значения в справочнике.

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

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

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

 

На первом скриншоте то как отображается у пользователя, на втором подтверждение того, что в обращении есть другое сообщения

Прикрепленные файлы

Нравится

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

Добрый день, 

 

Просим написать на support@terrasoft.ua для более детального анализа вопроса. 

 

С уважением, 

Игорь

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

Ну а почему - причин у этого может быть ОООчень много.

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

Hello!

 

Please help... 

I am binding 16500 data records (SchemaDataDesigner / installation data). 

I am changed the setting "Maximum quantity of data strings to be bound to package"

But I am getting an error:

 

The incoming request has too many parameters. The server supports a maximum of 2100 parameters. Reduce the number of parameters and resend the request.

Нравится

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

Hi! Try to separate on a few data bindings, where each binding cosist of 2100 records 

Нигрескул Алексей,

 

Hello Alexey! I need to bind a large lookup of 65 000 entries rows, I divide it into 12 parts by the type/value of one field, but the largest part is 16 500 entries. Since splitting 65 000 / into 2100 limit = 30 parts, which is not convenient... Is it possible to increase the limit to 2100 row?

Hello! If it's a new records and you need only insert data, you can generate insert scripts and execute them on your db instance. But it's a not best practice.

Did you try change sysstem setting with code MaxPackageSchemaDataRowsCount?

Hello! I am change system setting MaxPackageSchemaDataRowsCount to 20 000. But it did not help. I wrote at the beginning 1st message that I tried to change this setting. Please help....

Hello,



You cannot change the number of parameters that can be bound in a Date element.

Please use other data import tools.

For example, you can use import from Excel:

https://academy.creatio.com/docs/user/platform_basics/business_data/exc…



You can also import data using SQL queries:

https://academy.creatio.com/docs/developer/development_tools/creatio_id…

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

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

 

Нравится

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

Добрый день, 

 

Подскажите пожалуйста какой портал имеется в виду: self-service или success?

 

Ожидаю ответ, 

Игорь

Здравствуйте, немного не понимаю разницы, но вероятно, что self-service

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

Добрый день! Столкнулся с полем "client" на страницы объекта "Invoice", которое является обязательным и нет возможности его отредактировать. 



Подскажите, что это за тип поля и где его можно изменить? 

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

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

Нравится

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

Виртуальное поле, которое заполняется либо Контактом, либо Контрагентом. Поскольку Invoice не должен создаваться из воздуха, то Клиент (Контакт/Контрагент) уже определен на этапе Лида/Договора.

При создании Invoice нужно заполнить Account либо Contact   

А как его можно сделать необязательным на макете страницы?

Добрый день!

 

Поле "Client" - справочное поле, позволяющее выбирать из двух справочников.

Обязательность данного поля установлена на уровне кода: - схема «InvoicePageV2» (пакет «Invoice»).

Поэтому для снятия данного признака Вам необходимо в замещенной схеме «InvoicePageV2» добавить атрибут для этого поля (добавить данный код в секцию attributes: {}):

"Client": { "isRequired": false }.

Сохранить схему. Почистить кеш, перезайти на сайт.

После этого поле "Client" станет необязательным.

 

Также, подобный вопрос рассматривался в этом посте:

https://community.terrasoft.ua/questions/pole-klient-v-zakaze

 

С уважением,

Катя

 

Большое спасибо, очень помогли! 

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