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

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

какие бы правила не включал, или даже выключал все, все равно работает сравнение по полю - Контрагент.

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

Суппорт подсказал только что должна использоваться процедура - tsp_FindLeadSimilarRecords, я внес в нее правки в базу, логирование на вызов, но она не вызываеться :(

 

пробовал отключить все существующие правила, и создать свое по процедуре, используя статью: https://academy.terrasoft.ru/documents/technic-sdk/7-16/dobavlenie-pravila-massovogo-poiska-dubley

настроил вызов все той же - tsp_FindLeadSimilarRecords, но процедура все равно не вызываеться.

 

может у кого то есть идеи как решить проблему?

 

Нравится

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

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

 

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

 

В статье по Вашей ссылке отмечено:

Описанный процесс добавления правила массового поиска дублей актуален для Creatio версий 7.13.2 и ниже. Для версий системы 7.13.4 и выше функциональность поиска дублей описана в статье “Поиск и объединение дублей”, а работа с правилами поиска дублей при сохранении записи — в статье "Добавление правила поиска дублей при сохранении записи".

Проверьте, может, для Вашей версии настраивается иначе, не правкой хранимки.

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

Добрый день!

Просьба подсказать, как исправить ошибку из описания ниже.

Формирование отчета, созданного с помощью дополнения "Reports generator" при открытии завершается ошибкой. Далее файл открывается с корректными данными, однако шаги "Yes" и "Close" есть лишними для бизнес-пользователей.

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

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

 

Также возник вопрос относительно настройки формата ячейки с разделителем разрядов.

 

Задали формат ячейки "#,###.00" , он применился не ко всем строкам.

3 905 000,00

4065,51

63 500,00

115393,2

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

 

Заранее благодарю за помощь!

Нравится

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

Добрый день, Тамара!

 

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

Уточните, пожалуйста, какие настройки выполнены в файле шаблона. Только выгрузка данных или добавлены сводные таблицы, графики, др.?

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

Переименование не помогло. Наименование указано непосредственно в поле Имя файла в BpmReportConstructorPage. 

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

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

Спасибо!

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

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

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

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

из-за чего есть необходимость обновить страницу справочника с Бизнес процесса.

Подскажите как это можно реализовать.

Спасибо.

Нравится

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

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

 

Для передачи сообщений из серверной логики на клиент используется механизм ClientMessageBridge.

 

Также посмотрите обсуждение в этом посте.

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

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

спасибо за вариант, но уже все реализовано по другому, осталось проблему с рефрешем страницы решить.

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

я беру (BaseLookupConfigurationSection) так как этот функционал мне нужен при добавлении строки, но туда сообщение NewUserSet не доходит, как понять в чем ошибка?

Так же появляется ошибка:

Приведите Ваш код, который Вы разработали для этой функциональности.

1. В процессе добавил в Задание-сценарий:

string messageText = "{\"name\": \"" + "TestName" + "\"}";

string sender = "NewUserSet";

MsgChannelUtilities.PostMessageToAll(sender, messageText);

return true;

 

2. вот код замещающей схемы ClientMessageBridge :

 /**

 * @class ClientMessageBridge.ELBase

 * @extends ClientMessageBridge.NUI

 */

define(

    "ClientMessageBridge",

    ["ConfigurationConstants"],

    function(ConfigurationConstants) {

        return {

            messages: {

                "NewUserSet": {

                    "mode": Terrasoft.MessageMode.BROADCAST,

                    "direction": Terrasoft.MessageDirectionType.PUBLISH

                }

            },

            methods: {

                /**

                 * @inheritDoc ClientMessageBridge.UIv2#init

                 * @override

                 */

                init: function() {

                    this.callParent(arguments);

                    this.addCustomMessages();

                },

                

                addCustomMessages: function() {

                    this.addMessageConfig({

                        sender: "NewUserSet",

                        messageName: "NewUserSet"

                    });

                },

                afterPublishMessage: function(

                    sandboxMessageName,

                    webSocketBody,

                    result,

                    publishConfig) {

                    if (sandboxMessageName === "NewUserSet") {

                        var name = webSocketBody.name;

                        window.console.info("Опубликовано сообщение: " + sandboxMessageName +". Данные: name: " + name);

                    }

                }

            }

        };

    }

);

 

3. и код замещающей схемы BaseLookupConfigurationSection:

/**

 * @class BaseLookupConfigurationSection.ELBase

 * @extends BaseLookupConfigurationSection.UIv2

 */

define(

    "BaseLookupConfigurationSection",

    [],

    function(BusinessRuleModule, ConfigurationConstants) {

        return {

             messages: {

                "NewUserSet": {

                    "mode": Terrasoft.MessageMode.BROADCAST,

                    "direction": Terrasoft.MessageDirectionType.PUBLISH

                }

            },

            methods: {

                /**

                 * @inheritDoc GridUtilitiesV2.NUI#checkCanDelete

                 * @override

                 */

                checkCanDelete: function(items, callback, scope) {

                    this.callGetLookupDisabledActionsService(this.getParentMethod(this, arguments));

                },

                

                callGetLookupDisabledActionsService: function(callback) {

                    this.showBodyMask();

                    this.callService(

                        this.getGetLookupDisabledActionsServiceConfig(),

                        this.handleGetLookupDisabledActionsServiceResponse.bind(this, callback),

                        this

                    );

                },

                

                getGetLookupDisabledActionsServiceConfig: function() {

                    return {

                        serviceName: "GetUserRolesService",

                        methodName: "GetLookupDisabledActions",

                        data: {

                            lookupEntitySchemaUId: (this.getGridEntitySchema() || {}).uId

                        }

                    };

                },

                

                handleGetLookupDisabledActionsServiceResponse: function(callback, response) {

                    this.hideBodyMask();

                    if (response &&

                        response.success &&

                        !(response.data || []).includes(EL.const.db.EL_RECORD_ACTION.DELETE)) {

                        callback();

                    } else {

                        this.showInformationDialog(this.get("Resources.Strings.ForbiddenToEditLookupMessage"));

                    }

                },

// Инициализация схемы.

                init: function() {

                    this.callParent(arguments);

                    this.sandbox.subscribe("NewUserSet", this.onNewUserSet, this);

                },

// Обработчик события получения сообщения NewUserSet.

                onNewUserSet: function(args) {

                    var name = args.name;

                    window.console.info("Получено сообщение: NewUserSet. Данные: name: " + name);

                }

            }

        };

    }

);

 

А почему у Вас на странице, где будет ловиться сообщение, указано «"direction": Terrasoft.MessageDirectionType.PUBLISH», а не «"direction": Terrasoft.MessageDirectionType.SUBSCRIBE», как в примере? Не в этом ли дело?

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

вы правы, получилось, с этим спасибо, сообщение я получил.

но изначально я же хотел обновить страницу, и для этого я заменил вывод на this.reloadEntity();

получилось так:

// Инициализация схемы.

                init: function() {

                    this.callParent(arguments);

                    this.sandbox.subscribe("NewUserSet", this.onNewUserSet, this);

                },



                onNewUserSet: function(args) {

/*                   var name = args.name;

                   window.console.info("Получено сообщение: NewUserSet. Данные: name: " + name);*/

                    

                    this.reloadEntity();

                }

 

Но теперь я вижу что reloadEntity - undefined,

и получаю такую ошибку:

Функция reloadEntity задана в BasePageV2. Видимо, BaseLookupConfigurationSection, куда Вы добавляете обработчик, не наследуется от неё.

спасибо за ответ!

а возможно есть еще какие то варианты как обновить страницу?

Видимо, разобраться в логике этой функции и реализовать аналогичное для этой страницы? Она такая:

reloadEntity: function(callback, scope) {
	Terrasoft.chain(
		this.initEntity,
		function(next) {
			this.onEntityInitialized();
			this.actualizeDcmActionsDashboard(next, this);
		},
		function() {
			this.updateDetails();
			this.sandbox.publish("CardRendered", null, [this.sandbox.id]);
			this.hideBodyMask();
			Ext.callback(callback, scope);
		},
		this
	);
},

 

ок, спасибо, буду что то думать.

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

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

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

Использую BPM 7.15

 

Нравится

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

В редакторе страницы есть функция вывода web-cтраницы. Вопрос: как проще всего в URL этой страницы добавить параметр из crm (к примеру ID контрагента)? если можно - как для полного чайника =(

Нравится

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

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

 

Если самостоятельно дорабатывать, вероятно, нужно будет делать свой аналог WebPageModule для отображения и WebPageDesigner для его настройки. А затем дорабатывать DashboardEnums, где задаются все типы элементов итогов. Но это модуль, его так просто не заместить, придётся слишком много всего переделывать.

 

А жаль, в 3.Х это было стандартной возможностью, что позволяло сделать пользовательскими средствами много интересного.

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

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

 

Нравится

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

Возможно, зависит от версии, но мы пользователям портала раздаём права лично, а не ролям. Так работает

Возможно, зависит от версии, но мы пользователям портала раздаём права лично, а не ролям. Так работает

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

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

 

Вопрос скорее к Террасофт. Скажите, а почему убрали возможность выгрузки печатной формы в pdf? Чем продиктовано такое решение? Было очень удобно формировать счета, например.

Нравится

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

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

 

Мне служба поддержки ответила следующее: 

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

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

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

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

 

Мне служба поддержки ответила следующее: 

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

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

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

 

 

Алла Савельева,

Мда, понять бы какие именно будущие версии подразумеваются. со времен 7.14 достаточно много времени прошло( А пользователям-то вынь, да положь)

 

Сидоров Александр Валерьевич пишет:

со времен 7.14 достаточно много времени прошло

С тех пор добавился механизм отчётов FastReport, они как раз выгружаются в pdf.

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

fastreport же всегда был. Ну и использовать его для формирования счета - странная идея на мой взгляд. Был простой и понятный инструмент. Зачем тратить силы на то, чтобы его выпилить?)

Сидоров Александр Валерьевич пишет:

fastreport же всегда был.

Только в 3.Х. 

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

 

Я думаю, что Александр Сидоров имеет ввиду, что механизм настройки отчета в Word в разы проще, чем в FastReport.

 

Опять таки очень мало информации с различными примерами о том, как настраивать отчет в FastReport.

Сидоров Александр Валерьевич,

Это все, чтоб жизнь малиной не казалась)))

Алла, вероятно, всё дело в ограничениях на сторонние компоненты, вроде того же Aspose.

Алла Савельева,

да, с fastreport она точно не шоколад)

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

 

Также в маркете есть несколько других движков печатных форм, в том числе есть и PDF Generator connector, интегрирующийся со сторонней платформой.

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

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

Сидоров Александр Валерьевич,

Поделитесь, как решали такую задачу, когда нужно сгенерировать некую печатную форму по шаблону и приложить к письму для отправки?

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

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

Часто стоит именно такая задача, чтобы сразу выгружать в pdf, особенно касается документов с подписями и печатями (чтобы не вносились изменения пользователем непосредственно в документе).

 

Ну, и странно то, что был бесплатный базовый функционал, который это делал, а сейчас ты предлагаешь платную утилиту(

Алла Савельева,

а я, честно говоря, и не помню. Разработчики как-то делали, я не вникал в детали. Но это было давно, еще в 7.12 или около того

Алла Савельева пишет:

бесплатный базовый функционал

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

Aspose - американская компания, Террасофт - российская, чтобы быть ближе к полностью российской перевели библиотеки на российские. FastReport - российская

Всё оказалось проще, но за отдельную плату (от 99$).

Информация от devlabs:

Мы выпустили маркетплейс пакет, который позволит клиентам конвертировать ПФ в PDF:

Aspose.PDF connector for Creatio

Клиентам с версии 7.16.1 и новым справочником ПФ, кому нужна печать файлов в PDF, можно смело рекомендовать установить пакет.

Сам пакет бесплатный, но использование сервиса конвертации стоит денег. Цены перечислены тут: https://purchase.aspose.cloud/pricing + есть бесплатный триал.

Руслан Хасанов, Украинская компания, просто офис продаж есть в России

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

Может быть. Я смотрел здесь - 

https://reestr.minsvyaz.ru/request/165716/?sphrase_id=446874

российская коммерческая организация, имеющая в цепочке владения иностранных лиц

Проблема всех таких облачных третьих решений - это отсылка своих данных неизвестно куда. 



Не все клиенты могут себе это позволить, потому хочется иметь инструмент для генерации pdf 100% on-site



И сюда же Preview приложенных файлов (pdf хотя бы) 100% on-site

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

По высказанным в теме предложениям уже есть идеи: о необходимости функции конвертации word в pdf в продукте, о предпросмотре для файлов тех форматов, для которых его ещё нет (pdf, doc, xls, tiff, ...) и заодно о предпросмотре печатных форм в FastReport.

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

Геймификация – нет кнопки удалить, и нет возможности отредактировать, а так же не показывается состояние игры

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

Нравится

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

Доброе утро, Михаил,

 

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

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

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

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

Добрый день!

Правильно я понимаю, чтобы настроить глобальный поиск нужно 2 доп сервера помимо сервера с приложением и сервера баз данных (1-ый сервер с ElasticSearch, 2-ой сервер с компонентами глобального поиска, 3-ий сервер приложений, 4-ый сервера баз данных)?

Нравится

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

Шибаев Андрей,

У нас в компани 2 продуктивных инсталяции. Для них мы используем разные сервера приложений, один сервер БД, один промышленный сервер Redis, один сервер для глобального поиска и еще один для поиска дублей. Есть еще тестовые системы - у них сервер приложений свой, редис локально на сервере приложений. Сервер разработки (мощнее даже промышленных серверов :)), на нем 3 среды разработки, редис, SVN и Redmine для учета задач. Сервер БД один для всех. по мощности соответсвует описанным требованиям с учетом количества баз на нем. 

да, это если без отказоустойчивости

Спасибо!

Уточните, пожалуйста

1)возможно сервер приложения использовать в качестве одного доп сервера (сервер с ElasticSearch или сервер с компонентами глобального поиска)?

2) если в компании 2 - 3 системы, то доп сервера нужны для каждой системы или есть возможность настроить два доп сервер для 2-3 систем? просто немного затратно получается настроить  4 - 6 доп  сервера даже с минимальными системными требованиями

 

1-ый сервер с ElasticSearch, 2-ой сервер с компонентами глобального поиска, 3-ий сервер приложений, 4-ый сервера баз данных

Андрей, ещё забыли  5-й для Redis, 6-й для TMS (телефонии), 7-й для SVN, не считая серверов рассылок и подобного в облаке.

 

Всё зависит от нагрузки на сайт.

 

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

 

А если высоконагруженный, то кластеризировать по нескольким нодам и веб-сервера, и базу, и Redis.

 

Системные требования есть тут, но в общем случае всё индивидуально.

Шибаев Андрей,

У нас в компани 2 продуктивных инсталяции. Для них мы используем разные сервера приложений, один сервер БД, один промышленный сервер Redis, один сервер для глобального поиска и еще один для поиска дублей. Есть еще тестовые системы - у них сервер приложений свой, редис локально на сервере приложений. Сервер разработки (мощнее даже промышленных серверов :)), на нем 3 среды разработки, редис, SVN и Redmine для учета задач. Сервер БД один для всех. по мощности соответсвует описанным требованиям с учетом количества баз на нем. 

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

Приветствую.

У нас несколько узлов + haproxy в качестве балансировщика. Подскажите, пожалуйста, нужно ли настраивать MS на каждом из серверов и не будет ли каких-нибудь конфликтов?

Нравится

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

Здравствуйте, Дмитрий!

 

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

 

Чтобы обеспечить отказоустойчивость телефонии, рекомендуем настроить не менее двух узлов с TMS и балансировщик, который будет перенаправлять пользователей в случае потери связи с одним из узлов.

 

Развернуть нужное количество узлов TMS, далее на уровне балансировщика использовать распределение трафика по аналогии того как это настраивается для веб-сокетов в основном приложении.

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