Как в клиентском коде сделать подгрузку одного поля что бы не обновлять всю страницу?

Нравится

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

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

Вам же ответили по событию вычитайте через клиентский esq (javascript - без перезагрузки страницы) значения интересующих вас полей и проапдэйте их Пример тут

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

Самый очевидный, но возможно не самый правильный вариант - esq.

Дмитрий А.,

Это доступ в базу данных, а я имею введу по событию что бы обновилось не все окно а только одно поле полезли в базу и обновилось. Как заставить это сделать по событию?

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

Вам же ответили по событию вычитайте через клиентский esq (javascript - без перезагрузки страницы) значения интересующих вас полей и проапдэйте их Пример тут

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

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

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

Нравится

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

Вариант 1: Сделайте в процессе фильтрацию по частям. Например, по алфавиту от A до F.

И затем меняйте фильтр, удаляя в несколько приёмов.



Вариант 2: Фильтровать в разделе (как в п.1) и удалять штатными методами



Вариант 3: написать SQL

Вариант 1: Сделайте в процессе фильтрацию по частям. Например, по алфавиту от A до F.

И затем меняйте фильтр, удаляя в несколько приёмов.



Вариант 2: Фильтровать в разделе (как в п.1) и удалять штатными методами



Вариант 3: написать SQL

Владимир Соколов,

Фильтр не получится использовать - там все значения одинаковые. А по поводу SQL можно подробнее?

NothingHappen,

https://marketplace.terrasoft.ru/app/sql-executor-bpmonline

Можно писать sql запросы прямо в bpm.

delete top(n) from tableName [where ...]

NothingHappen,

Вам нужно написать sql-запрос на удаление вида:

delete from <название таблицы>
where <условия для выборки нужных записей>

Если у Вас bpm'online on-site, то можно выполнить запрос прямо на сервере баз данных через Microsoft SQL Server Management Studio.

Если on-demand, то можно установить Модуль для выполнения SQL - скриптов "SQL Executor" и выполнить запрос из него.

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

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

NothingHappen пишет:

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

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

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

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

Спасибо.

Показать все комментарии
кассовый аппарат
штрих-код
7.14_()
sales

Можно ли подключить кассовые аппараты и сканеры штрихкодов к системе bpm'online?

Нравится

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

А почему нет?

Но я бы рекомендовал написать например свой сервис (службу OS) который будет обслуживать ваше оборудование и дергать bpm через вэб сервисы или любым другим способом.

А почему нет?

Но я бы рекомендовал написать например свой сервис (службу OS) который будет обслуживать ваше оборудование и дергать bpm через вэб сервисы или любым другим способом.

В маркете есть модуль «Storekeeper for bpm’online», поддерживающий работу со сканером штрихкода и «Виртуальная касса для работы с процессингом покупок».

Не уверен по архитектуре современных партнёрских версий bpm'online для лояльности, но во времена Loyalty 5.3 кассы подключались к своему ПО, например, «СуперМаг УКМ», которое уже по сети взаимодействовало со стандартными или доработанными веб-сервисами bpm'online.

А сканер штрих-кода в простейшем случае просто имитирует ввод цифр из кода с клавиатуры с последующим нажатием клавиши Enter.

Показать все комментарии
javascript
lookupListConfig
7.14_()
sales

Не могу понять в чем проблема , все делаю по инструкции https://academy.terrasoft.ru/documents/technic-sdk/7-14/primenenie-filtracii-k-spravochnym-polyam?_ga=2.187658344.1798117710.1565074747-1746837617.1550722519

Есть таблица Rashodnik и в этой таблице есть поле сотрудник  UsrSotrudnik, необходимо чтобы по сотруднику был фильтр . Делаю так

"UsrSotrudnik": {
       .....
       "lookupListConfig": {
          "filters": {
               var filterGroup = Ext.create("Terrasoft.FilterGroup");
               filterGroup.add("Job",
                                Terrasoft.createColumnFilterWithParameter(
                                    Terrasoft.ComparisonType.EQUAL,
                                    "[UsrRashodnik:UsrSotrudnik].FullJobTitle",
                                    "Кассир"));
               return filterGroup;
           }
       }
}

выходит пустой список почему то, в чем может быть причина?

Нравится

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

Не пробовали через бизнес правила в графическом интерфейсе? Там тоже есть фильтрация полей по условию

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

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

А не напутали ли с условием? Точно ли поле FullJobTitle у Вас в таблице UsrRashodnik? Для сравнения, в справке по приведенной ссылке для поля Owner фильтруют справочник контактов, проверяют на истинность поле Active в связанном с контактом SysAdminUnit:

filterGroup.add("IsActive",
    Terrasoft.createColumnFilterWithParameter(
    Terrasoft.ComparisonType.EQUAL,
    "[SysAdminUnit:Contact].Active",
    true));

Если сайт развёрнут на Ваших серверах, посмотреть получаемый запрос в базу можно в SQL-профайлере.

Показать все комментарии
excel отчет
отправка e-mail
7.14_()
sales

Коллеги, добрый вечер!

Подскажите идеи пжлст для реализации следующей задачи:

в разделе Excel отчеты есть отчет. Его нужно отправлять каждый день по расписанию на определенный email.

 

Спасибо!)

Нравится

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

Елена К пишет:

А немного поправив, это вы что примерно имеете ввиду

Пока не могу сказать точно. Эта задача у нас в проекте тоже стоит, но пока не запущена в анализ и разработку. Я просто описал направление решения. Возможно, в сентябре смогу рассказать детально

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

Насколько я понимаю раздел Excel отчеты это не базовый функционал?

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

Отправка файлов в БП на этом форуме обсуждалась не раз и особой сложности не представляет.

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

Григорий Чех,

Григорий, это приложение https://marketplace.terrasoft.ru/app/excel-reports-builder-bpmonline, выпущенное Terrasoft. При запуске  созданного в  разделе "Excel отчеты" отчета происходит скачивание файла Excel. У нас вопрос как через БП сгенерировать cамо вложение, а там дальше мы с ним уже разберемся). Спасибо!

 

Елена К,

Мы, например, используем другое дополнение -

https://marketplace.terrasoft.ua/app/reports-generator-bpmonline

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

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

Владимир Соколов,

Владимир, да , это приложение тоже стоит, просто меньше используется, чем первое.  А немного поправив, это вы что примерно имеете ввиду?). 

Елена К пишет:

А немного поправив, это вы что примерно имеете ввиду

Пока не могу сказать точно. Эта задача у нас в проекте тоже стоит, но пока не запущена в анализ и разработку. Я просто описал направление решения. Возможно, в сентябре смогу рассказать детально

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

Елена К,

Судя по принскрину приведенному Владимиру,вы можете например создать активность с типом исходящее письмо и отчет не записывать на диск а прикреплять к этой активности и отправлять ее (Как отправлять письмо с вложениями неоднократно в этом форуме обсуждалось)

Коллеги, спасибо! будем пробовать.Как получиться, поделимся).

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

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

Нравится

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

Добрый день! Попробуйте использовать данное дополнение - https://marketplace.terrasoft.ru/app/excel-pivot-report-bpmonline

Добрый день! Попробуйте использовать данное дополнение - https://marketplace.terrasoft.ru/app/excel-pivot-report-bpmonline

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

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

Для сложных случаев лучше создавать отчеты ручками например используя OpenXML sdk

Пример на c# создания сводной таблицы можно посмотреть тут

Если нужен какой-то конкретный один или несколько сложных отчётов, можно делать всё на уровне базы: создать view со всеми вычислениями, возвращающий «плоскую» таблицу с фиксированным набором колонок, затем объект с такими же колонками и строить по нему штатными средствами.

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

Fenix Agro,

Добрый день,

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

Кстати, за прошедшее время стандартный итог «список» тоже начал поддерживать сводные таблицы. Вариантов всё больше.

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

При создании письма для поля кому выдает список адресов вида:

"название лида "

Возможно ли настроить данный фильтр чтобы он выдавал только ФИО контактов вместо названий лидов? или чтобы отсеивались лиды в этом списке

 

Нравится

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

Уточните где именно в системе вы создаете письмо (тк как используются разные страницы редактирования)

Григорий Чех,

Создание нового письма кнопкой с коммуникационной панели,

так же с помощью кнопки mail под кейсом в обращении, лиде или сделке

или ещё так же при ответе на письмо из вкладки Обработка обращения в том числе при ответе по шаблону

В общем везде этот список выглядит одинаково, помимо лидов ещё есть записи типа <<a href="mailto:test@test.rr">test@test.rr</a>>

 

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

 

Выборка идёт из объекта «E-mail адреса» (VwRecepientEmail). Он — представление в базе. То есть, чтобы исправить условие выборки, нужно зайти в базу и исправить код этой view. Главное, не менять набор выдаваемых колонок, они должны совпадать с колонками объекта.

Стандартно код такой:

CREATE VIEW [dbo].[VwRecepientEmail]
AS
SELECT [Id], [Name] + ' <' + [Number] + '>' AS [Email], [d].[UseEmail], [d].[ContactId], [Number]
FROM (SELECT [AccountCommunication].[Id], [Account].[Name], [AccountCommunication].[Number], 0 AS [UseEmail], [Account].[PrimaryContactId] AS [ContactId]
	FROM [AccountCommunication]
	INNER JOIN [Account] ON [Account].[Id] = [AccountCommunication].[AccountId]
	WHERE ([AccountCommunication].[CommunicationTypeId] = 'EE1C85C3-CFCB-DF11-9B2A-001D60E938C6')
	UNION ALL
	SELECT [ContactCommunication].[Id], [Contact].[Name], [ContactCommunication].[Number], [Contact].[DoNotUseEmail], [Contact].[Id] AS [ContactId]
	FROM [ContactCommunication]
	INNER JOIN [Contact] ON [Contact].[Id] = [ContactCommunication].[ContactId]
	WHERE ([ContactCommunication].[CommunicationTypeId] = 'EE1C85C3-CFCB-DF11-9B2A-001D60E938C6')
	UNION ALL
	SELECT NEWID(), [Lead].[LeadName], [Lead].[Email], [Lead].[DoNotUseEmail], [Lead].[Id] AS [ContactId]
	FROM [Lead]) AS [d]
GO

В Вашем случае нужно избавиться от третьего SELECT, который выбирает из лидов, и убрать UNION ALL перед ним. А если не нужны контрагенты, то и от первого, оставив только выборку из контактов.

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

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

Как можно исправить?

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

Нравится

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

Добрый день!

Если Вы переразвернули только базу данных для уже настроенного и работающего приложения, то попробуйте в окне браузера после авторизации в адресной строке указать localhost/0/dev.

У Вас должно появиться окно конфигурации bpm'online, в этом окне найдите пункт меню 'Скомпилировать все'.

Также перезагрузите IIS и очистите кеш Redis.

Добрый день!

Если Вы переразвернули только базу данных для уже настроенного и работающего приложения, то попробуйте в окне браузера после авторизации в адресной строке указать localhost/0/dev.

У Вас должно появиться окно конфигурации bpm'online, в этом окне найдите пункт меню 'Скомпилировать все'.

Также перезагрузите IIS и очистите кеш Redis.

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

Спасибо помоглоyes

Показать все комментарии
детали
Пересчитать сумму
7.12
sales

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

Нравится

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

Эта логика реализована во встроенном БП объекта «Продукт в продаже» (OpportunityProductInterest). Там в обработчике событий сохранения и удаления записей в объекте детали запускается функция CalckOpportunityAmount с кодом:

var oppotrunityAmountSelect = new Select(UserConnection)
	.Column("Amount")
	.From("OpportunityProductInterest")
	.Where("OpportunityId").IsEqual(Column.Parameter(opportunityId)) as Select;
double opportunityAmount = 0.0;
using (var dbExecutor = UserConnection.EnsureDBConnection()) {
	using (IDataReader dr = oppotrunityAmountSelect.ExecuteReader(dbExecutor)) {
		while (dr.Read()) {
			if(!dr.IsDBNull(0)){
				opportunityAmount += (double)UserConnection.DBTypeConverter.DBValueToDecimal(dr[0]);
			}
		}
	}
}
var update = new Update(UserConnection, "Opportunity")
		.Set("Amount", Column.Parameter(opportunityAmount))
		.Where("Id").IsEqual(Column.Parameter(opportunityId));
	update.Execute();

 

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

Спасибо. Нашел - получилось что бы в поле записывалась сумма, но я так понимаю должно быть еще сообщение которое заставляет страницу обновляться (или точнее поле на фронте). Не нахожу таких сообщений в OpportunityPageV2 и наверно с БП объекта тот что отправляет

У страницы OpportunityPageV2 есть много версий в разных пакетах.

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

Я смотрел сразу через дебагер в chrome, что бы видеть все версии сразу

Не оно ли:

details: /**SCHEMA_DETAILS*/{
...
OpportunityProduct: {
	schemaName: "OpportunityProductDetailV2",
	filter: {
		masterColumn: "Id",
		detailColumn: "Opportunity"
	},
	subscriber: {methodName: "onOpportunityProductChanged"}
},
...
methods: {

/**
 * Reloads current record.
 * @private
 */
onOpportunityProductChanged: function() {
	this.loadEntity(this.get("Id"));
	this.sendSaveCardModuleResponse(this);
},

 

Показать все комментарии
объект
заголовок
переименование
7.12
sales

Можно ли как-то переименовать название объекта таблицы (точнее заголовок). При изменении в объекте сама ORM не переименовывает таблицу в базе данных, а если руками переименовать таблицу а потом объект - тогда выдает ошибку "Ошибка сохранения: ORA-00942: table or view does not exist".

И да, база данных Oracle

Нравится

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

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

Именно заголовок сменился нормально, объект опубликовался:

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

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

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

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