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

Нашел инструкцию в "Терасофт академии" https://academy.terrasoft.ru/documents/technic-sdk/7-10/primer-ispolzovaniya-vstroennogo-processa-obekta-dobavlenie-avtonumeracii-k-polyu-stranicy 

Выполнил все по инструкции, но не удалось настроить данное поле(ничего не происходит, номер не присваивается и не генерируется). Можете помочь в данной ситуации? Возможно есть другие инструкции по выполнению данной операции? Или другие шаги выполнения? Заранее Благодарю!

Нравится

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

Fenix Agro,

Проверьте, у Вас должно быть 2 системные настройки и называться они должны по-особенному.

Для использования механизма автонумерации независимо от выбранного варианта решения, необходимо добавить две системные настройки:
 
[Entity]CodeMask — маска номера объекта,
[Entity]LastNumber — текущий номер объекта,
где [Entity] — это наименование того объекта, к колонке которого будет применяться автонумерация. Например, InvoiceCodeMask (Маска номера счета) и InvoiceLastNumber (Текущий номер счета).

В примере на Академии [Entity] называется 'Invoice'.

Добрый день,

А какой вариант из двух предложенных вы реализовывали? В карточке или во внутреннем бизнес-процессе объекта? На фронте проще отладить проблему - можно просто отладчиком в браузере посмотреть что возвращает сервис.

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

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

Fenix Agro,

Проверьте, у Вас должно быть 2 системные настройки и называться они должны по-особенному.

Для использования механизма автонумерации независимо от выбранного варианта решения, необходимо добавить две системные настройки:
 
[Entity]CodeMask — маска номера объекта,
[Entity]LastNumber — текущий номер объекта,
где [Entity] — это наименование того объекта, к колонке которого будет применяться автонумерация. Например, InvoiceCodeMask (Маска номера счета) и InvoiceLastNumber (Текущий номер счета).

В примере на Академии [Entity] называется 'Invoice'.

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

Так как раздел у меня называется "Продажи new" его код 

"CHOpportunityNew" , создал для него две настройки "Маска номера продажи new" с кодом "CHOpportunityNewCodeMask" и "Текущий номер продажи new" с кодом "CHOpportunityNewLastNumber" .  Верно сделал? Поле с номером -  название "Номер" код "CHNumber" 

Fenix Agro,

Нужно смотреть не на код раздела, а на название схемы таблицы раздела. Если таблица раздела тоже называется "CHOpportunityNew", значит верно.

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

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

Доброе утро!

Подскажите можно ли как то перезапустить процесс с выполненного шага?

Например сотрудник при завершении активности выполнил активность не с тем результатом - как можно откатиться до данной активности? Или может есть другие пути решения?

Нравится

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

Доброе утро!

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

Также нужно найти активность, которая соответствует данному элементу и у неё тоже изменить статус на не конечное значение, например, 'В работе'.

После этого вручную запустить на выполнение элемент процесса через кнопку [Выполнить элемент].

Доброе утро!

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

Также нужно найти активность, которая соответствует данному элементу и у неё тоже изменить статус на не конечное значение, например, 'В работе'.

После этого вручную запустить на выполнение элемент процесса через кнопку [Выполнить элемент].

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

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

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

Не подскажете, есть ли возможность в серверном коде сформировать стандартную строку подключения к SQL Server, используя данные из UserConnection? Нужно динамически сформировать и выполнить сложный запрос, и штатными средствами BPM Online никак не получается подступиться к этой задаче.

Нравится

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

Для таких целей можно использовать CustomQuery в примере ниже sql текст вашего sql

var userConnection = Get<UserConnection>("UserConnection");
string sql =" ......."; 
 
CustomQuery myQuery = new CustomQuery(userConnection);
myQuery .SqlText = sql;
using (DBExecutor dbExecutor = userConnection.EnsureDBConnection())
{
    dbExecutor.CommandTimeout = 0;
    myQuery .Execute();
}
 
return true;

 

Для таких целей можно использовать CustomQuery в примере ниже sql текст вашего sql

var userConnection = Get<UserConnection>("UserConnection");
string sql =" ......."; 
 
CustomQuery myQuery = new CustomQuery(userConnection);
myQuery .SqlText = sql;
using (DBExecutor dbExecutor = userConnection.EnsureDBConnection())
{
    dbExecutor.CommandTimeout = 0;
    myQuery .Execute();
}
 
return true;

 

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

Добрый день,



можете сказать мне, если есть в системе настройка, для удаления письмо в Exchenge при удалении из bpm'online, если нет, то подскажите какие таблицы используется для синхронизаций почты (или какие объекты) откуда я могу получить информацию.



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

Нравится

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

Доброе утро, Владимир!

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

Все письма хранятся в таблице Activity с типом TypeId равной Id из таблицы ActivityType c названием 'Email':

select count(*)

from Activity

where TypeId = (select Id from ActivityType where Name = 'Email')

Возможно, Вам будет интересна статья по механизму синхронизации bpm'online и Exchange.

Доброе утро, Владимир!

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

Все письма хранятся в таблице Activity с типом TypeId равной Id из таблицы ActivityType c названием 'Email':

select count(*)

from Activity

where TypeId = (select Id from ActivityType where Name = 'Email')

Возможно, Вам будет интересна статья по механизму синхронизации bpm'online и Exchange.

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

Привет.

bpm sales 7.13.4

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

Для этого был создан модуль WiseEquipmentCatalogueFolderManagerViewModelV2 по примеру ProductCatalogueFolderManagerViewModel и аналогичным образом подсоединил к схеме секции: 

properties: {
	folderManagerViewModelClassName: "Terrasoft.WiseEquipmentCatalogueFolderManagerViewModelV2"
},

При переходе в кастомный раздел моя ViewModel не подгружается и в логе следующие ошибки: 

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

Что самое странное в глобальном объекте Terrasoft нету моего класса при этом присутствует класс из продуктов(по аналогии которого я делаю и который работает):

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

Есть идеи?

*Все компилировал и генерировал

Нравится

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

Судя по 404, веб-сервер по запросу не может найти файл с определённым именем. Попробуйте посмотреть в Fiddler, в чём отличия запросов между нормально работающим и новым разделом. Наконец, кроме компиляции может потребоваться просто перезапуск сайта или чистка Redis.

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

перезапуск и очистка не помогла.

Вопрос:

1. Почему моей модельки нету в объекте Terrasoft, а моделька продуктов присутствует?

2. Какая "правильная" последовательность действий для создания модуля ViewModel при котором он появится в объекте Terrasoft?

*Потому что мне кажется проблема именно в этом.

Порядок создания описан тут.

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

может вы знаете каким образом в об. Terrasoft попадают модельки схем? 

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

подскажите пожалуйста, каким образом можно править код базовых модулей? К примеру FolderManagerViewModel(как оказалось тут и реализован функционал каталога продуктов). Если не ошибаюсь замещение с 7.13+ уже не работает.

Андреев Андрей Сергеевич,

Реализуйте по аналогии свое собственное окно и с ним работайте.

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

Создал свои модули на основании ниже перечисленных после чего переопределив свойства в схеме раздела:  

folderManagerViewConfigGenerator: "FolderManagerView",
 
folderManagerViewModelConfigGenerator: "FolderManagerViewModel",
 
folderManagerModuleName: "FolderManager",

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

*Лог пуст

 

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

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

Версия 7.11

создаю уведомления пользователю

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

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

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

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

Нравится

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

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

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

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

Нравится

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

Коваленко Илья,

var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
	rootSchemaName: "Contact"
});
esq.addColumn('Id');
esq.filters.addItem(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, 'Name', name));
esq.getEntityCollection(function(response)
{
	if(response.success)
	{
		var entities = response.collection.getItems();
		Terrasoft.each(entities, function(item){
			var id = item.get('Id');
		});
	}
});

 

Добрый день!

Без дополнительного запроса в базу для получения id справочника по названию (например) не получится сделать.

Если справочник не планируется изменять, то значения справочника лучше вынести в константы.

Сидоров Александр В., Можете показать пример такого запроса?

Коваленко Илья,

var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
	rootSchemaName: "Contact"
});
esq.addColumn('Id');
esq.filters.addItem(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, 'Name', name));
esq.getEntityCollection(function(response)
{
	if(response.success)
	{
		var entities = response.collection.getItems();
		Terrasoft.each(entities, function(item){
			var id = item.get('Id');
		});
	}
});

 

Сидоров Александр В.,

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

esq.rowCount = 1

 

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

Согласен. Но справочник может быть не уникален по имени. Поэтому и привел пример со списком, где надо делать постобработку

Сидоров Александр В.,

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

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

Добрый день всем. Создаю деталь, она должны быть как выпадающее окошко для заполнения данных, а у меня вышла как новая страница, на которой заполняются данные. Первый скрин - как у меня вышло, второй - как должно быть.Изображение удалено.Изображение удалено.

Нравится

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

К сожалению, возможность создавать деталь с редактируемым реестром с помощью мастера отсутствует.

Подробнее о создании такой детали через конфигурацию можно почитать в статье.

К сожалению, возможность создавать деталь с редактируемым реестром с помощью мастера отсутствует.

Подробнее о создании такой детали через конфигурацию можно почитать в статье.

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

Здравствуйте, выполняю вот такое задание:

Реализовать следующую логику: 

при добавлении новой записи 

«Задолженности» должна производиться выборка всех договоров данного должника, 

суммирование значений полей «Общая сумма задолженности», 

«Основной долг», «Штрафы», 

«Проценты и комиссии» данных записей объекта 

«Договоры» и запись в соответствующие поля текущей записи объекта «Задолженности». 

Реализуется с помощью бизнес процесса, который запускается по событию «Добавление записи» текущего объекта

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

 

Нравится

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

Действительно, как подсказал выше Александр  используя в элементе чтения данных параметр [СЧИТАТЬ ФУНКЦИЮ] = Сумма, а потом элемент Измtнить данные позволяет избежать кодирования :)

Добрый день!

Данные из коллекции нужно считывать так:

var entities = Get<ICompositeObjectList<ICompositeObject>>("ReadDataUserTask1.ResultCompositeObjectList");

Т.е. в вашем случае код будет таким:

var entities = Get&lt;ICompositeObjectList&lt;ICompositeObject&gt;&gt;("ReadDataUserTask1.ResultCompositeObjectList");
 
var result = 0;
 
foreach(var entity in entities) 
{
    	var sum = 0d;
    	if (entity.TryGetValue&lt;double&gt;("Sum", out sum))
    	{
    		result += sum;  
    	}
}

 

Сидоров Александр В.,

Т.е. мне надо использовать задание-сценарий? А как потом из него получить это значение для записи? Или мне все в одном сценарии можно выполнить?

Можно использовать не скрипт, а блоки чтения и изменения данных.

Действительно, как подсказал выше Александр  используя в элементе чтения данных параметр [СЧИТАТЬ ФУНКЦИЮ] = Сумма, а потом элемент Измtнить данные позволяет избежать кодирования :)

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

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

При включении визирования дизайнер виснет, а в консоле выбивает ошибку:

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

Кто сталкивался с этим?

Нравится

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

Прошел день, свершилось чудо, ничего нигде не менял. Зашел в менеджер и попробовал еще раз включить визы - пошла компиляция, визы создались. 

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