Здравствуйте, подскажите пожалуйста.

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

Саму кнопку нашел, сделал замещение родителя, поставил bind на "visible", написал метод который попадает в bind, там читаю свойство "hideClearButton"

define("BaseProfileSchema", [], function() {
		return {
			methods: {
				isHideClearButton: function(){
					return this.get("hideClearButton");
				}
			},
			diff: [
				{
					"operation": "merge",
					"name": "ClearButton",
					"values": {
						"visible": {
							"bindTo": "isHideClearButton"
						}
					}
				}
			]
		};
	}
);

на странице Page в секцию "modules" поместил модель, в котором "viewModelConfig" положил "hideClearButton"

"AccountProfile": {
	"config": {
		"schemaName": "AccountProfileSchema",
		"isSchemaConfigInitialized": true,
		"useHistoryState": false,
		"parameters": {
			"viewModelConfig": {
				"masterColumnName": "KtAccount",
				"hideClearButton": "checkIsModelItemsEnabled"
			}
		}
	}
},

но если я передаю на прямую true или false тогда все отлично, но мне надо передать туда значение атрибута "IsModelItemsEnabled".

Пробовал создать метод

checkIsModelItemsEnabled: function(){
	return this.get("IsModelItemsEnabled").value;
},

но тогда this.get("hideClearButton") приходит строка "checkIsModelItemsEnabled", а если передать {"bindTo": "isHideClearButton"} тогда приходит строка bindTo: "isHideClearButton"

Нравится

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

Александр, видимо, нужно не напрямую в параметр передавать, а работать через атрибуты. Так сделано в схеме ServiceParameterGrid:

  modules: {
 
   ServiceParameterPage: {
    moduleId: "ServiceRequestParameterPage",
    moduleName: "ConfigurationModuleV2",
    config: {
     isSchemaConfigInitialized: false,
     schemaName: "ServiceParameterPage",
     parameters: {
      viewModelConfig: {
       ServiceSchemaUId: {
        attributeValue: "ServiceSchemaUId"
       },
       MethodUId: {
        attributeValue: "MethodUId"
       },
       ParameterUId: {
        attributeValue: "ParameterUId"
       },
       CanEditSchema: {
        attributeValue: "CanEditSchema"
       }
      }
     },
     useHistoryState: false
    }
   }
 
  },
  attributes: {
 
   /**
    * UId of schema in ServiceSchemaManager.
    */
   ServiceSchemaUId: {
    dataValueType: Terrasoft.DataValueType.GUID
   },
 
   /**
    * Is allow edit fields.
    */
   CanEditSchema: {
    dataValueType: Terrasoft.DataValueType.BOOLEAN
   },
 
 
   /**
    * UId of method in ServiceSchemaManager.
    */
   MethodUId: {
    dataValueType: Terrasoft.DataValueType.GUID
   },
 
   /**
    * UId of parameter in ServiceSchemaManager.
    */
   ParameterUId: {
    dataValueType: Terrasoft.DataValueType.GUID
   }
 
  },

И далее программно взаимодействовать уже с ними.

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

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

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

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

Добрый день!



Подскажите, пожалуйста, как обновить только одну запись в детали (даже только одну колонку в этой записи), не вызывая updateDetail, который обновляет всю деталь, меняет сортировку, прячет лишние записи и прочие мешающие пользователю продолжить работу с деталью?



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

Нравится

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

При вызове метода updateDetail передавать параметром не reloadAll, а primaryColumnValue.

Например:

 

this.updateDetail({primaryColumnValue: "SomeRecordId"});

 

Владимир, а как Вы обновляли деталь? Смотрю, есть параметр reloadAll, который обычно указывают true:

this.updateDetail({reloadAll: true});

Может, если передать false, получится поменять только нужное? Хотя, Вам же нужно обновлять разные записи.

this.updateDetail({"detail": "UsrSchemaDetailNameHere"});



И да, я посылаю message из бизнес-процесса, в котором указываю Id записи, которую хотел бы обновить

При вызове метода updateDetail передавать параметром не reloadAll, а primaryColumnValue.

Например:

 

this.updateDetail({primaryColumnValue: "SomeRecordId"});

 

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

Код приводит к ошибке.

// Обновление всех деталей.
// all-combined.js:41 Detail not found: undefined
this.updateDetail({ realoadAll:true });

 

У меня вот такое обновление детали без ошибок.

this.reloadEntity();

 

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

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

Відтворення:

1. В браузері(Chrome, Firefox) пробую логінитись через Adfs і проходить все успішно

2. Відкриваю іншу вкладку і вводжу знов базовий адрес сайту і тоді зявляється помилка 403. Але буває що через деякий час в цій самій вкладці при повторному введенні адреси сайту все добре працює і пропускає на сайт. Але в більшості випадків зявляється ерор 403.Изображение удалено.

Як можна це виправити?  

Нравится

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

Добрый день!

 

Используем печатную форму для выгрузки стандартных договоров. При выгрузке необходимо склонение как должности основного контакта контрагента, так и его ФИО.

Решили склонять необходимые позиции через дополнение Declension of names in printable forms for Creatio. Однако при добавлении макросов к должности, а также к ФИО основного контакта контрагента, наименование должности полностью пропадает при выгрузке договора.

 

Прошу помочь при решении данной проблемы.

Нравится

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

Использовал сервис dadata.ru. Поддерживает склонение как имен, так и должностей. Так же имеет много дополнительного функционала.



С C# посылается запрос на посторонний веб-сервис, и возвращается значение уже в нужном формате.



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

Добрый день! Обратите внимание, что дополнение поддерживает склонение по падежам именно ФИО контакта. Склонение по падежам имен существительных в дополнении не поддерживается.

Лазоренко Ирина, спасибо! Не подскажете, как можно еще решить данную проблему? Если не через дополнение.

Использовал сервис dadata.ru. Поддерживает склонение как имен, так и должностей. Так же имеет много дополнительного функционала.



С C# посылается запрос на посторонний веб-сервис, и возвращается значение уже в нужном формате.



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

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

Добрый день!

Используется Excel reports builder for Creatio.

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

Отчет не отображается во всплывающем меню "Excel Отчеты" раздела "Контакты".

 

Вопрос: Где кроме как на самой карточке существует возможность сгенерировать отчет?

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

Нравится

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

Андрей, добрый день!

 

отчеты с типом "Пользовательский" можно сформировать только в разделе "Excel отчеты". Для отображения отчета в разделе Контакты используйте при создании отчета тип "Отчет для раздела".

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

Имеется ли возможность базовыми средствами добавить раздел (не только контакты и контрагенты), где будет шкала  наполненности данными записи?

Нравится

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

Александра, к сожалению, пошаговой инструкции как это реализовать нет, но Вы можете попробовать реализовать по аналогии с базовыми разделами.

 

Вся логика, как общая, так и по модификации конкретных разделов, находится в пакете Completeness. Например, там есть замещение объекта Account с добавлением числового поля Completeness, а также замещение AccountPageV2 с добавлением в неё компонентов AccountCompletenessContainer, CompletenessValue, CompletenessTip, атрибутов CompletenessValue и MissingParametersCollection и скриптов для управления ими.

 

И общее для всех разделов: в объекте Completeness хранится список объектов, по которым запускается функциональность пересчета обновления профиля (это справочник «Полнота наполнения данными»), далее в объекте CompletenessParameter]хранится список параметров/полей, по которым рассчитывается полнота из объекта выше (это уже справочник «Полнота наполнения данными»). Далее в системе используется бизнес-процесс «Обновить полноту профиля» для массового пересчета показателя полноты профиля, к примеру, после импорта из Excel. А также бизнес процесс «Запустить обновление полноты профиля», который выполняет обновление данных по наполнению для конкретной записи. В свою очередь, при запуске процесса «Обновление полноты профиля»  в базе данных вызывается процедура tsp_CompletenessRenew.

 

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

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

Спасибо!

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

Привет. 

Нудно создать редактируемый грида в DataView (по аналогии с "Расписанием" в активностях) из отдельной таблицы.

Насколько я понимаю все сводиться к созданию своего аналога GridData, возможно с логикой из схема "Деталь с редактируемым реестром". Но опять же интересуют детали.

Есть идеи или примеры кода по реализации?

Нравится

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

Андрей, если интересуют детали, как создать деталь с редактируемым реестром, есть в статье. Также шаблоны разных деталей, как редактируемых, так и нет, есть в бесплатном дополнении.

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

Создание редактируемой детали на странице не проблема, проблема доставание этого грида и помещение его в схему раздела (Section) по соседству с основным.

По соседству — это как? Он должен выводить с фильтром по записи в основном реестре? Так такое уже есть в любом разделе с редактируемой деталью, если в карточке слева открыть панель с вертикальным реестром. Например, раздел «Заказы»:

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

по соседству с базовым DataView, а именно на новом(DataView), мной созданным.

Пример что имею ввиду под этим показано на скрине, это раздел Активности: 

 

По сути мне нужно в отдельному DateView создать свой Grid и сделать его редактируемым. Но так как аналогичного решения я не заметил в системе, то мне они и нужны, и я был бы признателен за такие или что-то схожее что повысит мое понимание.

Андреев Андрей Сергеевич,

Возможно, раздел "Планирование" похож на ваши задачи?

Андрей, таких не видел. Есть разные дополнения, добавляющие в разделы ещё одну кнопку, включающую режим с каким-то необычным видом, например, бесплатное «Канбан-доска» или два вида «Диаграммы Гантта» (но те платные). Установив, можно увидеть, как происходит добавление компонента и работа в нём с данными в таблице раздела.

Владимир Соколов пишет:

Возможно, раздел "Планирование" похож на ваши задачи?

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

Зверев Александр пишет:

Кстати, планируется в интерфейсе пользователя появление новых контролов на Angular? Или всё останется в конфигураторе? 

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

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

Какие формулы скрыты за "Не заполнено"

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

Нравится

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

Коллеги, привет!

 

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

 

Собственно, упаковка Creatio 7.16.4 full bundle в docker image и запуск связки Redis+Postgres+Creatio особых проблем не вызвала. Но вот по функциональности остаются вопросы.

 

1. Когда я просто пытаюсь войти в конфигуратор, то получаю 404 ошибку (т.е. ссылка на документ по его ID оказалась не найдена - https://localhost/ViewPage.aspx?Id=5e5f9a9e-aa7d-407d-9e1e-1c24c3f9b59a). Тут я "обошел" проблему просто вбив https://localhost/dev и вошел в обновленный конфигуратор. 

 

2. Дальше я попытался перейти в список SVN repos, но оно бесконечно грузится. Ошибка возникает при попытке получить список репозиториев через сервис, который вроде как должен быть, но его нет (https://localhost/ServiceModel/SourceControlService.svc/GetRepositories отдает 404 ошибку).

 

3. Ну, думаю, фиг с ним. Решил загрузить свой пакет из файла и он у меня валится при компиляции с ошибкой error CS0117: 'HttpContext' does not contain a definition for 'Current' на строчке:

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

 

Что-то сильно изменилось в этом плане? Т.е. теперь для того, чтобы плагины работали для .net Core версии их надо как-то адаптировать? Может есть уже какая-то документация на предмет миграции кода или его универсализации?

 

Нравится

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

Максим, по первому вопросу, вероятно, дело в том, что Вы используете версию под Net Core. Там нет частей системы, сделанных на основе интерфейса 5.Х, то есть до версии 7.17 не было раздела «Конфигурация», где его переписали. Странно, что на 7.16.4 удалось войти в обновлённый конфигуратор, возможно, это была какая-то его бета-версия.

 

По второму вопросу не уверен, либо тоже какие-то ограничения этой платформы, либо что-то не так настроили при установке. Как проводится установка на Docker, есть в статье. В любом случае, для более полной поддержки Net Core лучше будет обновиться до 7.17 и проверить наличие сервиса уже там.

 

По третьему, опять же, дело в Net Core. Чтобы сделать универсальный скрипт, работающий и там, и под Net Framework, нужно внести в коде некоторые правки:

Для обеспечения миграции от ASP.NET Framework к ASP.Net Core сервисов, реализованых без наследования базового класса Terrasoft.Web.Common.BaseService, предоставлена возможность получать контекст двумя способами:

  • Не рекомендуемый способ: получать контекст через статическое свойство HttpContext.Current. Для обеспечения легкой миграции от фреймворка ASP.NET Framework к ASP.Net Core нужно добавить в исходный код сервиса с помощью директивы using пространство имен Terrasoft.Web.Http.Abstractions, в котором реализован унифицированный доступ к HttpContext, используя статическое свойство HttpContext.Current. При адаптации старого кода к новому фреймворку достаточно заменить namespace System.Web на Terrasoft.Web.Http.Abstractions.
  • Рекомендуемый способ: получать контекст через IHttpContextAccessor зарегистрированный в DI (ClassFactory) . Этот способ позволяет покрывать код тестами. Подробнее об использовании фабрики классов можно узнать из статьи "Замещающие классы".

Подробнее об этом см. статью.

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

Добрый день.

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

Пример.

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

Регион доставки - это прайс-лист, а тип доставки это критерий.

Матричный прайс лист

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

 

Продукт  |   Регион доставки  |   Тип доставки

Товар1    |   Новосибирск        |   Срочная доставка

Товар1    |   Новосибирск        |   Обычная доставка

Товар1    |   Смоленск               |   Срочная доставка

 

Нравится

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

Это довольно сложная задача, которая потребует изменений кода во многих местах и еще не факт, что будет работать стабильно. Когда у нас стояла подобная задача, то проще оказалось держать разные PriceLists для разных случаев. Т.е. в данном случае будет свой PL для доставки в Регион1-обычная и отдельный для Регион1-срочная. Тут надо понимать, что PL применяется зачастую в определенных связках (т.е. когда добавляешь продукт к квоте или оппортьюнити). В этом случае как раз задаешь связь с продуктом и выбираешь нужный PL в зависимости от ситуации. Тогда можно сделать некую автоматизацию по определению кретерия и проставления нужного PL в связующую таблицу.

Это довольно сложная задача, которая потребует изменений кода во многих местах и еще не факт, что будет работать стабильно. Когда у нас стояла подобная задача, то проще оказалось держать разные PriceLists для разных случаев. Т.е. в данном случае будет свой PL для доставки в Регион1-обычная и отдельный для Регион1-срочная. Тут надо понимать, что PL применяется зачастую в определенных связках (т.е. когда добавляешь продукт к квоте или оппортьюнити). В этом случае как раз задаешь связь с продуктом и выбираешь нужный PL в зависимости от ситуации. Тогда можно сделать некую автоматизацию по определению кретерия и проставления нужного PL в связующую таблицу.

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