Добрый день. Применил валидацию даты согласно статье https://academy.terrasoft.ru/documents/technic-sdk/7-15/dobavlenie-validacii-k-polyu-stranicy

Всё работает хорошо. Но при удалении значения  поля почему, то распознаёт что не проходит валидацию. 

У меня поле желаемая дата не должна быть меньше текущей даты и времени или должно быть пусто. Пустым полем он не даёт сохранить. Скрин вложил. 

https://i.imgur.com/H9hksBj.png

 

Вот код:

// Метод-валидатор значения колонок [UsrCustomDate] и [CreatedOn].

            dueDateValidator: function() {

                // Переменная для хранения сообщения об ошибке валидации.

                var invalidMessage = "";

                // Проверка значений колонок [UsrCustomDate] и [CreatedOn].

                if (this.get("UsrCustomDate") < this.get("UsrDateReal"))  {

                    // Если значение колонки [UsrCustomDate] меньше значения колонки [CreatedOn], 

                    // в переменную invalidMessage помещается значение локализуемой строки с сообщением

                    // об ошибке валидации.

                    invalidMessage = this.get("Resources.Strings.CreatedOnLessDueDate");

                }

        

                // Объект, свойство которого содержит сообщение об ошибке валидации.

                // Если валидация прошла успешна, в объекте возвращается пустая строка.

                return {

                    // Сообщение об ошибке валидации.

                    invalidMessage: invalidMessage

                };

            }

Нравится

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

Если в базе в поле Null, не факт, что в переменной JS тоже так. добавьте вывод в лог, посмотрите что там, а затем можно будет вписать в условие if проверку на такое значение.

Не смотрели, что попадает в переменную при очистке? Может, там как раз минимальная дата, вроде 01.01.01? Или оба сравниваемые поля пустые, их значения одинаковы и строгое сравнение при помощи «<» даёт отрицательный ответ? Попробуйте отладиться или просто выводить в консоль значение полей и результаты проверки.

Зверев Александр,

Насколько я понял NULL. А NULL это меньше текущей даты. Можно ли 

        if (this.get("UsrCustomDate") < this.get("UsrDateReal")) как то изменить.? Чтобы принимал тоже NULL.

 

 

Если в базе в поле Null, не факт, что в переменной JS тоже так. добавьте вывод в лог, посмотрите что там, а затем можно будет вписать в условие if проверку на такое значение.

Я по трассировке проверил почему то window.console.log(); ничего не возвращает. 

  if (this.get("UsrCustomDate") < this.get("UsrDateReal"))  {

                      if (this.get("UsrCustomDate") !== null)  {

                    // Если значение колонки [UsrCustomDate] меньше значения колонки [CreatedOn], 

                    // в переменную invalidMessage помещается значение локализуемой строки с сообщением

                    // об ошибке валидации.

                    invalidMessage = this.get("Resources.Strings.CreatedOnLessDueDate");

                }

                }

 

А есть ли текущее значение, а то я через бизнес-процессы обновляю всегда поле UsrDateReal???

В JS текущую дату и время можно узнать при помощи присвоения или сравнения с new Date().

Я проще нашёл решение. Просто к сравнительному полю привязал системную переменную текущая дата https://i.imgur.com/Xf3bcEA.png.&nbsp;

С new Date() нужно было попотеть по моему. 

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

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

Добрый день!

Я создал свою деталь на основе статьи из wiki https://academy.terrasoft.ru/documents/technic-sdk/7-15/detal-s-redaktiruemym-reestrom 

Возникла проблема с регистрацией детали.

Выполнил скрипт добавления в таблицу [SysDetail]

 

DECLARE 

    -- Название схемы представления создаваемой миникарточки.

    @ClientUnitSchemaName NVARCHAR(100) = 'UsrTariffsForAddDetail',

    -- Название схемы объекта, к которому привязывается миникарточка.

    @EntitySchemaName NVARCHAR(100) = 'UsrAdduser',

    -- Название детали.

    @DetailCaption NVARCHAR(100) = 'Услуги.'

INSERT INTO SysDetail(Caption, DetailSchemaUId, EntitySchemaUId)

VALUES(@DetailCaption,

     (SELECT TOP 1 UId

      from SysSchema

      WHERE Name = @ClientUnitSchemaName),

      (SELECT TOP 1 UId

      from SysSchema

      WHERE Name = @EntitySchemaName))



В таблице добавилась запись. Но в разделе все так же отображается, что деталь не зарегистрирована.

Прошу помочь, в чем может быть проблема? Изображение удалено.

Нравится

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

Сделайте полную компиляцию, очистите Redis. Но если честно, то советовал бы Вам создавать через мастер деталей, а потом просто в Detail модуле прописать код для редактирования в реестре. Это избавит вас от регестрации через базу, да и от колег слышал что у них бывало что проблемы в с использованием потом (хотя думаю они что-то просто забыли), но все же так экономине время и все точно работает так как мастер еще и кеш чистит потом. Только не забудьте переименовать модели созданные мастером и если будет после переименования ругаться по перекомпилируйте тоже

Александр Тыра,

Добрый день! полная компиляция и очистка кэша не помогла.

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

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

Доброго времени суток,

Пытаюсь установить расширение ITSM https://marketplace.terrasoft.ru/app/itsm-service-creatio для Service Enterprise.

При установке пишет, что Зависимый пакет "ServiceEnterpriseSoftkey" не найден

У нас Sales Enterprise On-Site, но вчера получили лицензии Service Ent.

Где взять этот пакет для скачивания, чтобы ITSM заработал? Поддержка отправляет сюда.

Нравится

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

Судя по всему, вы лицензии Service получили, но само приложение у вас осталось только с пакетами Sales. Вам лучше связаться с вашим менеджером в ТС, чтобы он сделал запрос в тех поддержку на добавление пакетов Service в ваш сайт.

Судя по всему, вы лицензии Service получили, но само приложение у вас осталось только с пакетами Sales. Вам лучше связаться с вашим менеджером в ТС, чтобы он сделал запрос в тех поддержку на добавление пакетов Service в ваш сайт.

Александр, спасибо за подсказку.

Связался с менеджером в Creatio, они не могут понять что мне нужно, лицензии у нас есть, всё должно быть нормально. Написал в тех поддержку, они не берутся поддерживать devlabs, отправляют сюда, в Community.

Подскажите пожалуйста, что мне конкретно спрашивать у Менеджера или у тех поддержки? Они не понимают.

Пакет для установки Service Enterprise? Какой-то модуль? Или как им объяснить?

У нас On-site, версия 7.13

Сначала убедитесь, что у Вас вообще функциональность Service Enterprise есть. Появились ли новые рабочее место и разделы?

Если нет, то нужно обновить сайт до бандла, а уже потом пробовать устанавливать дополнения.

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

Добрый день!

Руководствуясь статьей "Формулы" на Академии, пытаюсь создать в БП условный поток с проверкой заполненности поля, но при сохранении выдает ошибку:

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

________________________________________________________________________________________

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

Нравится

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

Вы пытаетесь сравнить Дату с Guid. Поэтому формула и выдает вам ошибку. Вам нужно сравнивать с DateTime.MinValue

Вы пытаетесь сравнить Дату с Guid. Поэтому формула и выдает вам ошибку. Вам нужно сравнивать с DateTime.MinValue

Сидоров Александр Валерьевич,

 благодарю, разобрался.

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

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

Имеется Виртуальный сервер VPS, что работает на Ubuntu 18.04.

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

Далее в конфигурации CRM, на странице https://../0/Repositories.aspx добавил название и адрес хранилища, но уже при авторизации столкнулся с ошибкой:

При работе с хранилищем произошла ошибка
Unable to connect to a repository at URL 'http://185.001.0011.0011/svn/myrepo'
SvnErrorCode: SVN_ERR_RA_CANNOT_CREATE_SESSION
RootCause: Error running context: APR does not understand this error code

Подскажите, пожалуйста, как решить проблему?

 

---

ps: В интернете, кроме академии террасофт мало информации об этом. Все это для меня в новинку, но очень интересно разобраться

Нравится

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

Например, сообщение SVN_ERR_RA_CANNOT_CREATE_SESSION обсуждают тут и тут. По ссылкам предлагают возможные причины: неверные настройки прокси или других параметров SVN-сервера, неправильный URL, к которому пытаетесь подключится.

 

Чтобы более точно понять место возникновения ошибки, попробуйте подключаться к серверу не из 7.Х и не из браузера к веб-интерфейсу, а из другой программы для работы с SVN.

Александр, спасибо за ответ.

 

Опять решил вернуться к вопросу подключения. Уж очень мне это интересно.

Вышеуказанная ошибка была из-за того, что был закрыт выход в интернет нашего creatio on-site. Доступ успешно выдали, но теперь другая ошибка.

При попытке авторизации на странице "Список хранилищ" (../0/Repositories.aspx) сразу после ввода логина/пароля получаю:

Ошибка
При работе с хранилищем произошла ошибка
Redirect cycle detected for URL 'http://185.00.00.147/svn/myrepo'
SvnErrorCode: SVN_ERR_CLIENT_CYCLE_DETECTED
RootCause: Redirect cycle detected for URL 'http://185.00.00.147/svn/myrepo'

Мои действия:

Сервер Ubuntu настроил заново (как указал в первом посте). Через браузер, как и ранее, авторизацию прохожу успешно. Пакет в creatio еще не создал, а пробую просто авторизоваться в списке хранилищ.

Что может означать ошибка Redirect cycle detected? Куда копать?

Николай, что это такое, описано в документации SVN:

SVN_ERR_CLIENT_CYCLE_DETECTED 

"Detected a cycle while processing the operation"

Since
New in 1.7.

Хотя, по названию и так можно предположить что-то подобное.

 Опять же, попробуйте подключаться к серверу не из 7.Х и не из браузера к веб-интерфейсу, а из другой программы для работы с SVN. Будет либо такая же ошибка, либо причину можно будет понять из отличий в отправляемых запросах от Вашего сайта с 7.Х и от другой программы к серверу с SVN. Отловить уходящие запросы и ответы на них можно при помощи Fiddler, запущенного на сервере с сайтом.

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

Добрый день!

 

На карточке Обращения имеется колонка типа "целое число" со значением по умолчанию 0, как заменить данное значение на 1?

Нравится

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

Добрый день!

Значение по умолчанию можно установить в колонке объекта в конфигурации. После этого объект нужно опубликовать

Добрый день!

Значение по умолчанию можно установить в колонке объекта в конфигурации. После этого объект нужно опубликовать

Сидоров Александр В.,

 получилось, спасибо.

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

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

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

Нравится

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

Попробуйте в настройках кейса выделить стадию Закрыто и в меню справа удалить все значения из списка "С каких стадий можно переходить"

Попробуйте в настройках кейса выделить стадию Закрыто и в меню справа удалить все значения из списка "С каких стадий можно переходить"

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

Я хочу отредактировать выпадающий список пользовательского фильтра. Хочу совет как это сделать.

Выпадающий список для очистки  :

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

 

В 7.13 запрещено переопределять поведение такого фильтра, использовав наследование от ядра. То есть, возможности управлять столбцами entitySchema, которую использует фильтр при генерации, нет. Данные для элемента html приходят асинхронно, заполняя список. Это значит во время рендера схемы их пока нет. Я могу сделать свой компонент extjs , скрыв существующий, внести в пустой список нужные значения гуид столбцов и назначить для него признаки от оригинального то есть fake выпадающий список, выбранное пользователем значение из него будет задействовано в настоящем фильтре. Или использовать в схеме javascript таймер и вносить мои данные через пять секунд после наполнения страницы, тем самым перезаписав список, генерируемый схемой модели фильтра.

Разве нет простого решения отредактировать коллекцию элементов из списка ?

Это же типовая задача по оптимизации, она часто должна встречаться.  Были ли у вас какие-то наработки ? Я не нашел здесь

Нравится

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

Этот список наполняется не в ядре, а в функции getSimpleFilterColumnList в схеме CustomFilterViewModelV2:

  function getSimpleFilterColumnList(filters, list) {
   list.clear();
   var columnList = {};
   var columnNames = [];
   var columns = this.entitySchema.columns;
   Terrasoft.each(columns, function(column) {
    if (column.dataValueType !== Terrasoft.DataValueType.GUID &amp;&amp;
     column.dataValueType !== Terrasoft.DataValueType.TIME &amp;&amp;
     column.dataValueType !== Terrasoft.DataValueType.BLOB &amp;&amp;
     column.dataValueType !== Terrasoft.DataValueType.IMAGELOOKUP &amp;&amp;
     column.usageType !== ConfigurationEnums.EntitySchemaColumnUsageType.None) {
     if (this.isColumnDeprecated(column)) {
      return;
     }
     columnNames.push({
      name: column.name,
      caption: column.caption
     });
    }
   }, this);
   var sortedColumnNames = columnNames.sort(function(a, b) {
    if (a.caption === b.caption) {
     return 0;
    } else {
     return a.caption &gt; b.caption ? 1 : -1;
    }
   });
   Terrasoft.each(sortedColumnNames, function(item) {
    var column = columns[item.name];
    columnList[column.name] = {
     value: column.name,
     displayValue: column.caption,
     dataValueType: column.dataValueType,
     referenceSchemaName: column.referenceSchemaName
    };
   });
   list.loadAll(columnList);
  }

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

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

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

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

Как создать виджет с произвольным html разобрался (использовал вот этот пример https://community.terrasoft.ru/questions/vidzet-knopka), а вот как передать в этот виджет какой-нибудь параметр в виде JSON не совсем понятно.

 

Нравится

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

В примере виджета в академии у него есть параметры в JSON:

И в коде виджета создаются эти параметры:

columns: {
    // Название валюты.
    CurrencyName: {
        type: Terrasoft.core.enums.ViewModelSchemaItem.ATTRIBUTE,
        dataValueType: Terrasoft.DataValueType.TEXT,
        value: null
    },
    // Значение валюты.
    CurrencyValue: {
        type: Terrasoft.core.enums.ViewModelSchemaItem.ATTRIBUTE,
        dataValueType: Terrasoft.DataValueType.FLOAT,
        value: null
    }
},

 

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

Написал код (кусок кода прилагается). Просьба ответить на 3 вопроса:

1. Правильно ли составлен esq?

2. Правильно ли указаны параметры dataValueType и value

3. Какие можно указать значения value чтобы они отобразились в модальном окне (например, ("Значение1","Значение2")) для dataValueType=this.Terrasoft.DataValueType.COLLECTION

 

Скрин с кодом: https://i.imgur.com/moUQves.png

Нравится

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

Добрый день!

1. esq правильный

2. dataValueType - правильно

value - точно без внешних кавычек (у вас ошибка) и лучше так: 

value: this.Ext.create("Terrasoft.Collection"),

3. В TestCollection записи вы загружаете верно. Туда надо загружать объекты Entity

Добрый день!

1. esq правильный

2. dataValueType - правильно

value - точно без внешних кавычек (у вас ошибка) и лучше так: 

value: this.Ext.create("Terrasoft.Collection"),

3. В TestCollection записи вы загружаете верно. Туда надо загружать объекты Entity

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