/// <summary>
        /// Создание новой задачи. Вызывается из присоединённого административного объекта, который также назнает свойства
        /// новорожденной задаче
        /// </summary>
        public static TaskInvoiceInstanceDefinition create(Session ssn, TaskParameters tp)
        {
            TaskInvoiceInstanceDefinition tid = new TaskInvoiceInstanceDefinition(ssn);

            tid._TaskInitiator = null; // Если создаётся через интерфейс, то TaskInitiator заполняется, иначе - обнуляется
            return(tid);
        }
        /// <summary>
        /// Перенос параметров в задачу.
        /// Данная процедура:
        /// 1. Извлекает пользователей из соотвесттвующих списков данного объекта администрирования
        /// 2. Извлекает пользователей из списков, задачнных через параметр типа TaskParameters
        /// 3. Сливает вместе соответствующие списки из пп 1 и 2
        /// 4. Переносит результат в пользвательскую задачу
        /// 5. Также переносит данные о приоритете и т.д.
        /// </summary>
        /// <param name="task"></param>
        private void SetTaskParameters(ref TaskInvoiceInstanceDefinition task, BaseTaskInstanceDefinitionAdmin adminTask, TaskParameters tp)
        {
            FunctionalTaskReference.ProcessElements(tp, ref task, this.Session);
            FunctionalTaskReference.FillUsersFromAdminTaskCollection(this, ref task);

            task.Priority = this.Priority;
            //task.CallBackObject = this.CallBackObject;
            task.TaskAdminGuid = this.Oid;
        }
        public override void create()
        {
            // Параметры формируются здесь исключительно для демонстрации последующиего алгоритма разбора в методе SetTaskParameters
            TaskParameters tp = GetTaskParams();

            // Создание задачи (вызов new)
            TaskInvoiceInstanceDefinition tid = TaskInvoiceInstanceDefinition.create(this.Session, tp);

            SetTaskParameters(ref tid, this, tp);

            // Вызываем activate() для созданной задачи
            tid.activate();
        }