Добрый день. Не удается отсортировать справочное поле следующим образом:



"lookupListConfig": {

                    columns: ["Number"],

                    orders: [

                        {

                            columnPath: "Number",

                            direction: Terrasoft.OrderDirection.ASC

                        }

                    ]

                },

Нравится

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

скорее всего Number просто текстовое поле, поэтому сортировка происходит некорректно

Здравствуйте, Павел!

Реализовать сортировку справочного поля можно следующим образом:

"название колонки страницы": {

    dataValueType: Terrasoft.DataValueType.LOOKUP,

        lookupListConfig: {

            orders: [

                  { 

                        columnPath: "колонка справочника, которая сортируется", 

                        direction: Terrasoft.OrderDirection.ASC 

                  }

            ]

        } 

    }

Одеяненко Юлия,

 

Дополню твой ответ, что этот кусок кода должен быть размещен на странице в attributes {}

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

Добрый День, есть задача обоготить данные контактов с linkidin. Кто сталкивался с этим? 

Нравится

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

Здравствуйте, Иван!

 

На текущий момент в базовой версии системы интеграция с LinkedIn не реализована.

Вы можете реализовать её самостоятельно с помощью API.

Более детально можно ознакомиться в статье Академии: https://academy.terrasoft.ru/documents/technic-sdk/7-11/integraciya-s-s…

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

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

Кейс:

Возникла потребность запуска "Действия процесса" (аналог элемента "Выполнить действие процесса") скриптом.

Речь идёт о действии FillEmailTemplateUserTask - обработать шаблон письма с макросами.

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

Необходимо:

1) Вызвать скриптом Обработку подготовленного шаблона, передавая в него необходимые параметры такие как:

RecordId

TemplateId

SysEntitySchemaId

2) Создать активность типа email.

В тело и тему подставить соответственно Subject и Body, обработанные FillEmailTemplateUserTask.

 

Пример выполняемого скрипта:

var userConnection = Get<UserConnection>("UserConnection");
 
var processEmailTemplateUserTask = new FillEmailTemplateUserTask(userConnection);
//передал Guid шаблона
    processEmailTemplateUserTask.TemplateId = new Guid("7EDBEDDE-9E1E-4D80-953D-B7652E6B5F97");
//get UId схемы объекта Изменение
    processEmailTemplateUserTask.SysEntitySchemaId = Get<Guid>("UsrSysShemaUId");
//get Id записи объекта Изменение
    processEmailTemplateUserTask.RecordId = cangeId;
    processEmailTemplateUserTask.Execute(context);
        
var activity = new Terrasoft.Configuration.Activity(userConnection);
    activity.SetDefColumnValues();
    activity.TypeId = Terrasoft.Configuration.ActivityConsts.EmailTypeUId;
    activity.Recepient = "testRecepient@yandex.ru";
    activity.Title = processEmailTemplateUserTask.Subject;
    activity.Body = processEmailTemplateUserTask.Body;
    activity.ChangeId = cangeId;
    activity.IsHtmlBody = true;
    activity.Sender = "testSender@yandex.ru";
    activity.Save();

Проблема:

Пытаюсь передать в создаваемую активность Title и Body после выполнения по идее элемента FillEmailTemplateUserTask.

Однако БП завершается с ошибкой: "Заголовок должен быть заполнен" (обязательная колонка). То есть На моменте создания активности я не получаю обработанной темы и тела письма шаблона с макросами.

 

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

Такое впечатление, что просто не правильно задаю Execute или чего-то не хватает.

 

Нравится

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

Добрый день!!

Элемент [Задание сценарий] не предназначен для запуска и обработки элементов процесса.

Попробуйте использовать связку [Выполнить действие процесса] + [Задание-сценарий]. В ScriptTask замапиться на параметры элемента [Выполнить действие процесса - > Обработать шаблон письма с макросами].

Зарицкий Олег,

Спасибо за информацию! Вытащили скрипт действия в методы!

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

Доброго времени суток!

Версии 7.10.1

Работаю в своей базе. Создал мастером на заказе вторую страницу. Сгенерированное

мастером название переименовал на OrderPageRequestV2. Все работает.

Залился в хранилище. После восстановления из хранилища в другой базе выбираю по кнопке "Добавить" вторую страницу. Она открывается. После заполнения и сохранения закрываю. Вновь открываю заказ, но открывается почему-то первая страница OrderPageV2. Если в адресной строке поменять OrderPageV2 на OrderPageRequestV2, то откроется OrderPageRequestV2. Зашел в мастер, а там почему-то в настройках "Использовать одну страницу для всех записей". Пробовал перегенерировать коды, скомпилироваться еще раз, обновить структуру бд, установить данные. Не помогло. Начал сравнивать таблицы двух бд.

Обнаружил:

1)В таблице SysModule(база, где имеется проблема) в записи Заказы в поле Attribute

отсутствует значение. Скопировал, добавил

2)В таблице SysModuleEdit запись, где в поле CardSchemaUId должно содержать Uid второй страницы,

отсутствовало. Добавил.

Не помогло.

Может еще в каких-то таблицах нужно проверить?

Заранее благодарен

 

Нравится

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

Кирилл, здравствуйте!

Если мы правильно понимаем, то у Вас слетела типизация страниц. Вам необходимо в SysModuleEntityId для нужного раздела прописать TypeColumnUId. Примерный скрипт ниже: 

DECLARE @TableName SYSNAME = 'Contact'; -- название объекта

DECLARE @ColumnName SYSNAME = 'TypeId'; --- название колонки по которой происходит типизация

DECLARE @EntitySchemaColumnUId UNIQUEIDENTIFIER;

SELECT

@EntitySchemaColumnUId = CAST(value AS UNIQUEIDENTIFIER)

FROM fn_listextendedproperty (NULL, 'schema', 'dbo', 'table', @TableName, 'column', @ColumnName)

WHERE name = 'TS.EntitySchemaColumn.UId';

 

UPDATE sme

SET sme.TypeColumnUId = @EntitySchemaColumnUId

FROM SysModuleEntity sme

JOIN SysModule sm ON sme.Id = sm.SysModuleEntityId

WHERE sm.Code = @TableName;

спасибо

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

Добрый день!

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

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

С чем это может быть связано?

И еще в описании говорится про элемент "Звонок", но на изображениях этого раздела он отсутствует, он каким-то образом отображается в зависимости от наличия интеграции с телефонией?

Нравится

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

Возможно, был замещен модуль SchemaDesigner, нужно проверить есть ли такой модуль в пакете Custom в конфигураторе.

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

Логвин Андрей Витальевич,

Да, модуль SchemaDesigner и правда замещен.

Спасибо, буду разбираться дальше!

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

В рамках конкурса для аналитиков и разработчиков на лучшую бесплатную настройку или расширение для bpm'online хочу предложить решение, которое поможет небольшим компаниям бесплатно закрыть задачи по созданию небольших бизнес-процессов по обслуживанию. А крупным компаниям - оперативно реагировать на появление новых запросов от клиентов по обслуживанию.

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

Ссылка на Marketplace  https://marketplace.terrasoft.ru/template/sozdanie-shablonnogo-nabora-z…

Для оперативного реагирования на развитие и изменение процессов компании создан механизм "Создание шаблонного набора задач".

Что нужно уметь Пользователю? Внести новую запись в справочник "Шаблоны задач" и создать несколько задач, прописав ответственного, сроки решения и последовательность исполнения. 

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

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

 

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

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

Нравится

Поделиться

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

Спасибо, отличное решение!

bill gate,

Спасибо, работаем ради интересов Заказчиков. 

Радуем Клиентов качеством услуг и отношением

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

Лазоренко Ирина пишет:

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

Отличное решение

Лазоренко Ирина,

Ирина, добрый день. Согласна с Владимиром.

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

Есть и другие: В моем решении можно отслеживать исполнение итогового значения всей совокупности задач.

Хочу обратить внимание на то, что решение разрабатывалось для версии bpm`online servise. Для службы поддержки.

Бизнес-кейс: Создано обращение от руководителя департамента по обновлению программного оборудования для всех подразделений компании с заменой оборудования в течение трех месяцев. Это совокупность задач по подбору ПО, подбору компьютеров для каждого подразделения отдельно, возможно по прокладке новых сетей(провода кабели), раздачи прав доступа и т.п. Формируем шаблон задач( для каждого специалиста). Вставляем его в обращение. Через месяц, что-то меняется. Создаем новый шаблон. В этом же обращении удаляем название старого шаблона, Вместо него вставляем название нового шаблона.Все задачи по старому шаблону автоматически отменяются, новые задачи создаются. Всем пользователям уходит оповещения. Удобно?

Есть много мелких задач. Например по поддержки разных видов ПО (1С, Зибель), когда требуется участие нескольких специалистов. Можно быстро создавать требуемого количество активностей. Пожалуй, это самое важное, что требуются клиенту: для формирования шаблонов нужно просто перейти в раздел "Активности" .

Интересное решение

 

Милова Марина Федоровна,

Зибель по Русски, да?

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

Подскажите как в отчете Word реализовать что бы сумма была прописью

Нравится

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

Реализуйте VIEW, который возвращает сумму и используйте его в отчете

скажите пожалуйста, а как его использовать

1) В базе данных bpm'online есть Scalar-value functions "tsp_nonbox_NumberToCurrency" и "tsp_nonbox_NumberToPhrase" - они конвертируют цифры в слова. Если необходимы другие языки или валюты, можно их модифицировать.

2) Необходимо сделать View с выборкой из таблицы Invoice (или другой, где хранится ваша сумма).

Можно добавить в этот View все данные, которые нужны в отчете



Как пример (в нем используются несколько полей, так как иногда требуется печатать прописью то одну, то другую сумму):

CREATE VIEW [dbo].[UsrVwInvoiceAmount]

AS

SELECT [Invoice].[Id] AS [Id],

        [Invoice].[Id] AS [UsrInvoiceId],

        [Invoice].[Number] As [UsrInvoiceName],

        [Invoice].CreatedOn, 

        [Invoice].CreatedById, 

        [Invoice].ModifiedOn,

        [Invoice].ModifiedById,

       [Invoice].[Amount] AS [UsrAmount],

       [Invoice].[PrimaryAmount] AS [UsrPrimaryAmount]               

       dbo.tsp_nonbox_NumberToCurrency([Amount],'EUR','LV',0) AS [UsrAmountText],

       dbo.tsp_nonbox_NumberToCurrency([Amount],'EUR','EN',0) AS [UsrAmountTextEN],

       dbo.tsp_nonbox_NumberToCurrency([PrimaryAmount],'EUR','LV',0) AS [UsrPrimaryAmountText],

       dbo.tsp_nonbox_NumberToCurrency([PrimaryAmount],'EUR','EN',0) AS [UsrPrimaryAmountTextEN]

     

FROM  [Invoice]

 

2) В bpm'online создаете объект на основе этого VIEW:

3) Создать отчет на основе этого объекта или подключить этот объект к отчету на основе Invoice

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

Здравствуйте. При создании запроса возникает ошибка

сообщение: 4121, уровень: 16, состояние: 1, процедура: UsrVwInvoiceAmount, строка: 11 [строка начала пакета: 0]

Не удалось найти столбец "dbo", определяемую пользователем функцию или агрегатную функцию "dbo.tsp_nonbox_NumberToCurrency". Также возможно, имя является неоднозначным.

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

Для вывода поля «Сумма» прописью необходимо при создании шаблона добавить в выбранные поля не только поле «Сумма», но и поле, соответствующее сумме с примененным макросом (наглядный скриншот - http://prntscr.com/hnov0o). Данный макрос является преднастроенным, и его можно добавлять уже на этапе настройки колонок. При формировании шаблона непосредственно в MS Word необходимо добавлять на страницу шаблона именно колонку с заголовком Сумма[#NumberRU#].

Ссылку на Академию со статьей о базовых макросах очень кстати запостил Кропотов Александр Сергеевич в сообщении выше.

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

Добрый день.

Необходимо установить сортировку данных пользовательского раздела по умолчанию по определённому полю объекта.

В BaseSectionV2 используются атрибуты: "sortColumn", "SortColumnIndex", "GridSortDirection".

Так же в свойствах объекта есть свойство "Сортировка в списках".

Но установка значений этих атрибутов и свойства не решила задачу.

Прошу подсказать как решить данный кейс

Нравится

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

Добрый день

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

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

Есть обьект "Контакты". По которым приходят уведомления в панель CTI.

Скажем если в обьекте "Контакты" есть поле X в котором можно выбирать значения от 1 - 5.

Вопрос: Можно ли отображать иконку с номером в зависимости от того какое значение выбрано в поле X?

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

 

Нравится

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

Добрый день, 

Да, можно отобразить иконку с номером в зависимости от того, какое значение выбрано в поле Х.

Для начала необходимо создать замещающий объект контакта, в который добавить поле Х.

После создать замещающий клиентский модуль, где в качестве родительского необходимо указать CtiPanelCommunicationHistoryUtilities (Модуль истории звонков CTI панели). И необходимо переопределить следующие методы: 

addCommunicationHistoryQueryColumns - необходимо добавить поле Х контакта, для того чтобы иметь возможность вычитывать значения этого поля.

getHistoryPanelConfig - тут необходимо реализовать собственную логику отображения иконки. В базовой версии: Photo: historySubscriber.get("ContactPhoto").value устанавливается фото контакта. 

 

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

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

Появилась необходимость реализовать отдельную сортировку по умолчанию в Grid'е детали.

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

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

После этого происходит стандартное добавление выбранных записей в деталь.

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

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

Так же что-то удалось найти в diff на BaseGridDetail который соответствует сортировке, но как-то это тоже ни к чему не привело.

Есть мысль что при загрузке коллекции в методе onGridDataLoaded получать коллекцию и при помощи underscore.js сортировать её как угодно, но вроде как это накладно и производительней было бы получить уже отсортированную коллекцию.

У кого какие предложения/идеи будут по данному посту?

Нравится

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

Добрый день. Не очень понял, а почему "я уперся в GridUtilites и решил дальше не лезть"? Можно же функцию из миксина переопределить в схеме самой детали, сославшись на родительскую, если нужно, через this.mixins.GridUtilitiesV2.... . На вскидку, вроде надо "допилить" initQuerySorting ???

типа такого:

 

initQuerySorting: function(esq) {

    this.mixins.GridUtilitiesV2.initQuerySorting(esq);

    /* далее какие-то ваши действия с esq */

}

 

Или наоборот, сначала - ваша сортировка, потом - родительский метод.

Иванов Александр А.,

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

Да, было бы неплохо. Посмотреть, к тому же, насколько отличается от моей мысли. ))

initQuerySorting: function(esq) {
	var createdOnColumn = esq.addColumn("KmName", "Name");
	createdOnColumn.orderDirection = this.Terrasoft.OrderDirection.ASC;
}

Всё свелось к тому что такой путь посоветовала Тех. поддержка. А у меня там уже простынка такая строчек на 100 была как коллекцию грида сортироватьlaugh

Кисловский Михаил Андреевич,

Ну да, только тут остальная сортировка "идёт лесом". Поддержка, как всегда, короче... smiley

Иванов Александр А.,

Ну с остальной сортировкой да. Но в целом можно выкрутиться думаю если захотеть) 

Я, наверное, тогда промолчу про 

getGridDataColumns: function() {
	return {
		"Id": {path: "Id"},
		"TmName": {path: "TmName"},
		"TmStartDate": {path: "TmStartDate", orderPosition: 0, orderDirection: Terrasoft.OrderDirection.DESC},
		"TmStudios": {path: "TmStudios", orderPosition: 1, orderDirection: Terrasoft.OrderDirection.DESC}
	};
},

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

Варфоломеев Данила,

спасибо, что не промолчал ;)

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