Питання щодо Debug в Terrasoft 3.4.1 Debug працював в коді десктопного JavaScript. Де у коді стояла команда debug; відчинялося вікно Visual Studio. Там згадувалося якесь Community. І далі можна було налагоджувати програму. Старий комп'ютер вийшов із ладу. На новому терасофт та Visual Studio встановили. Але їх, мабуть, треба якось зв'язати – Debug не працює. Тих, хто встановлював Debug, вже нема. У нас звернутися нема до кого.  Ви можете підказати, як підключити Debug до терасофту? Приклад коду у вкладенні.

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

Нравится

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

Добрий вечір,

 

Теоретично має спрацювати:

 

1) Створити EnableDebugger.reg файл

2) В цьому файлі написати:

Windows Registry Editor Version 5.00

 

[HKEY_CURRENT_USER\Software\Microsoft\Windows Script\Settings]

"JITDebug"=dword:00000001

 

3) Виконати файл (просто відкрити його на пристрої і погодитись з попередженням)

4) Якщо користувач пристрою не адміністратор, то перевірити, що користувач входить в роль "Debugger Users"

5) Для активації Visual studio як відладника треба встановити в Visual studio опцію Script (Tools -> Options -> Debugging -> Just-In-Time)

6) Перезавантажити пристрій

 

Спробуйте, будь ласка, і повідомте про результат.

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

Через devtools нашел объект и получил его xpath,но при запуске автотеста система не видит этот объект.Может кто сталкивался с данной проблемой?

Нравится

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

Ошибка : no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id='sidebar-item-wrapper-3']"}

Pavel Khamenia, на скриншоте указан элемент @id=sidebar-item-wrapper-2', но в запросе @id=sidebar-item-wrapper-3'

 

также рекомендую искать элемент по data-item-marker, это более надежный вариант поиска элементов в системе Creatio

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

Як написати єкзіст фільтр на довідникову поле на стороні клієнта.

Фільтр звучить так: показуй мені значення довідника ХХХ, якщо в таблиці YYY є хоч одне значення яке відповідає умові: поле ААА = "чомусь". Тобто фільтр ніяк не звязаний з довідником

Нравится

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

Доброго вечора, Віталій!

Ви можете подивитись приклад реалізації потрібної фільтрації тут: 

https://academy.creatio.com/docs/developer/interface_elements/record_page/field/overview#case-1901

Якщо виникнуть додаткові запитання - буду рада відповісти!

З повагою, Ангеліна!

Так, там є приклад фільтрації, але там використовується наступний фільтр: 

"[SysAdminUnit:Contact].Active"

Мені цікавить щось таке: 

"[SysAdminUnit].Active" - якщо існує хоч один рядок в таблиці SysAdminUnit де Active = правда. І без всякої привязки до поля-фільтрації
Показать все комментарии

Добрый день, требуется вытащить в коде фильтр из группы.



Вытащил json следующего фильтра из бд

{
  "className": "Terrasoft.FilterGroup",
  "items": {
    "572334d2-7d75-43e0-b60f-c2cdfca071ea": {
      "className": "Terrasoft.InFilter",
      "filterType": 4,
      "comparisonType": 3,
      "isEnabled": true,
      "trimDateTimeParameterToDate": false,
      "leftExpression": {
        "className": "Terrasoft.ColumnExpression",
        "expressionType": 0,
        "columnPath": "TestColumn"
      },
      "isAggregative": false,
      "key": "572334d2-7d75-43e0-b60f-c2cdfca071ea",
      "dataValueType": 10,
      "leftExpressionCaption": "TestColumn",
      "referenceSchemaName": "TestColumn",
      "rightExpressions": [
        {
          "className": "Terrasoft.ParameterExpression",
          "expressionType": 2,
          "parameter": {
            "className": "Terrasoft.Parameter",
            "dataValueType": 10,
            "value": {
              "Name": "Да",
              "Id": "3631ec86-e4cd-490c-9614-cea3bbf71187",
              "value": "3631ec86-e4cd-490c-9614-cea3bbf71187",
              "displayValue": "Да"
            }
          }
        }
      ]
    }
  },
  "logicalOperation": 0,
  "isEnabled": true,
  "filterType": 6,
  "rootSchemaName": "Contact",
  "key": "FolderFilters"
}

Далее с помощью этого метода пытаюсь создать esq фильтр

 

public static EntitySchemaQuery GetEsqByFilterData(UserConnection userConnection, string filterData)
        {
            if (userConnection is null) { throw new ArgumentNullException(nameof(userConnection)); }
 
            if (filterData is null) { throw new ArgumentNullException(nameof(filterData)); }
 
            var filters = Terrasoft.Common.ServiceStackTextHelper.Deserialize<Terrasoft.Nui.ServiceModel.DataContract.Filters>(filterData);
 
            string rootSchemaName = filters.RootSchemaName;
            if (string.IsNullOrEmpty(rootSchemaName))
            {
                return null;
            }
            IEntitySchemaQueryFilterItem esqFilters = filters.BuildEsqFilter(rootSchemaName, userConnection);
            var queryFilterCollection = esqFilters as EntitySchemaQueryFilterCollection;
            var esq = new EntitySchemaQuery(userConnection.EntitySchemaManager, rootSchemaName);
 
            if (queryFilterCollection != null)
            {
                if (queryFilterCollection.Count == 0)
                {
                    return esq;
                }
                esq.Filters.LogicalOperation = queryFilterCollection.LogicalOperation;
                esq.Filters.IsNot = queryFilterCollection.IsNot;
                esq.Filters.IsEnabled = queryFilterCollection.IsEnabled;
                foreach (IEntitySchemaQueryFilterItem filter in queryFilterCollection)
                {
                    esq.Filters.Add(filter);
                }
            }
            else
            {
                esq.Filters.Add(esqFilters);
            }
 
            return esq;
        }

При запуске получаю ошибку Expected hex 0x in '{0}'.

Проблему нашёл, она заключается в том что в json "value" является объектом, а не guid. Если "value": "3631ec86-e4cd-490c-9614-cea3bbf71187", то метод отрабатывает корректно. 



Единственный вариант исправления этой проблемы пока только замена с помощью регулярной строки value объект на value guid. Есть ли другие варианты решения данной проблемы.

Нравится

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

Добрый день,

 

В базовой реализации уже есть логика, которая вытаскивает из группы (папки) фильтры. Она находится в CommonUtilities, нужно смотреть в метод GetFolderEsqFilters, он в конце возвращает esqFilters (типа IEntitySchemaQueryFilterItem). Думаю это то что Вам нужно.

Добрый день,

 

В базовой реализации уже есть логика, которая вытаскивает из группы (папки) фильтры. Она находится в CommonUtilities, нужно смотреть в метод GetFolderEsqFilters, он в конце возвращает esqFilters (типа IEntitySchemaQueryFilterItem). Думаю это то что Вам нужно.

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

В EntityEventListener в методі OnSaving змінили значення поля:

entity.SetColumnValue("Count", 5);        

Запис зберігся успішно, але процес який був зав'язаний на поле Count - проігнорив.

Питання: Як змінити поле так, щоб процес запустився

Нравится

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

Доброго дня, Віталій!

Для вирішення вашого питання можу запропонувати такі варіанти:

​​​​​​​1. Побудуйте ваш процес на об’єкті (виведіть скрипт-таску):

    1) Advanced settings -> Needed object -> Events -> Saving -> Before record saved

    2) Advanced settings -> Needed object -> Open process -> виведіть у відкритому вікні Event sub-process -> у вікно додайте Message та впишіть інформацію з “Before record saved” -> додайте Script task та у код запишіть Entity.SetColumnValue("Count", 5);     return true;

2. Якщо перший варіант не підходить, то підкажіть, будь ласка, по якому об’єкту ви робили логіку? По кастомному чи базовому? У випадку базового – напишіть який саме об’єкт використовували.

​​​​​​​З повагою, Ангеліна

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

Необходимо изменить цвет подсказки к кнопке (поле hint)

{
	"operation": "insert",
	"name": "clipboardButton",
	"parentName": "CodeContainer",
	"propertyName": "items",
	"values":{
		"itemType": Terrasoft.ViewItemType.BUTTON,
		"click":{
			bindTo: "clipboardClick"
		},
		"visible":{
			bindTo: "HasCode"
		},
		"imageConfig": {
			"bindTo": "Resources.Images.CopyButton"
		},
		"hint": { 
			"bindTo": "Resources.Strings.CopyButtonTooltip",	
		},
	},
	bindTo: "clipboardButtonElement"
}

Пробовал добавить стиль, но цвет по прежнему остался зеленым



 

"hint": {
            "style": Terrasoft.controls.TipEnums.style.BLUE,
 
            "bindTo": "Resources.Strings.CopyButtonTooltip",    
 
        },

 

Нравится

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

я бы попробовал создать css файл с кастомным стилем для hint конкретного поля и объекта

Добрый день,

 

Единственный вариант сейчас это добавить кастомный css к основной странице и изменить стили для всех подсказок:

 

1) Создать модуль с названием UsrContactCSS и следующим контентом во вкладке LESS:

.tip-content {
	color: red;
	background-color: black;
}

 

2) Подключить модуль к карточке:

 

define("ContactPageV2", ["css!UsrContactCSS"], function () {

В результате получим: 

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

Добрый день!

Мне нужно изменить цвет самой стрелки(он сейчас зеленый).

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

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

Добрый день. Не получается сериализовать объект в строку Json. 

Сериализую так  string requestJson=Json.Serialize(invoice);

Проблема в том что теги не обварачиваются внутри ковичек. 

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

 

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

Нравится

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

Добрый день!

Не совсем понял в чём заключается ошибка, в любом случае вы можете попробовать использовать библиотеку Newtonsoft, с помощью которой также можно сериализовать объект в JSON.

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

Добрий день.

Як додати печатку та підпис в шаблони документа через тег на картці контрагента? Чи можна взагалі додати на картку контрагента поле з типом "Файл"?

Нравится

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

Добрий день.



На жаль, базовими методами такої можливості реалізувати не можна.



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

Після цього, в друковану форму потрібно буде вивести ці зображення.

Для того щоб вивести ця зображення в друковану форму потрібно в налаштуванні друкованої  форми додати нову таблицю на основі об'єкта "Файли та посилання [назва об'єкта]". (1)

В якості стовпця для виведення зображення вибрати поле "Дані" та додати його до шаблону друку, а також створити відповідний фільтр (2).

Ось приклад реалізації такої таблиці для файлів і посилань в об'єкті "Договори":

У цьому прикладі до друкованої форми будуть виведені всі зображення з розширенням .jpg.

Важливо, щоб користувач в плагіні Word виводив саме таблицю "Файли та посилання", а не лише стовпець "Дані"(3).



Альтернативою такого методу є залучання методів розробки.

Дякуємо за звернення!

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

Вітаю, на деталь додано свою користувацьку кнопку, і для неї потрібно додати валідацію на ввімкнення. Тобто щоб вона була активна коли запис валідний( роблю esq запит до бази на деякі поля). 

Код кнопки:

var deactivateMenuItem = this.getButtonMenuItem({
					Caption: {"bindTo": "Resources.Strings.CnsResetMenuActionCaption"},
					Click: {"bindTo": "CnsDeactivateRecord"},
					Enabled: {bindTo: "isEnabled"}
				});

isEnabled це атрибут, який я роблю true в своєму методі де виконую запит.

Для одиничного вибору викликаю цей метод в події onActiveRowChange

onActiveRowChange: function() {
				this.callParent(arguments);
				this.canResetTransaction()
			},

Для множинного вибору ця подія не активовується. Для множинного вибору в розділі є обробник onSelectedRowsChange, але в мене в деталі він також не працює. Потрібна допомога з обробником в якому я зможу викликати цей метод або якийсь інший варіант валідацїї рядків при множинному виборі

Нравится

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

Доброго дня!

Як ідея ви можете замістити метод getEditRecordButtonEnabled і в ньому за допомогою іншого методу getSelectedItems отримати ідентифікатори обраних значень. Сюди ж можна додати задання вашого isEnabled.

getEditRecordButtonEnabled: function() {
				this.callParent(arguments);
				var values = this.getSelectedItems();
				console.log(values);
				// DO SOMETHING
			},

 

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

Добрий день. Як зробити так, щоб в об'єкті можна було додавати колонки (повинен бути + напроти рядка)? Зараз ця функція недоступна.

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

Нравится

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

Доброго дня, 

 

За замовчуванням, немає можливості внести зміни в базові об'єкти системи, котрі знаходяться у залочених пакетах. Натомість необхідно створити заміщуючий об'єкт, в котрому Ви можете внести зміни. Ви можете створити його у власному пакеті або ж у пакеті Custom. 

Коли Ви вносите зміни через майстер розділу система автоматично створює заміщуючий об'єкт за замовчування у пакеті Custom, або ж у тому, що значиться у Вас в системному налаштуванні з кодом "CurrentPackageId". 

Перевірте чи Ваш об'єкт знаходиться в розлоченому (доступному до внесення змін) пакеті та за необхідності створіть заміщуючий об'єкт для подальшого внесення змін. 



З повагою, 

Анастасія 

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