Механизм шаблонов/черновиков в мастерах действий

8 6

Проектируя одно решение столкнулся с интересным требованием заказчика – реализовать возможность сохранения «черновика» мастера действия при его заполнении. Такой механизм будет полезен если при заполнении мастера действий есть несколько шаблонных вариантов, в которых необходимо изменять только небольшую часть данных. На первом шаге пользователь выбирает шаблон, а затем заполняет только небольшую часть недостающих данных.

В данной статье хочу описать один из вариантов решения данного требования. В конечном итоге в решении выбрали другой вариант реализации, но чтобы не терять идею решил сохранить её на память на клабе. Может кому и пригодится. Всё что описано ниже это концепт решения.
Для хранения данных шаблонов/черновиков мастеров действий создаем справочник WizardData.

Что хранится в справочнике думаю ясно по заголовкам реквизитов.

При запуске мастера действия, на первом шаге необходимо обеспечить выбор записи из справочника WizardData и заполнить мастер данными из выбранного шаблона. Перед показом справочника WizardData его нужно отфильтровать по коду мастера действий, автору или НОР. Если фильтровать по автору, то будут видны записи справочника, которые сформировал один пользователь (механизм черновиков). Если фильтровать по НОР, то можно показывать шаблоны созданные ранее другими пользователями.

Для работы решения необходимо создать ряд функций:

  • SaveToXMLFromWizard() – сохраняет заполненные параметры мастера действий в справочник WizardData в виде XML. 
  • RestoreToWizardFromXML() – заполняет параметры мастера действий из XML-схемы данных.
  • DeleteWizardScheme() – удаляет запись справочника WizardData.

Для того чтобы решение заработало осталось вставить созданные функции в правильные места. А именно: 

  • SaveToXMLFromWizard() - нужно вставить эту функцию на событиях Next мастеров действий, которые будет использовать механизм шаблонов. При каждом нажатии на кнопку Далее все заполненные в мастере данные будут сохраняться в справочнике WizardData.
  • RestoreToWizardFromXML() – эту функцию нужно вызвать на первом этапе мастера действий, после выбора шаблона из справочника WizardData. Данные из записи справочника будут переданы в мастер действий.
  • DeleteWizardScheme() – эта функция вызывается на финальном этапе, на событии Finish в том случае, если пользуемся механизмом черновиков, т.е. если параметры мастера действий заполнены, последний этап выполнен, черновик больше не нужен и его можно удалить.
Пока комментариев нет.

Авторизуйтесь, чтобы написать комментарий