Добавление и удаление строк блока

Добавление строки в блок

В случае, если требуется добавить новую запись блока, используется метод context.Block.Add(item) – в этом случае запись отметится как "добавленная" и при сохранении контекста (в задаче бизнес-процесса (БП) Действия – Сохранить или при переходе на следующий этап БП) данные автоматически сохранятся.

В случае, если требуется сохранить добавленные записи блока скриптом, необходимо сохранить родительский объект, например, в задаче БП это контекст процесса context.Save(). Если в задаче БП изменяется блок, находящийся в экземпляре объекта контекстной переменной, необходимо сохранить экземпляр этого объекта.

Ниже представлен пример заполнения полей задачи.

При нажатии на кнопку Сохранить выполняется следующий сценарий:

public virtual void Save (Context context, EleWise.ELMA.Model.Views.FormViewBuilder<Context> form)
        {
            if (context.Name != null)
            {
                var result = InterfaceActivator.Create<P_RabotaSBlokamiVScenarii_Nomenclature>();
                result.Name =context.Name;
                result.Sum = context.Amount * context.Cost;
                context.Nomenclature.Add(result);
            }
        }
Внимание!
При работе с элементами блока (item-ы) НЕ НУЖНО вызывать метод item.Save(), так как это может привести к нарушению целостности базы данных.

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

Удаление строки блока

В случае, если требуется удалить запись блока, используется метод context.Block.Remove(item).

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

public virtual void Delete (Context context, EleWise.ELMA.Model.Views.FormViewBuilder<Context> form)
        {
            foreach (var item in context.Nomenclature.ToList()) // для каждого элемента блока
                {
                    if (item.Sum == null) // если поле не заполнено
                    context.Nomenclature.Remove(item);    // то удаляем этот элемент блока
                }
        }

На рисунке ниже изображен заполненный блок.

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

Удаление всех строк блока

В том случае, если необходимо полностью удалить строки блока из БД, необходимо воспользоваться следующим сценарием:

public virtual void Delete (Context context, EleWise.ELMA.Model.Views.FormViewBuilder<Context> form)
        {
            foreach (var item in context.Nomenclature.ToList()) 
                {
                    context.Nomenclature.Remove(item);
                     item.Delete();
                }
        }

Ниже представлен результат удаления всех элементов блока с помощью кнопки Удалить значение.