Добрый день!
1. Скажите, пожалуйста, в каких таблицах хранятся процессы, запущенные экземпляры процессов, журнал процессов
2. Есть ли где-то описание физической структуры данных базы bpm (схемы таблиц, связи, описание столбцов)

Нравится

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

Добрый день!

1. Это таблицы:

- SysProcessData;
- SysProcessElementData
- SysProcessLog
- SysProcessElementLog

2. Вся доступная информация есть на SDK: http://www.terrasoft.ua/bpmonlinesdk/
Выбрать в меню пункты:
BPMonline SDK/ Сборки/ Terrasoft.Common - сборка/ Terrasoft.Common - пространства имен/ Terrasoft.Common/ Terrasoft.Common - классы
Это описание наших объектов а не структурных сущностей базы bpm.

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

Продолжая тему (http://www.community.terrasoft.ru/blogs/7301), поднятую мной же, выкладываю как скрипт, формирующий документ с описанием функций, так и сам документ.

На данный момент описан пока только скрипт scr_DB (в планах описать, хотя бы частично, scr_WindowUtils). По остальным, наиболее используемым скриптам, надеюсь, мне помогут все желающие. :)

Правила формирования описаний функций:
1. Описываемые скрипты прописываются в параметре ScriptsArray (в самом верху скрипта scr_ConfigurationFunctionsDocument). На данный момент, как я писал выше, там прописан только scr_DB.
2. Для формирования комментариев к функциям следует придерживаться следующего формата:

/* Описание назначения функции
Входящие параметры:
Param1 - описание параметра;
Param2 - описание параметра
*/

function MyFunction(Param1, Param2) {
   ...
}

Сам скрипт scr_ConfigurationFunctionsDocument пробегается по всему содержимому и "выдергивает" комментарии перед функциями, обрамленные "/*" и "*/".

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

Нравится

Поделиться

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

Стас, спасибо большое!

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

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

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

В конфигурации отправка описана в скрипте scr_TaskUtils в функции function SendTaskEmailToContact(TaskDataset, AddressList)

Таким образом, Вам необходимо доработать функцию следующим образом:

function SendTaskEmailToContact(TaskDataset, AddressList) {
         if (GetDatasetFieldValue(TaskDataset, 'CycleTaskParamID')) {
                   var TemplateID = GetSystemParameterValueEx('CycleTaskEmailByContactTemplateID');
         } else {
                   var TemplateID = GetSystemParameterValueEx('TaskEmailByContactTemplateID');
         }
         if (IsEmptyGUID(TemplateID)) {
                   ShowErrorDialog(FormatStr(SystemParameterIsEmptyError,
                            'TaskEmailByContactTemplateID'));
                   return;
         }
         var ID = TaskDataset.Values('ID');
                   
         var FileName = System.CreateObject('TSObjectLibrary.Value'); //создаем объект файл
         FileName.Value = 'C:\\Test.rtf'                                             //определяем путь хранения временного файла
         TaskDataset.DataFields('Description').SaveToFile(FileName.Value);  //сохраняем описание в файл
         var Attachments = new Array(FileName.Value);                           //определяем, что данный файл будет аттачем
         
         var Service = Services.GetSingleItemByUSI('scr_MailUtils');
         Service.ScriptControl.CodeObject.SendEmailByTemplate(TemplateID,
                   {RecordID: ID, Address: AddressList, AutoSend: true,
                   SkipQueryAddresses: true, Attachments: Attachments}); //в этой строке добавлены аттачи
}

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

1. Откройте sq_Task и добавьте новую колонку Description:

img125
img126

Сохраните и закройте запрос.

2. Откройте датасет ds_Task и добавьте в него колонку типа большой бинарный объект:

img127
img128

Сохраните и закройте датасет.

3. Откройте scr_TaskUtils и внесите изменения в функцию отправки письма. Перезапустите клиент. Результат будет выглядеть следующим образом:

img129

Нравится

Поделиться

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

о, спасибо :biggrin:

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

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

Достаточно часто приходится настраивать импорт из MS Excel в Terrasoft CRM  и помогать в этом пользователям.
Уже получилось сложить свой список типичных "ошибок" пользователей.

Хотелось бы обратить внимание на следующие моменты:

1. Выбор основной таблицы. При выборе основной таблицы для импорта необходимо проанализировать Ваш шаблон, если в файле импорта, например, много данных по контрагенту (тип, адрес, средства, связи, и т.д.) и только одна колонка с ФИО основного контакта, то конечно же, Вам необходимо выбирать оснойной таблицей "Контрагент". Если у Вас в файле шаблона разнообразные данные, то необходимо применить творческий подход, а именно продумать, данные из каких колонок должны быть связанными. Можна выполнить импорт с включенной опцией "Обновлять существующие записи", чтобы избежать дублей и сделать привязку по конкретному полю.

2. Ошибка в журнале импорта: Syntax error converting from a character string to uniqueidentifier

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

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

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

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

5. При импорте необходимо заполнять все обязательные поля таблицы в которую Вы импортируете записи (отмечены красным). Система добавит недостающие поля (которых нету в настройках на закладку значений по умолчанию, Вам необходимо по ним пройтись и проставить произвольное значение) при нажатии в соответсвующем сообщении "Да".

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

Некоторые практические примеры и их описания прикреплены к сообщению.
Удачи!

Нравится

Поделиться

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

Татьяна,

Вы просто молодец! Заказчики очень ценят практическую сторону наших консультаций. А Вы эту самую сторону наполняете самым реальным содержанием. Здорово!

Владимир Сидоров
Рантайм

Простите, а для какой версии СRM здесь представлено руководство в import.rar?
Просто у меня версия 3,3,1
там утилита имеет другой вид, может просто я чего-то не знаю, и есть еще какие-либо дополнительные возможности настройки утилиты ...
С уважением Марат Мамажанов

Марат, руководство для версий 3.2.0-3.3.0.
Если возникнут вопросы по импорту в 3.3.1-обращайтесь, попытаемся помочь.

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

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

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

Да, Павел, значения по умолчанию работают только при первом импорте (вставке записи (Insert)).
Обычно решаю данную задачу с помощью выполнения запросов в Query Analyzer или в Management Studio на БД.
Если мои записи например, проимпортированы в конкретную группу и чтобы проставить значение города можно выполнить следующий запрос. Для того, чтобы узнать ID группы, в которую входят Ваши контрагенты, выполните следующий запрос:

select ID from tbl_AccountGroup 
 
where Name = 'Название группы'

Для того, чтобы узнать ID города:

select ID,Name from tbl_City

Далее, чтобы проставить город для данных записей, Вам необходимо проставить CityID (ID города), GroupID (ID группы)

update tbl_Account
 
set CityID = 'ED176633-FAA8-4288-8F43-A8433E3C686E'
 
where ID in (
 
     select a.ID from tbl_Account a
 
     left outer join tbl_AccountInGroup aig on a.ID = aig.AccountID
 
     where aig.GroupID = 'F079CA9C-F18F-4FC2-ABA7-6ECA791E9567')

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

update tbl_Account
 
set CityID = 'ED176633-FAA8-4288-8F43-A8433E3C686E'
 
where CreatedOn = '21.05.2009' 

Импорт.rar 963.75 кб не качается

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

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

В том случае если Вы импортируете многострочные данные в поле MemoDataContorol ("Описание") и в результате импорта они отображаются одной строкой, то эта проблема связана с особенностями Excel.
А именно, для того, чтобы данные переносились на другую строку, необходимы два знака: знак переноса строки и переноса каретки. В свою очередь в MS Excel не предусмотрен знак переноса каретки, поэтому после импорта данных из этого файла, данные помещаются все в одну строку. Для того, чтобы переносить данные на другую строку, необходимо в конфигурации программным образом добавить этот знак переноса каретки.

Для этого Вам нужно открыть сервис scr_DataflowExcelUtils.
В методе GetMemoryDatasetByDataflowItemNodeFromExcel после строки Stop = false; необходимо прописать следующее:

if (DataField.FieldType == dftString) {
Value = Value.replace(/\n/gi, '\r\n');
}

Сохраните внесенные изменения, перезапустите рабочее приложение Terrasoft CRM и протестируйте работоспособность системы.

Желаю удачи!

С уважением,
Мельникова Екатерина

Нравится

Поделиться

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

если нужно експортировать поле описание в формате rtf нужно только
создать action в окне воркспейса из которого планируэться импорт
и вызвать фн

function amiMyActionOnExecute(Control) {
  ExportFromWnd(Self);
}

+ добавить в используэмые скрипти scr_ExportUtils из атача
все остальное зделает фн

+ простота в использовании
- если в описании есть перевод строки в Excele описание будет разбито на несколько ячеек поетому я задаю смещение на ячейку
но если Вы уверены что у вас нет ентера в описании можете закоментировать строчку 96 DescIndex++;
- нельзя выбрать куда сохранять временные файли
- не удаляються временные файлы

Но ето все временно если решение заинтересуэт продолжу разработку :)

Нравится

Поделиться

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