Нет слов.

Ребята, у которых сайты on-cloud версий от 7.17.0.

Проверьте журналы процессов на наличие и отработку процессов "Application update notification" и "Marketplace Creatio WebService". Они пришли с пакетом "MkpNotifications" автоматически, без его установки вручную.



Данный пакет предлагается юзерам на маркетплейсе: https://marketplace.terrasoft.ru/app/marketplace-notification-applicati…

 

Обнаружили пакет сегодня, и уже за пол дня текущей даты накопилось 300 экземпляров процесса, 150 из которых висят в состоянии "Выполняется" и не доходят до конца: https://prnt.sc/wszuyl

 

Какие продукты затронуты - точно не известно. Наблюдаем пока на Sales Enterprise + Servise Enterprise.

Проверяйте, т.к. база засоряется на раз-два-три.

Нравится

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

Версия какая? Данную проблему замечал на 7.17.0 не только с этим процессом, на 7.16.4 такого нет

Alexandr Tyra,

Добрый день, Александр! Пока заметили на 7.17.0 и 7.17.1. Сайтов с более новыми версиями нет в наличие, чтобы проверить.

ServiceEnterprise. Эти процессы есть. По всей видимости включили приложение в коробку. 

Только вот работают криво. Штука полезная, не спорю, только вот как обычно "За изобретение ставлю пять, а по предмету - неуд". Возьмем на примере Remindings for Creatio.  Пришло уведомление что есть обновление. Но у меня и так стоит последняя версия приложения на текущий момент. Дата пакета совпадает с датой обновления приложения на Marketplace

Идем дальше. Пришло уведомление на приложение Mark feed notifications as read for Creatio. Да, согласен дата обновления пакета 24.03.2020. Заходим на Marketplace и там дата обновления приложения 27.10.2020 Но начинаем устанавливать приложение в систему и что мы видим - дата обновления пакета 24.03.2020

Вопрос - зачем мне выставили уведомление что пакет обновлен?!

Еще отдельный вопрос про пакеты, которых вообще нет в маркетплейсе... Есть у меня приложение LDAP - техподдержка давала исправление пакета и потом включили это исправление в коробку. Так на него тоже выставили уведомление, что пакет обновлен на Marketplace. Не, ну как так то?! В итоге хотели как лучше, а получилось как всегда. в целом про версию 7.17.1 могу сказать одно - ощущение, что качество продукта в целом резко упало. Видимо был строгий дедлайн по выпуску релиза. В срок уложились, а остальное не важно.

Дарья, Алексей,

 

эта функциональность была включена в коробку начиная с версии 7.17.0. Подскажите, регистрировали обращение по этому вопросу в поддержку?

Лазоренко Ирина,

Добрый день, Ирина.

Да. Поддержка подтвердила, что в некоторых ситуациях процессы пакета ведут себя неадекватно.

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

Мы же просто отключили эти процессы. Толку от них...

 

Если бы поддержка маркетплейса, выполняя рядовую проверку дополнений/темплейтов, не только проверяли на "просто установку на сайт", но и сам функционал - было бы гораздо лучше. Размещённые, например, от того самого DevLabs дополнения, уж очень некачественно отрабатывают на новых версиях. А дождаться ответа от их разработчиков - слишком роскошное удовольствие. 

 

Ирина, вот Вам ответил разработчик по дополнению "ADVANCED EXCEL REPORTS FOR CREATIO"? Обращение: https://community.terrasoft.ru/questions/problemy-funkcionala-v-dopolne…

Добрый день, Дарья,

 

дополнительно уточнили информацию для исправлений в будущих релизах.

 

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

 

При публикации решений команда Marketplace выполняет проверку функциональности по основным кейсам работы. Спасибо за Вашу идею относительно дополнительного тестирования решений на новых версиях Creatio. Я сообщила о Вашем предложении.

 

Также хочу уточнить по поводу решений Dev Labs. Решения Dev Labs бесплатные и публикуются по инициативе самих разработчиков. Развитием и поддержкой своих решений ребята занимаются в свое свободное время. Поэтому сроки реакции по решениям различны и зависят от текущей нагрузки ответственной команды.

 

Текущий статус работ по дополнению "Advanced excel reports for Creatio" обновила в посте.

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

Добрый день.

При компиляции возникла ошибка, связанная с дополнениями Marketplace 

https://marketplace.terrasoft.ru/app/advanced-excel-reports-creatio

https://marketplace.terrasoft.ru/app/excel-reports-builder-creatio 

Появилось после обновления на версию 7.17.1

Скрин ошибки: https://prnt.sc/woldew

 

Нравится

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

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

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

Добрый день, делали, это не помогает. 

Здравствуйте, Вера,

 

ошибка на скриншоте относится к решению https://marketplace.terrasoft.ru/app/excel-reports-builder-creatio. Почему указали решение https://marketplace.terrasoft.ru/app/advanced-excel-reports-creatio?

Здравствуйте, Вера,

 

установила успешно Excel reports builder for Creatio на базовом продукте Studio Creatio 7.17.1 и запустила компиляцию приложения. Компиляция выполнилась успешно.

 

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

Лазоренко Ирина,

Ошибки были с обоих приложений, скрин один. 

Добрый день,

 

установила оба приложения на базовый продукт версии 7.17.1 и выполнила успешно компиляцию.

 

Уточните, выполняли ли доработку этих приложений? Нужны дополнительные уточнения для воспроизведения кейса.

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

Добрый день, какое свойство отвечает за сохранение с игнорированием обязательных полей на js

я знаю что есть такое на c# entity.save(false)

Мне надо нечто подобное

Нравится

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

Попробуйте 

this.save({isSilent: true});

 

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

не подходит(


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

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

Мне с удаленного сервера  приходит файл, который я хочу сохранить в creatio, каким образом это реализовать и куда сохранять, когда получу его?

Нравится

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

Дмитрий, где именно Вы хотите это выполнять?

Если извне, то есть стандартный FileApiService, примеры работы с ним см. тут. Перед этим нужно ещё выполнить авторизацию.

 

Если же Вы хотите это делать это в серверной логике 7.Х, то нужно делать примерно то, что делается внутри этого сервиса, писать данные в поле Data записи о файле в таблице ...File от нужного раздела. См. пояснение в комментарии тут

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

Каким образом можно динамически устанавливать интервалы для виджета "Шкала" на странице? 

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

Нравится

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

Владимир, существующая реализация компонента Gauge отображает изменения только цифры в центре, а 4 других параметра, означающие границы цветов, задаются в настройках и хранятся в json-конфиге в SysDashboard:

   "Gauge":{
      "parameters":{
         "caption":"Closed cases",
         "entitySchemaName":"Case",
         "filterData":"{\"className\":\"Terrasoft.FilterGroup\",\"items\":{\"12f77c73-1263-4d79-b397-8f55e2f8653e\":{\"className\":\"Terrasoft.CompareFilter\",\"filterType\":1,\"comparisonType\":3,\"isEnabled\":true,\"trimDateTimeParameterToDate\":false,\"leftExpression\":{\"className\":\"Terrasoft.ColumnExpression\",\"expressionType\":0,\"columnPath\":\"Status.IsFinal\"},\"isAggregative\":false,\"key\":\"12f77c73-1263-4d79-b397-8f55e2f8653e\",\"dataValueType\":12,\"leftExpressionCaption\":\"Status.Status is final\",\"rightExpression\":{\"className\":\"Terrasoft.ParameterExpression\",\"expressionType\":2,\"parameter\":{\"className\":\"Terrasoft.Parameter\",\"dataValueType\":12,\"value\":true}}}},\"logicalOperation\":0,\"isEnabled\":true,\"filterType\":6,\"rootSchemaName\":\"Case\",\"key\":\"\"}",
         "aggregationType":1,
         "style":"widget-navy",
         "orderDirection":1,
         "min":0,
         "middleFrom":5,
         "middleTo":8,
         "max":10
      },
      "widgetType":"Gauge"
   }

А в GaugeDashboardItemData с ними работают:

 

		/// <summary>
		/// Returns data for indicator dashboard item.
		/// </summary>
		public override JObject GetJson() {
			JObject itemObject = base.GetJson();
			CopyProperties(itemObject);
			if (string.IsNullOrEmpty(GetSchemaName())) {
				return itemObject;
			}
			GaugeDashboardItemSelectBuilder selectBuilder = GetSelectBuilder();
			object value = GetData(selectBuilder);
			itemObject["dataValueType"] = selectBuilder.ColumnDataValueType;
			itemObject.Add(new JProperty("data", value));
			itemObject["min"] = Parameters.Value<int?>("min");
			itemObject["middleFrom"] = Parameters.Value<int?>("middleFrom");
			itemObject["middleTo"] = Parameters.Value<int?>("middleTo");
			itemObject["max"] = Parameters.Value<int?>("max");
			itemObject["orderDirection"] = Parameters.Value<int?>("orderDirection");
			return itemObject;
		}

То есть Вам надо будет делать свои аналоги GaugeDashboardItemData, GaugeModule (отображение в итогах), GaugeDesigner (окно настроек), где с ними работают, Возможно, понадобится ещё что-то изменить или просто скопировать с другим названием GaugeChartJsConfigBuilder.

node button icon

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

Приветы, PostgreSQL 7.17.0.2164, есть следующая ошибка. 



Error occurred when saving: 23503: insert or update on table "SysLocalizableValue" violates foreign key constraint "FKYru8eiQRBeFoEfawvRwKSlCy2o"

 

Случается при попытке сохранить чистый БП с одним элементом Читать/Добавить данные (кроме начального и конечного). При элементе типа скрипт - всё ок. Сохранение естественно не происходит.

Что интересно этот вторичный ключ относиться к Culture. 

 

Как быть? 

Нравится

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

Добрый день. Встречал такую ошибку, когда использовал уже "занятую" базу (номер базы) редиса. Попробуйте в ConnectionStrings.config изменить номер базы редиса на свободный.

Добрый день. Встречал такую ошибку, когда использовал уже "занятую" базу (номер базы) редиса. Попробуйте в ConnectionStrings.config изменить номер базы редиса на свободный.

Действительно, причина чаще всего в этом. Происходит такое, когда два приложения смотрят на один Redis и на одном из них в БД другой Id у какой-то культуры (какой угодно, например, шведской) или её вообще нет. Культуры кешируются в одном месте после вычитки из БД и затем система работает с ними.

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

Дмитрий А.,

Проблема была в этом, спасибо.

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

Добрый день, мне надо. что бы при создании записи в разделе копировались значения и родительской записи, так как полей больше 70

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

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

Нравится

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

Да, возможно. Сделайте БП, запуск по записи. Читать родительскую запись, далее добавить запись в раздел и открыть страницу на редактирование только что созданной записи. У меня так реализовано добавление доп.соглашения к договору. 

Можно развить дальше и сделать отдельную кнопку для запуска процесса.

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

мне надо что бы все 100+ полей копировались одной коллекцией, добавлять вручную такое мне не особо по душе

Dima Avdoshin,

Не понял. Один раз настроить в БП элемент добавить данные и все. Все 100+ полей будут копировать автоматически при создании новой записи. Если сложно настроить элемент добавить данные, то можно все сделать добавление данных скриптом в том же процессе. Можно через InsertSelect

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

InsertSelect не вызвет событийную модель, что не есть хорошо.

Dima Avdoshin,

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

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

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

В режиме копирования система сама копирует значения всех полей, которые на объекте отмечены признаком "Копировать".

Владислав Литвинчук пишет:

InsertSelect не вызвет событийную модель, что не есть хорошо.

Если проблема только в этом, можно создавать Entity, наполнять её поля и затем вызывать Save. Или, как изначально предложили, средствами стандартных элементов БП для работы с данными.

 

По изначальному вопросу темы:

Вы хотите копировать из одноимённых полей одного объекта в другой?

А то, если просто создать копию записи, то в реестре есть кнопка копирования записи, при нажатии на неё создаётся новая запись с заполненными полями, у которых в объекте включена галка «Копировать данные при копировании записи».

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

то в реестре есть кнопка копирования записи, при нажатии на неё создаётся новая запись с заполненными полями, у которых в объекте включена галка «Копировать данные при копировании записи».

Да именно это мне нужно, каким образом я могу вызвать ее программно?

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

можно пример пожалуйста

Сходу нашёлся пример только из интерфейса 5.Х в базовой карточке. От него можно отталкиваться, выкинув лишнее.

row = dataSource.Rows[0].Clone() as Terrasoft.Core.Entities.Entity;
Guid currentUserContactId = Page.UserConnection.CurrentUser.ContactId;
EntityPrimaryColumnValue = Guid.NewGuid();
row.SetColumnValue(primaryColumnName, EntityPrimaryColumnValue);
row.SetColumnValue("CreatedOn", DateTime.Now);
row.SetColumnValue("CreatedById", currentUserContactId);
row.SetColumnValue("ModifiedOn", DateTime.Now);
row.SetColumnValue("ModifiedById", currentUserContactId);
var columnNames = new List<string>();
foreach (var column in row.Schema.Columns) {
	if (column.HasDefValue && 
		((column.IsLookupType || column.IsMultiLookupType) &&
		column.ReferenceSchema.PrimaryDisplayColumn != null) &&
		!columnNames.Contains(column.Name)) {
		columnNames.Add(column.Name);
	}
}
row.LoadLookupDisplayValues(columnNames);
dataSource.Insert(row);

У объекта Entity есть метод .Clone() (или вызываемый им же конструктор Entity(Entity source)). Запускаем его, получаем новый объект в памяти. При необходимости заполняем текущими датой и пользователем стандартные 4 поля, затем те поля, значения которых в Вашей логике нужно поменять относительно образца. Все остальные поля, у которых в дизайнере есть галочка, скопировались автоматически. Id, естественно, будет уже новый.

Цикл из примера не нужен, ведь поля для отображения справочников нас сейчас не интересуют. И в конце запускаем у своего Entity метод .Save(), чтобы эта запись из памяти попала в базу. Кажется, ничего не упустил.

 

Но это всё на уровне C#-скрипта в процессе. Если надо в JS-логике, подобно кнопке копирования, нужно смотреть, как она устроена.

 

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

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

При установке приложения Data binding tool for Creatio на 7.17.1 выходит ошибка:

2021-01-12 16:19:07,505 При компиляции конфигурационной библиотеки возникли ошибки и (или) предупреждения
2021-01-12 16:19:07,545 Autogenerated\Src\GlbDataBindingHelper.GlbDataBinding.cs(323,47) ошибка CS0246: The type or namespace name 'EntityDataSource' could not be found (are you missing a using directive or an assembly reference?)

 

Нравится

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

Ещё и при его использовании в 7.17 появляются ошибки, которые в итоге открывают старые формы привязки данных 

Алексей, Владимир,

 

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

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

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

Уже известны сроки исправления данной ошибки?

Добрый день,

 

ответственная команда подготовила обновленный пакет решения. Установите обновленный пакет из Creatio Marketplace.

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

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



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

Нравится

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

Доброе утро, Владимир!

 

Есть такой, не до конца протестированный, вариант:

- забрать права доступа на операцию "Создание" для юзеров/ролей в объекте "Справочник": https://prnt.sc/wljjrd. Это относится только к справочникам, т.е. тем объектам у кого родителем является "Базовый справочник". Ни поле "Контакт", ни "Контрагент" под эти правила уже не подойдут.

А, ну и при таком раскладе, ни в один справочник указанные юзеры/роли не смогут добавлять значения вообще.

 

Вариант нужно протестировать. У меня вышло так, что была лишь одна запись продажи, созданная Supervisor. Под тестовым юзером я, учитывая правила поиска дубля, залила файл и у меня создалась совершенно новая запись продажи с предзаполненными значениями, как и в файле. Плюс, что в справочниках не создались новые значения. Минус, наверное, в том, что стоило попробовать вытянуть Id продажи и учитывать его в правилах дублей.

Доброе утро, Владимир!

 

Есть такой, не до конца протестированный, вариант:

- забрать права доступа на операцию "Создание" для юзеров/ролей в объекте "Справочник": https://prnt.sc/wljjrd. Это относится только к справочникам, т.е. тем объектам у кого родителем является "Базовый справочник". Ни поле "Контакт", ни "Контрагент" под эти правила уже не подойдут.

А, ну и при таком раскладе, ни в один справочник указанные юзеры/роли не смогут добавлять значения вообще.

 

Вариант нужно протестировать. У меня вышло так, что была лишь одна запись продажи, созданная Supervisor. Под тестовым юзером я, учитывая правила поиска дубля, залила файл и у меня создалась совершенно новая запись продажи с предзаполненными значениями, как и в файле. Плюс, что в справочниках не создались новые значения. Минус, наверное, в том, что стоило попробовать вытянуть Id продажи и учитывать его в правилах дублей.

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

 

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

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

В файле импорта указан тип контакта “клиент”.
В справочнике [ Типы контактов ] содержится значение “Клиент”.

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

В файле импорта указан тип контакта “«Клиент»”.
В справочнике [ Типы контактов ] содержится значение “Клиент”.

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

Ещё есть особенность, когда при импорте не работает поиск существующих записей по локализованным колонкам в справочнике, создаются дубли. В таком случае поможет обходное решение — выключить фичу HighestSpeedFileImport.

А как насчёт чистки данных перед импортом?) 

Или после, уже в базе. Или в момент, созданием своего специализированного механизма импорта, учитывающего все специальные случаи. До определённой версии была возможность запустить старое окно импорта с большим числом настроек, но в современных, где нет логики на основе 5.Х, такого, видимо, не выйдет.

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

надо сделать нормализацию телефонного номера в стандартный формат для

- текущей базы телефонов

- для новых добавляемых телефонов

как это грамотно сделать?

Нравится

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

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

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

Алексей - а как сделать для текущей БД без прямого исправления БД?

Например, написанием и единоразовым ручным запукском БП, который это делает в скрипте или ещё как-то.

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