удаление записей
7.10
studio

Добрый день коллеги.

При попытке удалить Изменение из раздела "Изменения"

DELETE FROM [dbo].[Change]

Where Number = 'CR00001863'

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

The DELETE statement conflicted with the REFERENCE constraint "FK5Kbu9RCt70eQZWfPa41rONXsAM". The conflict occurred in database "NameDB", table "dbo.SysChangeRight", column 'RecordId'.

Залез в таблицу dbo.SysChangeRight - да, там есть записи с данным Id изменения.

Вопрос: достаточно ли будет удаления из таблицы dbo.SysChangeRight записей с Id.изменения, чтобы получить возможность выполнить верхний скрипт? 

Нравится

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

Необязательно. Вдруг есть ещё ссылки из других таблиц.

А вообще, в таблице SysChangeRight должна быть каскадная связь на поле RecordId, чтобы удаляло вместе с основной записью автоматически. Если нет, можно добавить, поставив галочку в объекте.

 

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

Ссылки из других таблиц были - (деталь: активности) - они удалились каскадно средствами дизайнера. Не удалились каскадно, средствами дизайнера, история по данному Изменению и Согласование данного изменения - это все я "навернул"  запросом в SQL. А дальше - проблема, описанная выше...

Если каскадной связи нет, можно удалить из SysChangeRight запросом.

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

Спасибо, действительно после удаления из таблицы SysChangeRight смог удалить и само изменение. 

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

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

 

Нравится

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

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

if (this.isAddMode()) {....вызов функций...}

Показать все комментарии
Сортировка
спарвочник
7.10
sales

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



"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…

Показать все комментарии
ScriptTask
Действие процесса
7.10
sales_enterprise

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

Кейс:

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

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

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

Необходимо:

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

RecordId

TemplateId

SysEntitySchemaId

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

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

 

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

var userConnection = Get("UserConnection");

var processEmailTemplateUserTask = new FillEmailTemplateUserTask(userConnection);
//передал Guid шаблона
    processEmailTemplateUserTask.TemplateId = new Guid("7EDBEDDE-9E1E-4D80-953D-B7652E6B5F97");
//get UId схемы объекта Изменение
    processEmailTemplateUserTask.SysEntitySchemaId = Get("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 и правда замещен.

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

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

Подскажите как в отчете 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 устанавливается фото контакта. 

 

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