Всем добрый день!

Столкнулся с следующей проблемой перестали выгружаться пакеты в ФС, пишет. что изменений не обнаружено. Редис чистил, пересоздавал приложение в IIS, удалял пакеты из папки Pkg в конфигурации - не помогает.

Кто нибудь сталкивался с такой проблемой?

Нравится

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

Скорее всего включена разработка в файловой системе, когда она включена то при разратобке используется локальный статический контент (к примеру C# файлы)

Скорее всего включена разработка в файловой системе, когда она включена то при разратобке используется локальный статический контент (к примеру C# файлы)

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

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

Заказчик разработал рекламное письмо с pdf-ной подложкой и с элементами ссылок в виде кружочков с ссылками на соцсети: VK, Одноклассники, facebook и т.п.

Позволяет  ли fastreport в отчете формата pdf, получить ссылки на соцсети, после вывода отчета в файл?

т.е. можно ли кружочек сделать в виде ссылки и в сформированном отчете, перейти по этой ссылки

Спасибо.

Нравится

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

Марина, в дизайнере отчётов у текста или картинки есть свойство «Hyperlink», там можно настроить ссылку.

 

Но эта функциональность ещё не тестировалась, не во всех случаях может работать. Обычная ссылка-константа у меня добавилась:

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

 

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

Исходные данные JS-кода.

Атрибут.

"ArticleName": {
  "dataValueType": this.Terrasoft.DataValueType.TEXT,
  "type": this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
  "value": ""
},

Метод получения значения атрибута

getArticleName: function() {
  var articleName = this.get("ArticleName");
  return articleName ? articleName : "";
},

Метод кнопки

onGetArticleNameClick: function () {
// Первый запуск - <пусто>
// Последующие запуски - <наименование>
this.showInformationDialog(this.getArticleName());
this.set("ArticleName", "");
// Данные реестра.
var gridData = this.getGridData();
if (gridData) {
  var activeRow = this.getActiveRow();
  if (activeRow) {
    // Поле Id.
    var activeRowId = activeRow.get("Id");
    if (activeRowId)
    {
      var serviceData = { id: activeRowId };
      ServiceHelper.callService("VSKBSourceCodeServices", "GetArticleName", 
        function (response) {
          var result = response.GetArticleNameResult;
          this.set("ArticleName", result);
        }, serviceData, this);
    }
  }
}
// Всегда <пусто>
this.showInformationDialog(this.getArticleName());
},

Не могу понять, почему ServiceHelper.callService не заполняет значение атрибута ArticleName сразу? Ощущение, как будто вызов клиентского веб-сервиса GetArticleName выполняется асинхронно.

Нравится

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

Здравствуйте! Данная проблема связана из-за асинхронности js ф-ция обратного вызова запускается в другом потоке и контекст this - уже не виден. Вам нужно до вызова ServiceHelper объявить переменную, например scope и записать в нее this:

 var scope = this; 

а в ф-ции обратного вызова уже писать:

scope .set("ArticleName", result);

Как то так, должно стработать.

Здравствуйте! Данная проблема связана из-за асинхронности js ф-ция обратного вызова запускается в другом потоке и контекст this - уже не виден. Вам нужно до вызова ServiceHelper объявить переменную, например scope и записать в нее this:

 var scope = this; 

а в ф-ции обратного вызова уже писать:

scope .set("ArticleName", result);

Как то так, должно стработать.

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

Спасибо за ответ, внутри функции обратного вызова удалось задать значение атрибута.

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

ServiceHelper.callService, и затем выполнить обращение к этому атрибуту.

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

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

Коллеги, подскажите в чем причина.

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

На в разделе Контакты все отлично работает,

но в разделах Сервис и Контрагенты работает только если ремарить фильтр

//filter: BaseFiltersGenerateModule.OwnerFilter, Но работает без этого фильтра.

В чем может быть причина? Спасибо.

/**
 * @class AccountSectionV2.ELBase
 * @extends AccountSectionV2.NUI
 */
define(
	"AccountSectionV2",
	[
		"ProcessModuleUtilities",
		"ELJSConst",
		"ELAccountActionMenuMixin", 
		"BaseFiltersGenerateModule"
	],
	function(
		ProcessModuleUtilities,
		ELJSConst, 
		BaseFiltersGenerateModule
	) {
		return {
			entitySchemaName: "Account",
 
			mixins: {
				ELAccountActionMenuMixin: "Terrasoft.ELAccountActionMenuMixin"
			},
 
        methods: {
 
				initFixedFiltersConfig: function() {
				var fixedFilterConfig = {
					entitySchema: this.entitySchema,
					filters: [
						{name: "Owner",
							caption: this.get("Resources.Strings.OwnerFilterCaption"),
							dataValueType: Terrasoft.DataValueType.LOOKUP,
							filter: BaseFiltersGenerateModule.OwnerFilter,
							columnName: "Owner",
							defValue: this.Terrasoft.SysValue.CURRENT_USER_CONTACT
						}
					]
				};
				this.set("FixedFilterConfig", fixedFilterConfig);
			},
define("BaseFiltersGenerateModule", ["BaseFiltersGenerateModuleResources", "ConfigurationConstants"], 
	function(resources, ConfigurationConstants) {
		function getIsNotNullFilterGroup(refSchema) {
			const userFilter = Terrasoft.createColumnIsNotNullFilter(refSchema + ".Id");
			const filters = Ext.create("Terrasoft.FilterGroup");
			filters.addItem(userFilter);
			return filters;
		}
 
		function employeesFilter() {
			const sysAdminUnitRef = "[SysAdminUnit:Contact]";
			const employeesFilter = Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,
					sysAdminUnitRef + ".ConnectionType",
					ConfigurationConstants.SysAdminUnit.ConnectionType.AllEmployees);
			const filters = getIsNotNullFilterGroup(sysAdminUnitRef);
			filters.addItem(employeesFilter);
			return filters;
		}
 
		function allUsersFilter() {
			return getIsNotNullFilterGroup("[VwSystemUsers:Contact]");
		}
 
		function selfFilter() {
			let primaryColumnName = "Id";
			if (this.entitySchema && this.entitySchema.primaryColumnName) {
				primaryColumnName = this.entitySchema.primaryColumnName;
			}
			const primaryColumnValue = this.get(primaryColumnName);
			return Terrasoft.createColumnFilterWithParameter(
				Terrasoft.ComparisonType.NOT_EQUAL, primaryColumnName, primaryColumnValue);
		}
 
		return {
			OwnerFilter: employeesFilter,
			SelfFilter: selfFilter,
			AllUsersFilter: allUsersFilter
		};
	});

 

Нравится

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

Уточните, когда и где работает или нет? И как не работает, как будто фильтра не существует или пустая выборка?

 

Все наложенные фильтры можно увидеть в запросе, уходящем к /0/DataService/json/SyncReply/SelectQuery, а если система развёрнута  локально, итоговый запрос в базу видно в SQL-профайлере. Возможно, условия стандартного и добавленного фильтров противоречат?

 

Также проверьте, всё ли правильно сделано в соответствии со статьёй о создании быстрого фильтра.

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

Коллеги, есть способ добавить валидацию к полю детали страницы?

Нравится

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

Добрый день! Создал по инструкции веб-сервис, опубликовал его на проде, так же по той же инструкции тех. поддержка Terrasoft зарегистрировала мне этот анонимный веб-сервис, т.к. прод находится в облаке. После отправки запроса на сервис, заметил, что параметры, которые я передаю в итоге оказываются пустыми (в случае, если передаю Guid, то в сервисе обрабатывается пустой Guid, если передаю строку, то обрабатывается пустая строка)

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

Код сервиса:

 

namespace Terrasoft.Configuration.UsrUnsubscribeFromNewslettersService
{
	using System;
	using System.IO;
	using System.Net;
	using System.Collections.Generic;
	using System.ServiceModel;
	using System.ServiceModel.Web;
	using System.ServiceModel.Activation;
	using Terrasoft.Web.Common;
	using Terrasoft.Common;
	using Terrasoft.Core.Entities; 
	using Terrasoft.Core;
	using Terrasoft.Core.Process;
	using Terrasoft.Core.Process.Configuration;
	using Newtonsoft.Json;
 
	[ServiceContract]
	[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
	public class UsrUnsubscribeFromNewslettersService: BaseService
	{
		private SystemUserConnection _systemUserConnection;
        private SystemUserConnection SystemUserConnection {
            get {
                return _systemUserConnection ?? (_systemUserConnection = (SystemUserConnection)AppConnection.SystemUserConnection);
            }
        }
		[OperationContract]
		[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped,
		ResponseFormat = WebMessageFormat.Json)]
		public UnsubscribeRequest UnsubscribeFromNewsletters(UnsubscribeRequest request){
            SessionHelper.SpecifyWebOperationIdentity(HttpContextAccessor.GetInstance(), SystemUserConnection.CurrentUser);
			ProcessSchema schema = SystemUserConnection.ProcessSchemaManager.GetInstanceByName("UsrUnsubscribeUserFromNewsletters");
 
			var flowEngine = new FlowEngine(SystemUserConnection);
			var param = new Dictionary<string, object>();
			param["ContactId"] = request.ContactId;
			param["NewslettersId"] = request.NewslettersId;
			flowEngine.RunProcess(schema, param);
			return request;
		}
 
	}
	public class UnsubscribeRequest {
		public Guid ContactId {get; set;}
		public Guid NewslettersId {get; set;}
	}
}

Если переделать POST на GET, то сервис работает.

Нравится

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

Сергей, при регистрации в системе веб-сервиса он должен так же само работать, как и вне сайта 7.Х.

Попробуйте создать в Visual Studio отдельный проект и создать аналогичный сервис в нём.

Если там будет такая же ошибка, в Visual Studio можно будет произвести отладку.

Возможно, Вы неправильно оформили метод и параметры.



Также обратите внимание на тему с похожими симптомами:

https://stackoverflow.com/questions/6835872/wcf-rest-post-of-json-parameter-is-empty

 

Сергей, при регистрации в системе веб-сервиса он должен так же само работать, как и вне сайта 7.Х.

Попробуйте создать в Visual Studio отдельный проект и создать аналогичный сервис в нём.

Если там будет такая же ошибка, в Visual Studio можно будет произвести отладку.

Возможно, Вы неправильно оформили метод и параметры.



Также обратите внимание на тему с похожими симптомами:

https://stackoverflow.com/questions/6835872/wcf-rest-post-of-json-parameter-is-empty

 

Спасибо за ответ, проблема была в том, что для класса UnsubscribeRequest и пропертей внутри него не были добавлены атрибуты DataContract и DataMember соответственно

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

Коллеги подскажите пожалуйста.

Где найти информацию по web сервису GeneratedObjectWebFormService?

Нравится

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

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

Спасибо, Я понял в конфигурации Sales этого сервиса нет. Александр я правильно понял, что он предназначен для приема данных с посадочных страниц отправленных web-формой лендинга?

Яблонский пишет:

Спасибо, Я понял в конфигурации Sales этого сервиса нет.

Не совсем. Попробуйте его вывести, как упомянуто в той же статье:

Для работы с лендингами в Creatio предусмотрен раздел [Лендинги и web-формы]. Этот раздел входит во все продукты Creatio, однако он может быть не включен по умолчанию в рабочие места некоторых продуктов (например, данный раздел не включен в рабочие места линейки продуктов Sales Creatio).

 

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

Добрый день !

 

Подскажите пожалуйста как с помощью БП можно установить определенный часовой пояс всем портальным пользователям зарегистрированным на нашем сайте?

 

С Уважением,

 

 

 

Нравится

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

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

 

Вам нужно реализовать процесс, который обновит данные из таблицы SysAdminUnit (Объект администрирования) по фильтру SysAdminUnitTypeValue = 5 (данное значение соответствует пользователям портала). По этой ссылке подробнее описано о типах объектов администрирования https://academy.terrasoft.ua/documents/administration/7-16/importirovat-polzovateley-iz-excel.

Фактически в БП Вам нужно реализовать вот такой запрос:

update SysAdminUnit
set
	TimeZoneId = &lt;нужное значение&gt;
where SysAdminUnitTypeValue = 5

 

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

 

Вам нужно реализовать процесс, который обновит данные из таблицы SysAdminUnit (Объект администрирования) по фильтру SysAdminUnitTypeValue = 5 (данное значение соответствует пользователям портала). По этой ссылке подробнее описано о типах объектов администрирования https://academy.terrasoft.ua/documents/administration/7-16/importirovat-polzovateley-iz-excel.

Фактически в БП Вам нужно реализовать вот такой запрос:

update SysAdminUnit
set
	TimeZoneId = &lt;нужное значение&gt;
where SysAdminUnitTypeValue = 5

 

Благодарю за помощь.

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

 

Я нашел значение ID для всех временных зон из справочника "Часовой пояс". Можно использовать их для того, чтобы реализовать мой запрос?

 

С Уважением.

 

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

 

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

 

Update SysAdminUnit set TimeZoneId = 'West Asia Standard Time' where connectiontype=1 and SysAdminUnitTypeValue = 4 

Jahongir Dodokhonov,

Рада, что смогла подсказать Вам направление для реализации Вашей задачи angel

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

Добрый день. 

При осуществлении выгрузки данных с использованием дополнения "Excel reports builder for Creatio " при открытии выгруженного из системы файла появляется ошибка "Ошибка в части содержимого в книге "...". Выполнить попытку восстановления? Если вы доверяете источнику, из которого получена книга, нажмите кнопку "Да"."

После нажатия кнопки "Да" открывается необходимый файл. 

Далее, нажимая на кнопку "Разрешить редактирование" в файле открывается еще одно окно: 

"Excel удалось открыть файл, восстановив или удалив нечитаемое содержимое. Была выполнена проверка на уровне файла с последующим восстановлением файла. Некоторые фрагменты документа могли быть восстановлены либо удалены.

Удаленные записи: Именованный диапазон из части /xl/workbook.xml (Книга)".

Все данные и формулы сохранены.

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



Продукт:  bpmonline sales enterprise & marketing & service enterprice

Версия системы: 7.14.1

Нравится

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

Анастасия, добрый день,

 

для начала проверьте, выгружаете ли вы данные из колонок, в которых могут хранится данные в html формате, например данные из базового поля Примечание (Notes). Если да, это содержимое в html формате так может влиять на формирование отчета.

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

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

Добрый день!

 

После обновления на 7.16.1 сделал копию из продакшн базы в разработческую, в разработческой доработал пакет, выгрузил, загружаю в продакшн, получаю:

2020-08-05 17:24:21,283 Загрузка файла: ZL.Root.zip 100%
2020-08-05 17:24:21,330 Началось резервное копирование конфигурации.
2020-08-05 17:24:21,330 Загрузка пакетов из архива
2020-08-05 17:24:21,346 Пакет "ZL.Root" загружен
2020-08-05 17:24:21,346 Загрузка пакетов из базы данных
2020-08-05 17:24:21,853 System.ApplicationException: Невозможно установить пакет из zip-архива в то время как существует SVN-пакет с таким же UId.
   в Terrasoft.Core.AppInstallation.Packages.Backup.ZipPackageBackupManager.SaveBackup(IList`1 composedPackages, String backupPath, String code)
   в Terrasoft.Core.ServiceModelContract.PackageInstaller.PackageInstallerServiceInternal.<>c__DisplayClass25_0.<CreateBackup>b__0()
   в Terrasoft.Core.ServiceModelContract.PackageInstaller.BaseInstallerServiceInternal.InvokeWithLogging(Action action)

Как сие явление побороть?

Нравится

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

Здравствуйте! Ваш пакет  на продакшене - ZL.Root привязан к SVN для этого Вам необходимо выполнить несколько SQL запросов:

Отвязка пакета от репозитория

UPDATE SysPackage 
SET 
    [SysRepositoryId] = null
WHERE  [Name]= 'ZL.Root'

 

Блокирование пакта(+ задаем ему признак установленный):

 

update SysPackage
set IsChanged = 0, InstallType = 1, IsLocked = 0, Maintainer = 'Customer'
where Name in ('ZL.Root')

После этих манипуляций должно нормально устанавливаться

Здравствуйте! Ваш пакет  на продакшене - ZL.Root привязан к SVN для этого Вам необходимо выполнить несколько SQL запросов:

Отвязка пакета от репозитория

UPDATE SysPackage 
SET 
    [SysRepositoryId] = null
WHERE  [Name]= 'ZL.Root'

 

Блокирование пакта(+ задаем ему признак установленный):

 

update SysPackage
set IsChanged = 0, InstallType = 1, IsLocked = 0, Maintainer = 'Customer'
where Name in ('ZL.Root')

После этих манипуляций должно нормально устанавливаться

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

Сработало, спасибо!

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