При сохранении продажи выбивает ошибку, прилагаю скрин

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

Нравится

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

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

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

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

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

Пример: "8(923) 343-2122"

Нравится

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

Ну сам метод валидации можно например сделать так:

var PHONE_MASK = {

            REG_EXP: /^\8\(\d{3}\) \d{3}-\d{4}$/,

            FORMAT: ["9(999) 999-9999"]

        };

if (PHONE_MASK.REG_EXP.test(number)) {//TODO}

else {//TODO}



В поле выводить формат соответственно, в случае ошибки, либо на его основе маску ввода построить.

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

Ну сам метод валидации можно например сделать так:

var PHONE_MASK = {

            REG_EXP: /^\8\(\d{3}\) \d{3}-\d{4}$/,

            FORMAT: ["9(999) 999-9999"]

        };

if (PHONE_MASK.REG_EXP.test(number)) {//TODO}

else {//TODO}



В поле выводить формат соответственно, в случае ошибки, либо на его основе маску ввода построить.

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

Показать все комментарии
Разработка
сохранение записи
7.14_()
Sales_Creatio_()

Добрый день!

Необходимо реализовать в разделе Лиды в карточке Лида разделение поля "ФИО контакта" на 3 отдельных поля "Фамилия", "Имя" и "Отчество".

В мастере разделов я добавил 3 новых поля и хочу сделать стандартное поле "ФИО контакта" скрытым, но чтоб не переделывать логику работы карточек, думаю при сохранении Лида записывать значения полей фамиля+имя+отчество в поле "ФИО контакта"

Подскажите, пожалуйста, нормальное будет такое решение? И как можно реализовать автоматическое сохранение?

Я пока только разбираюсь в системе и её документации, нужной информации пока не нашел.

Нравится

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

Сделать поле ФИО контакта вычисляемым полем. статья https://academy.terrasoft.ru/documents/technic-sdk/7-15/dobavlenie-vychislyaemyh-poley

по аналогии делал для поля Название в разделе конфигурации:

attributes: {
"Name": {
	dataValueType: Terrasoft.DataValueType.STRING,
	dependencies: [
		{
			columns: ["Type", "Model", "EPMManufacturer"],
			methodName: "generateNewName"
		}
	]
}
},
methods: {
onEntityInitialized: function() {
	this.callParent(arguments);
	this.generateNewName();
},
generateNewName: function() {
	var sType = Ext.isEmpty(this.get("Type")) 
				? ""
				: this.get("Type").displayValue ;
	var sModel = Ext.isEmpty(this.get("Model")) 
				? "" 
				: " " + this.get("Model").displayValue;
	var sEPMManufacturer = Ext.isEmpty(this.get("EPMManufacturer")) 
							? "" 
							: " " + this.get("EPMManufacturer").displayValue;
	var result = sType + sEPMManufacturer + sModel;
	this.set("Name", result);
}
}

 

Сделать поле ФИО контакта вычисляемым полем. статья https://academy.terrasoft.ru/documents/technic-sdk/7-15/dobavlenie-vychislyaemyh-poley

по аналогии делал для поля Название в разделе конфигурации:

attributes: {
"Name": {
	dataValueType: Terrasoft.DataValueType.STRING,
	dependencies: [
		{
			columns: ["Type", "Model", "EPMManufacturer"],
			methodName: "generateNewName"
		}
	]
}
},
methods: {
onEntityInitialized: function() {
	this.callParent(arguments);
	this.generateNewName();
},
generateNewName: function() {
	var sType = Ext.isEmpty(this.get("Type")) 
				? ""
				: this.get("Type").displayValue ;
	var sModel = Ext.isEmpty(this.get("Model")) 
				? "" 
				: " " + this.get("Model").displayValue;
	var sEPMManufacturer = Ext.isEmpty(this.get("EPMManufacturer")) 
							? "" 
							: " " + this.get("EPMManufacturer").displayValue;
	var result = sType + sEPMManufacturer + sModel;
	this.set("Name", result);
}
}

 

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

 Спасибо большое!

В итоге получился вот такой код:

		attributes: {
            "Contact": {
                dataValueType: Terrasoft.DataValueType.TEXT,
                dependencies: [
                    {
                        columns: ["UsrLastName", "UsrFirstName", "UsrMiddleName"],
                        methodName: "calculateContact"
                    }
                ]
            }
		},
		modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/,
		methods: {
            onEntityInitialized: function() {
                this.callParent(arguments);
                this.calculateContact();
            },
            calculateContact: function() {
                var sLastname = Ext.isEmpty(this.get("UsrLastName")) 
				? ""
				: this.get("UsrLastName");

                var sFirstname = Ext.isEmpty(this.get("UsrFirstName")) 
				? ""
				: this.get("UsrFirstName");
				
				var sMiddlename = Ext.isEmpty(this.get("UsrMiddleName")) 
				? ""
				: this.get("UsrMiddleName");

                var result = sLastname + " " + sFirstname + " " + sMiddlename;
                this.set("Contact", result);
			}
		},

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

Теперь не понятно, что делать со старыми Лидами делать, где контакт забит одной строкой, а разделенные поля фамилия, имя, отчество не заполнены.. Я там понимаю, что нужно сделать дополнительную обработку существующих лидов и заполнить значения разделив поле Контакт.. Только как это сделать лучше и в какую сторону копать не знаю. Можете подсказать? Может через БП или напрямую через SQL?

Сергей Бер пишет:

Может через БП или напрямую через SQL?

Без разницы - оба варианта подойдут. Реализуйте тот способ, что для Вас проще.

Если на объекте лида есть какая-то логика во встроенном или отдельном БП, уже завязанная на изменение названия, то при изменении поля при помощи SQL-запроса привязанное событие не запустится, это на всякий случай нужно учитывать. 

Сергей Бер пишет:

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

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

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

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

Видел кейс, который делал это в карточке, но найти место где создается эта картинка - не смог. Нашел метод onLinkMouseOver, но он в "Terrasoft.Grid" и вызывает следующий метод - linkMouseOver уже в MiniPageUtilities. Где и как влезть в место где создается картинка и сделать подписку на свой метод, который будет прописан в AccountSectionV2?

Нравится

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

А что за карточка с увеличением изображения? Это в «коробке»?

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

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

Если изменённая схема выгружена в SVN (Нет замочка) из Базы 1, и если внести правки в эту схему на Базе 2 (появится замочек) до обновления из SVN, то при следующем обновлении из SVN изменения из Базы 1 затрутся изменениями из Базы 2.



Т.е. схемы, на которых стоят замочки, не обновляются из SVN.

Нравится

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

Описанное Вами поведение выглядит вполне логично. Где позже меняли, тем и обновляем.Если залочили — значит, собираемся сами менять.

Мотков Илья,

Из-за этого "логичного поведения" пропадают настройки объектов в самый не подходящий момент (например, на показе клиенту) и Аналитику приходится пренастраивать схемы по несколько раз.

При обновлении из хранилища дол жен проходить merge и схем с замочками. Т.к. иначе нет и смысла разработки в команде.

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

Зачем в ProductEntryUtils.RecalculateAmountByProducts повторно брать цену из продукта, если в "Продукте заказа" (например) уже установлена цена продукта в сделке?

В итоге цена, установленная менеджером / прайс-листом затирается.

Если объяснения нет, то прошу считать это багом и внести на исправление в ближайшее время.



P.S.: Спасибо, что сделали метод GetProductFinanceSelect виртуальным. Хоть как-то можно подкорректировать данную логику.

Нравится

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

Игорь, какая последовательность действий в системе приводит к запуску этой функции и неправильному заполнению цены?

В других схемах не видно упоминаний этой функции. Вы сами написали код, который её запускает?

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

В БП с таймером хочу получить локализованный шаблон email. 

Но при получении правил локализации получаю ошибку (см. https://community.terrasoft.ru/questions/osibka-pri-polucenii-sablona-email-v-fonovom-bp)

Вопрос. Почему ActorUserConnection, которое доступно после отработки таймера, не подходит DefaultLanguageIterator?

Вопрос 2: Можно ли сохранить UserConnection (в параметр или др. способом) для использования после таймера? 

Нравится

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

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

Показать все комментарии
7.10_()
Sales_Creatio_()

Добрый день!

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

Нравится

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

Касымов Сакен,

В версии 7.10 такой функциональной возможности нет.

Она была добавлена в более поздней версии -  7.11.3.

У Вас 2 варианта: либо обновиться до версии 7.11.3, либо реализовать собственную функциональность для данного справочника.

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

 

Если я правильно понял что нужно сделать, то Вам нужно в конфигурации зайти в Ваш справочник, к примеру [AccountType] и отметить признак "Разрешить деактивацию записей", сохранить, опубликовать. Потом зайти в раздел "Справочники", зайти в Ваш справочник и там у каждой записи появится признак "Деактивирована" и эти записи не будут доступны для выбора больше.

Alex Zaslavsky,

Да, Вы правильно все поняли, только не могу понять, как добавить признак "Деактивирована" ?

Касымов Сакен,

В версии 7.10 такой функциональной возможности нет.

Она была добавлена в более поздней версии -  7.11.3.

У Вас 2 варианта: либо обновиться до версии 7.11.3, либо реализовать собственную функциональность для данного справочника.

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

 

Да, Алла права, я не обратил внимание на версию продукта.

Показать все комментарии
Contact_search
social_network
marketplace
7.15_()
Sales_Creatio_()

День добрый. Плагин Contact search in social networks for Creatio 

https://marketplace.terrasoft.ru/app/contact-search-social-networks-creatio 

перестал искать в Linkedin. https://prnt.sc/qep2er походу в Linkedin поменялась ссылка для поиска. Нужно обновить ее в плагине. 

https://www.linkedin.com/search/results/index/?keywords=Jane%20Wanjiku%20%20Karicha+Withoutname вот такую ссылку выдает плагин. Корректная ссылка выглядет иначе:

https://www.linkedin.com/search/results/people/?keywords=test

Версия последняя на сегодня. 

 

Нравится

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

Добрый день.

Перейдите по ссылке https://marketplace.terrasoft.ru/app/contact-search-social-networks-creatio и на вкладке 'Обратная связь' опишите суть проблемы.

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

P.S. По собственному опыту могу сказать, что реакция на обратную связь достаточно быстрая.

Спасибо. Так и сделал. 

Максим, добрый день,

дополнение использует базовый механизм поиска в Linkedin. Поэтому вам достаточно обновить ссылку в системной настройке "Поиск в LinkedIn URL" на https://www.linkedin.com/search/results/all/?keywords= и перезайти в приложение, чтобы изменения применились.

Спасибо, помогло!

Показать все комментарии
мультиязычность многоязычность
7.15_()
Sales_Creatio_()

Коллеги, что вы можете посоветовать для решения такого вопроса:

Есть мультиязычная система. В конфигурации объектов и страниц всё хорошо записывается в Localizable string. Но в БП и System settings тоже встречается необходимость использовать текстовые данные (в уведомлениях, например).

Но там можно указать только одно значение. Как лучше поступить в этой ситуации?

Нравится

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

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

Локализировать нужные значения можно через раздел 'Переводы'.

Правда, в БП не все значения попадают в локализируемые.

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

Локализировать нужные значения можно через раздел 'Переводы'.

Правда, в БП не все значения попадают в локализируемые.

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