Проверка состояния из справочника

Добрый день.
Сделал функционал, который проверяет состояние задачи и при определенном состоянии выполнял определенное действие. Если Status ID забивать грубо руками, то все отрабатывает в порядке.
В справочниках есть список состояний задач. Там есть параметры "Начальное состояние" и "Конечное состояние". В состоянии задачи "Открыта" стоит галочка на "Начальное состояние", а в "Исполнена и Отменена" галочка стоит на конечном состоянии. В настройках справочника нашел, что это ds_TaskStatus, нужные мне поля IsStart и IsFinish типа "Булейские".

Вот если делать проверку таким образом

function SetActualStartDate() {
        var Dataset = Services.GetNewItemByUSI('ds_TaskStatus');
        Dataset.Open();
        IsStart = Dataset.Values('IsStart');
        IsFinish = Dataset.Values('IsFinish');
        if (IsStart == true)
        {
                var Value = null;
                BaseDBEdit.Dataset.Values('ActualStartDate') = Value;
                ShowInformationDialog(BaseDBEdit.Dataset.Values('ActualStartDate'));
                //BaseDBEdit.Dataset.DataFields.ItemsByName('ActualStartDate').IsReadOnly=true;
        }
        else if (BaseDBEdit.Dataset.Values('ActualStartDate') == null)
        {
                if (BaseDBEdit.Dataset.Values('StatusID')== '{9E289E42-9A0E-4A9C-A57F-049754310D95}' )
                {
                        BaseDBEdit.Dataset.DataFields.ItemsByName('ActualStartDate').IsReadOnly=false;
                        var Today = new Date();
                        var Value = Today.getVarDate();
                        BaseDBEdit.Dataset.Values('ActualStartDate') = Value;
                }
                        else if   (BaseDBEdit.Dataset.Values('StatusID')==('{F598ECDB-4EEF-4FA8-9E69-A36B053501E5}' ||
                                '{9A74B908-9FA8-4CC3-8916-BC3D2798AC3A}'))
                        {
                                BaseDBEdit.Dataset.DataFields.ItemsByName('ActualStartDate').IsReadOnly=false;
                                var Today = new Date();
                            var Value = Today.getVarDate();
                                BaseDBEdit.Dataset.Values('ActualStartDate') = Value;
                        }
        }
}

то проверка не работает. Т.е. оно не проверяет стоит ли галка в справочнике. Может я не так делаю? подскажите пожалуйста

вот эта проверка не срабатывает

if (IsStart == true)  - проверка равносильна BaseDBEdit.Dataset.Values('StatusID')==('{Открыта}')

Нравится

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

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

var Dataset = Services.GetNewItemByUSI('ds_TaskStatus');
Dataset.Close();
EnableDatasetFilters(Dataset, false);
ApplyDatasetFilter(Dataset, 'ID', BaseDBEdit.Dataset.Values('StatusID'), true);
Dataset.Open();
var IsStart = !!Dataset.Values('IsStart');
var IsFinish = !!Dataset.Values('IsFinish');

Огромное спасибо, помогло. Можно закрывать

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