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

Нравится

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

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

 

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

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

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

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

Добрый день!

Создал БП, запускаемый по расписанию. Для этого выбрал в качестве начального элемента Стартовый таймер. Наблюдаю следующую ситуацию: при первом запуске процесс отрабатывает (статус завершено), после чего во время следующего срабатывания по таймеру новый экземпляр процесса висит в состонии Выполняется, но не один из элементов процесса не находится в состоянии Выполняется. В БД, в таблице QRTZ_TRIGGERS, данный триггер висит в WAITING.

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

Нравится

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

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

Проблема связана с тем, что новый элемент [Стартовый таймер] некорректно обрабатывается компилируемым движком процессов.

В коробочной версии проблема будет исправлена в следующих версиях продукта (http://tscore-task/browse/CRM-35624).

Пока для решения задачи необходимо:

1. В настройках процесса убрать признак “Компилировать”.

2. В расширенных настройках ScriptTask установить признак “Для интерпретируемого процесса”. Переписать код в ScriptTask под интерпретируемый движок.

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

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

Установил приложение из маркетплейс https://marketplace.terrasoft.ru/app/change-log-bpmonline

Но не могу зайти в ее настройки, система пишет, что у меня не достаточно прав http://prntscr.com/hfoe1d, хотя я администратор системы. Что с этим сделать можно? 

Нравится

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

Добрый день.

 

Вы можете посмотреть полную инструкцию к продукту на сайте: https://samarasoft.com/changelog/

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

Для возможности настройки журналирования вам необходимо добавить доступ пользователю или роли для операции "Доступ к разделу "Журналирование""

Толмачев Дмитрий Юрьевич,

Спасибо, Дмитрий!

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

Коллеги, здравствуйте.

 

Где в коде можно изменить "название контрагента" на "название компании"?

Раздел контрагент переименован в компании.

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

Заранее спасибо

Нравится

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

Такое переименование влечет за собой переименование во всех карточках, деталях, сообщениях, справочниках, отчетах....

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

вносить изменение в accountProfileSchema. Менять эту функцию

getProfileHeaderCaption: function() {
	var masterColumnInfo = this.get("MasterColumnInfo");
	return (masterColumnInfo && masterColumnInfo.caption) ? masterColumnInfo.caption : "";
}

 

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

Наткнулся на ужасную проблему производительности при создании представления в БД.

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

Но мне потребовалась небольшая агрегация данных, я сделал View.

В итоге SELECT * FROM myView WHERE UsrMyId = '' отрабатывает мгновенно, но при создании детали на этом представлении система генерирует какой-то бешеный запрос

exec sp_executesql N'
SELECT
    [myView].[Id] [Id],
 
...мои поля...
    (
SELECT
    COUNT([SubEntryPoint].[Id]) [Count]
FROM
    [dbo].[EntryPoint] [SubEntryPoint] WITH(NOLOCK)
WHERE
    [SubEntryPoint].[EntityId] = [myView].[Id]
    AND [SubEntryPoint].[IsActive] = @P2) [SubEntryPoint]
FROM
    [dbo].[myView] [myView] WITH(NOLOCK)
WHERE
    [myView].[UsrMyId] = @P1
ORDER BY
    [UsrServiceName] ASC OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY',N'@P1 nvarchar(32),@P2 bit',@P1=N'bc1fc0d8f6d98c04b93a8fb1070f4766',@P2=1

который дико бешено тормозит!

Можно ли заставить деталь сделать более простой и очевидный запрос?

Нравится

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

В подзапросе происходит выборка бизнес-процесов, привязанных к определенным обьектам, которые находяться в стадии выполнения. Скорее всего у вас эта таблица БД имеет очень большое количество записей, т.е. у вас очень много незавершенных бизнес-процессов. Проверьте количество записей в таблице EntryPoint.

Мотков Илья,

Количество записей в таблице EntryPoint равно 0. разумеется мы это проверили.

Вообще, интересно, что когда я развернул  этот запрос без exec sp_executesql и подставил параметры, всё отработало быстро. А вот с процедурой в тысячу раз медленнее.

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

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

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

Версии 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 и правда замещен.

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

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

Коллеги, Доброго дня.

По требованиям в системе был создан новый раздел "Клиенты". Раздел "Контрагент" остался. 

Как правильно изменить связь в разрезе "контакт- контрагент" на "контакт-клиент".  Для контрагента контакты доступны через клиентов.

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

Заранее спасибо

Нравится

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

что-то тут не хватает в описании... чем клиент отличается от контрагента? 

Клиент - это новый созданный объект в системе. Для компании клиент и контрагент разные объекты по требованиям в ТЗ.

У одного клиента связь с контрагентами один ко многим.

 

 

>У одного клиента связь с контрагентами один ко многим.

А какое отношение контрагента с клиентом? Может такое быть, что контрагент "принадлежит" многим клиентам? Если нет, то достаточно в объект контрагента внести поле клиент и его проставлять. Можно еще будет сделать деталь для клиентов, где будут отображаться все контрагенты, у который клиент = текущему клиенту.

 

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

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

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

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

Приветствую, коллеги, вот вопрос. Есть некое поле (допустим поле "Name" в таблице "Printers"). Но поле не всегда корректно заполнено (т.е. вместо HP LJ 1100 например там содержится только "1100"), приходит при этом значение корректное (т.е. HP LJ 1100). Мне  же нужно выбрать такие записи таблицы, где значение Name входит во входящую строку (фильтр contain или LIKE SQL, только наоборот). Таким образом нужно сделать аналог вот такой sql функции:

SELECT Name, CHARINDEX ('1100', Name) as Pos

FROM [!test].[dbo].[Printer]

where CHARINDEX ('1100', Name) > 0

средствами esq. Это реализуемо вообще?

Нравится

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

Приветствую

Такую функциональность можно написать с помощью комбинации фильтров contain и not start with. А именно CONTAIN and NOT_START_WITH

Артем Гура,

Приветствую, прошу прощения, не понял? Левая часть выражения (значение Name в справочнике) равна "1100", правая часть выражения (строковая переменная) равна "HP LJ 1100". И как вы это себе представляете? Если бы наоборот было - так никаких проблем. То, что вы предлагаете будет выглядеть как: (xxxx.CONTAIN, Name, "HP LJ 1100") AND (xxxxx.NOT_START_WITH, "HP LJ 1100"), если я правильно понял? 

Дмитрий, тогда я не совсем понял :) 

К примеру данные:

1   HP Lj 1100
2   1100

Ваш запрос 

SELECT Name, CHARINDEX ('1100', Name) as Pos
FROM [!test].[dbo].[Printer]
where CHARINDEX ('1100', Name) > 0

выдаст одну запись: HP Lj 1100. При  этом, как я понял, параметр поиска будет = "1100"

Этот запрос на SQL можно и так сделать:

Select Name 
from ... [Printers]
where 
   Name like '%1100%' 
and
   Name not like '1100%'

если перевести на ESQ, то 

Name like '%1100%'     - это CONTAIN
Name not like '1100%'  - это NOT_START_WITH

при этом входящим параметром будет "1100"

Таким образом вы найдете все строки, в которые входит 1100, но не начинается с "1100"

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

Всем доброго времени суток.

Версия 7.11.



В карточке можно управлять видимостью колонок в зависимости от значения некоторой из колонок объекта. К примеру, в карточке контрагента можно настроить видимость колонок таким образом, что колонки будут отображаться только в случае, если значение колонки Owner равно текущему контакту пользователя, либо текущий пользователь относится к роли системных администраторов. Для этого необходимо добавить bind видимости колонки на значение виртуальной колонки.



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

Нравится

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

Добрый день. А администрирование по полям эту задачу не решают?

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

... ну да, получается, что определённые колонки должен видеть только owner... правами надо заморочиться, чтобы такое сделать... к примеру прицепить событийный процесс "Перед сохранением", в котором пользователю из колонки Owner раздать права на чтение колонок, а остальным как-то запретить. Не доводилось подобных задач решать, но, может, как вариант...

 

Добрый день!

Если я правильно понял вопрос, то можно попробовать вклиниться в формирование грида (onGridDataLoaded в GridUtilitiesV2) и кодом делать соответствующие проверки и не показывать ненужные колонки.

Тёскин Дмитрий Валерьевич,

не помогло, к сожалению. Разобрал onGridDataLoaded и связанные функции, как я понял непосредственно генерация таблицы происходит в

addItemsToGridData, то есть в gridData.loadAll(dataCollection, options);

Для примера перед этим в prepareResponseCollectionItem там, где происходит перебор всей коллекции, добавляю

 if (!item.values.Address){

                    item.values.Address = "test";

                }

Просто ради теста. То есть если у меня колонка Адрес (выведена на страницу) пустая, то должно быть отображена строка "test". Это намного проще даже, чем проверка id пользователей.

И всё равно ничего не происходит - на странице загружаются по прежнему пустые блоки (и адреса, если они заполнены). При этом если вывести console.log(dataCollection); уже внутри addItemsToGridData, то есть непосредственно перед генерацией, там будут мои правки.

Здравствуйте, можете использовать для этих целей метод: loadGridData из схемы GridUtilitiesV2, и в колбеке esq запроса

esq.getEntityCollection(function(response) {

изменять коллекцию что находится в переменной response основываясь на данных из нее же.

К примеру:

response.collection.collection.items[0].set("Name", "");

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

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