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

Введется разработка в пользовательском пакете, нужно добавить текстовое поле в замещающий объект Файл таким образом, что бы другие объекты, такие как AccountFile, ContactFile, тоже унаследовались от моего объекта Файл и имели в себе новое текстовое поле.

Насколько я понял решение состоит в настройке зависимости пакетов, но не до конца понимаю как должна выставляться иерархия. В настройках пакета стоит зависимость от Base

Нравится

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

Илья, это разные явления,  замещение в разных пакетах схемы с одним и тем же именем и наследование (в одном или разных пакетах) одних схем от других с разными именами (например, ContactFile на основе базового File).

 

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

 

Видимо, Вам нужно заместить File в пакете Custom (или другом, где разрабатываете), добавить поле, сохранить и опубликовать. Затем в том же пакете Custom заместить уже AccountFile, ContactFile, где появится и новая колонка, тоже сохранить и опубликовать, чтобы новая колонка создалась в БД.

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

Подскажите, пожалуйста, как можно запустить процесс на объекте ПОСЛЕ исполнения процессов, определенных в родительском объекте?

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

Нравится

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

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

Вы можете использовать событийный слой и там разрабатывать обработку данных объекта, естественно после отработки базовой логики + событийный слой более гибкий том можно работать с данными как перед сохранением/изменением в бд так и после. Более детально в описано в данной статье.

Нигрескул Алексей пишет:

Вы можете использовать событийный слой и там разрабатывать обработку данных объекта

В статье написано, что Механизм событийного слоя Entity срабатывает после выполнения событийных подпроцессов объекта

Однако, в данном случае поле Code (заполняется в процессе объекта на OnSaved) оказывается пустым.



 

[EntityEventListener(SchemaName = "Account")] 
public class UsrAccountEntityEventListener : BaseEntityEventListener
 {
  public override void OnSaved(object sender, EntityAfterEventArgs e) {
    base.OnSaved(sender, e);
 
    var entity = (Entity) sender;
    var userConnection = entity.UserConnection;
 
    string accountCode = entity.GetTypedColumnValue<string>("Code");
 
    throw new Exception(entity.Schema.Name + " " + accountCode);

 

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

Зверев Александр пишет:

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

выяснили, что процесс выполняется первым, но в событийном слое у  entity нет тех значений, которые установились в процессе: https://community.terrasoft.ua/questions/poluchenie-znacheniy-v-sobytiy…

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

Привет всем, такой вопрос

Как можно заместить родительское сообщение в дизайнере процессов ?



Мне нужно заместить сообщение InvoiceSaved так что бы запускалось только моё сообщение без родительского.



(Это мне нужно для того что бы отключить автонумерацию после сохранения счета)



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

Нравится

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

Примерно так:

Заместить объект  добавить обработку сообщения InvoiceSaved  Добавить необходимую обработку (скопировать из родительского) и не вызывать родительскую обработку (те оборвать провал к родителю)

Чтобы отключить автонумерацию можно просто удалить системные настройки или что еще проще просто спрятать поле номер. Или вам нужно чтобы нумерация осталась но номер присваивался не автоматом?

Григорий Чех,

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

Я сделал дочерний процесс который работает в место этого, проблема была в том что после моего процесса начал выполнятся этот (родительский), мне нужно было его как то убрать, мне тут подсказали какой командой это можно сделать:

context.Process.ActivatedEventElements.Remove("InvoiceSaved");

 

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

Пытаюсь создать схему представления детали с полями по примеру из https://academy.terrasoft.ru/documents/technic-sdk/7-10/sozdanie-polzova... . Версия системы - 7.10.1.1161. В данном примере из документации при создании схемы представления детали с полями в качестве базового объекта нужно указать Base fields detail ( BaseFinance ), однако в выпадающем списке он отсутствует. Никак не могу понять, что именно я делаю не так. Буду признателен за любую помощь/подсказки.

Нравится

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

Проверьте, есть ли вообще в Вашей конфигурации такая схема, так как она есть только в банковских продуктах bpm'online — bank customer journey, bank sales и lending.
Если у Вас один из перечисленных выше продуктов и такая схема есть в Вашей конфигурации, тогда для того, чтобы её можно было указать в качестве базовой в Вашем пакете, Ваш пакет должен наследоваться от пакета Base Finance с этой схемой.

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