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

 

Есть необходимость скопировать раздел для его дальнейшей модификации. Исходній раздел также нужен, потому редактирование исходного раздела проблемму не решит. Если кто то делал буду благодарен!

Нравится

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

Какой раздел типовой поставки Вам необходимо скопировать ?

Севостьянов Илья Сергеевич,

Проект

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

Вы можете выгрузить все схемы раздела в виде MD-файлов.

1) в каждой схеме Вам необходимо произвести генерацию нового UUID и заменить существующий в специальном параметре UId (откройте MD-файл в текстовом редакторе и поймете о чем я говорю), а так же произвести замену старого на новый в других схемах раздела (кое-где может использоваться - причем замену по всему тексту схем)

2) Каждую схему необходимо переименовать - например добавив префикс, новое имя необходимо так же и самой схеме указать в специальном параметре (аналогично UId).

3) Далее Вам необходимо из раздела-донора скопировать все тексты SQL-сценариев, и сохранить их в виде sql-файлов (далее при установке будет проще из из файлов грузить нежели копипастить в новые скрипты) название файлов можете давать по аналогии с копируемыми скриптами + префикс.

В тексте скриптов Необходимо произвести замену имен таблиц "без префикса" на "с префиксом", причем только тех что присутствуют в схемах (ранее выгруженных, т.е. схемах которые вы копируете).

Внимание! именно имен таблиц, не затрагивая имена колонок.

 

4) Далее Вам необходимо изучить привязанные данные, часть из них отвечает за регистрацию раздела в системе.

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

В отношении остальных данных, изучив их вы поймете надо ли что-то воспроизводить.

 

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

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

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

В общем, на странице, контакта необходимо скрывать или показывать деталь в зависимости от значения поля.

Решение начал с добавления custom-бизнес правила на событие Load. И в нём просто попробовал без всяких условий удалить деталь со страницы методом

Terrasoft.sdk.Details.remove

К сожалению, результат выполнения виден только при последующих открытиях карточки, а не сразу.

Есть ли другие решения?

Нравится

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

Для скрытия детали по условию, необходимо в расширить метод shouldHidePanelItem

 

Пример:

 

Ext.define("ContactPreviewPage.View", {

extend: "Terrasoft.view.BasePreviewPage",



xtype: "contactpreviewpageview",

config: {

id: "ContactPreviewPage"

},



/**

* @inheritdoc

* @protected

* @overridden

*/


shouldHidePanelItem: function(loadedRecord, component) {

var detailName = component.config.name;

if (detailName === "MyDetailName" && Ext.isEmpty(loadedRecord.get("MyColumn"))) {

return true;

} else {

return this.callParent(arguments);

}

}

});

Здравствуйте, Илья. Спасибо за ответ, двигался в этом направлении. Но с вашим советом получилось быстрее.

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

Добрый день.

Есть задача добавить поле в этот справочник.

В Сам объект добавили, а вот с деталью уже проблемка.

Вывести колонку можно. Но как сделать так чтобы она была редактируемой?

Нравится

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

А в чем проблема? Добавили в объект LeadType новую справочную колонку на Продукт. Добавили в лукапах лукап от объекта LeadType вывили там свою колонку что добавили, все, готово, ее можно редактировать прямо в секции этого справочника.

О какой детали речь? Покажите пожалуйста скриншоты если проблема еще актуальна.

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

Добрый день.

Возникла следующая задача: у меня в карточке есть поле "Рекомендуемая дата запуска". Значение в это поле должно проставляться автоматически, как : текущая дата + 10 рабочих дней, например. Учитываться должны только рабочие дни, исключая выходные\праздники, которые указаны в календаре (использую типовой календарь в системе, там указываю время рабочего дня, а так же все нужные праздники). Как мне обратиться к данному календарю? Как мне рассчитать верно дату?

P.S: Данную дату мне нужно проставлять в определенный момент в ходе бизнес-процесса.

Нравится

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

Добрый день!

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

Это комплексный механизм, последовательность и название всех задействованных функций можно определить с помощью отладки.

Рекомендую ознакомится с таблицами и связями в них (названия колонок интуитивно названы с учетом на какую таблицу они ссылаются): WorkingTimeInterval -> DayInCalendar/DayOfWeek - > Calendar.

Все задействованные схемы находятся в пакете Calendar.

Классическая задача. Например, в БП можно решить скриптом:



https://stackoverflow.com/questions/4604461/c-sharp-datetime-to-add-sub…

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

Всем доброго времени суток.

Версия 7.10.

Вопрос в целом относится к доработке контролов даты и времени, которые я уже поднимал в предыдущих своих темах.

В общем, в diff страницы есть вот такой мерж:

{
				"operation": "merge",
				"name": "StartDate",
				"values": {
					"isUseDisabled": true,
					"timeInterval": 60, 
					//"activityOwner": {"bindTo": "ownerId"},
				}
			},

ownerId в свою очередь - виртуальная колонка-строка:

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

timeInterval, isUseDisabled, activityOwner - добавлял сам для последующего использования в соответствующих методах ViewGenerator. Логическое и численное значение передаются нормально. Но при подключении последнего пункта, привязанного к виртуальной колонке, в консоль вываливается ошибка в файле core.js:

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

С чем связана такая ошибка? Как правильно привязать параметр?

Нравится

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

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

посмотрите в сторону метода:

getBindConfig: function() {

в baseedit.js

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

и к примеру в button.js там этот метод переопределен и список свойств доступных к бинденку расширен,

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

Илья, спасибо, помогло.

Есть ещё один в принципе, связанный вопрос..Вот есть у нас класс ActivitySectionGridRowViewModel. Если я в какой-либо из функций этой схемы выведу значение this, то там будет список values - доступных колонок объекта Activity.

Как добавить ещё одну колонку, к примеру, Owner?

 

UPD: Вопрос решён. Нужно было в getGridDataColumns в схеме ActivitySection добавить ссылку на соответствующую колонку.

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

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

Нравится

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

День добрый! 

Скрипт по апдейту значений из продукта в заказе продуктов в счете (через график поставок и оплат) лежит в схеме OrderAmountHelper.

Удачи!

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

При изменении детали "продукты в заказе" с редактируемым реестром необходимо пересчитать поля в заказе. Для этого я колбеком на сохранении продукта в заказе повесил отправку сообщения на страницу заказа для запуска процесса пересчета. При этом пересчет работает через раз: иногда считает правильно, иногда считает абсолютно неадекватные числа. В чем дело? Может быть сигнал на пересчет сделать другой?

Нравится

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

Добрый день, Лев!

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

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

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

Здравствуйте. Столкнулся с проблемой проверки введённых параметров в справочниках. Есть справочник, в нём два поля с датой, надо проверить даты на условие и в зависимости от этого продолжить, или отменить сохранение.

Решил действовать через встроенные БП на событие "Перед сохранением".

БП получился простым,

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

но почему то процесс сохранения не прерывается.

Если условие выполняется, то генерится сигнал тот же самый, который был на входе (UsrParametersOfContractsSaving), по умолчанию - останов (TerminateEvent).

Условие элементарное

Entity.GetTypedColumnValue("UsrStartDate") < Entity.GetTypedColumnValue("UsrEndDate").

Отладка как то не проясняет ситуацию. Может кто сталкивался с данной ситуацией?

Нравится

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

Павел, добрый день! Для решения указанной задачи ПРАВИЛЬНЕЕ использовать не встроенные процессы, а клиентский код. Пример можно посмотреть на странице активности (там проверяется, что завершение не может быть меньше начала). Серверный код не стоит использовать, если в результате проверки необходимо запретить клиенту сохранить запись.

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

Юлия, спасибо за ответ. Действительно, я рассматривал вариант отмены на клиенте. С редактируемым реестром более менее работать научился. Но здесь проблема в том, что это справочник. То есть страница редактирования не персональная, а общая. Поэтому и выбрал встроенные БП. Но там, похоже ничего не получится... А задача действительно - запретить изменение полей, а не делать промежуточные вычисления.

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

Сформулирую как я понял задачу:

На странице есть поле. Поле ссылается на справочник. В справочнике есть следующие поля:

  • Название (то, что будет отображаться на странице)
  • Дата начала
  • Дата завершения

На странице есть также поле с типом "Дата" (назовем его "Валидатор"). Необходимо, чтобы выполнялась проверка находится ли значение, указанное в поле "Валидатор" в интервале ["Дата начала", "Дата завершения"].

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

Есть два решения задачи:

Алексей, здравствуйте.

Задача в следующем. Есть справочник, в котором есть поля Название, Дата начала, Дата окончания. Справочник редактируется в разделе Дизайнер системы - справочники. В этом справочнике необходимо контролировать, чтобы дата окончания не была меньше даты начала. Чтобы при попытке сохранить запись справочника производилась проверка и запись справочника не сохранялась бы при невыполнении условия.

"Для решения указанной задачи ПРАВИЛЬНЕЕ использовать не встроенные процессы, а клиентский код."



- я извиняюсь, а почему это "ПРАВИЛЬНЕЕ"? Потому, что заморачиваться не хочется? А если мне нужно обезопасить данные, чтобы сотрудник не "нахимичил"? Ваша валидация, которая "ПРАВИЛЬНЕЕ", обходится средствами браузера на раз-два. И действительно "ПРАВИЛЬНЕЕ" было бы организовать валидацию на стороне сервера перед сохранением.

Наряду с валидацией в клиентской схеме, можете встроить проверку по событию "Проверка записи" на вкладке "Сохранение" в событийном подпроцессе. Просто при помощи сценария. При невыполнении каких-либо условий пробросьте Exception из сценария.

* Во первых, сообщение ошибки вылезет пользователю на экран в информационном окошке , так что можете сообщить, что не так.

* Во вторых, сохранения точно не произойдёт.

* В третьих, такую проверку пользователь точно не обойдёт.

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

Добрый день.

Портал самообслуживания. Есть справочник "Шаблоны Email сообщений". В нём есть запись "Шаблон регистрации пользователя портала". Там указан такой вот текстовый шаблон: 

 

Здравствуйте, [#Адресат.ФИО#]!

 

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

 

#RegistrationUrl#

 

С уважением,

Служба поддержки



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

 

Как сделать так, чтобы в письме было не так — Здравствуйте, [#Адресат.ФИО#]!, а именно вот так — Здравствуйте, Иванов Иван Иванович! (ну или другое ФИО, которое должно автоматически проставляться, когда новый пользователь заполнил специальную форму для регистрации)?

Нравится

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

Добрый день, Кирилл!

 

Решением проблемы в данном случае будет изменение макроса с [#Адресат.ФИО#] на [#Recipient.Name#].

В процессе разработки мы ушли от поля Адресат и пришли к Recipient (судя по всему из-за мультиязычности).

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

Добрый день!





Подскажите, как решать следующую проблему:



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

Для решения настроила бизнес-правило для поля Создал. Выводит тех сотрудников,у которых поле "Тип"="Сотрудник". К сожалению, в фильтре выводится весь список контактов.

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

Нравится

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

Светлана, вряд ли БП, которое реализовано на странице работает для панели быстрых фильтров.

Варианты решения:

- воспользоваться расширенным фильтром: https://academy.terrasoft.ru/documents/marketing/7-10/rasshirennyy-filtr

- создать свою панель с быстрым фильтром по аналогии как в активностях: https://academy.terrasoft.ru/documents/technic-sdk/7-10/dobavlenie-v-ra… (см. фильтр по ответственному).

Спасибо!

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