Копирование задачи, своя обработка. Помогите разобраться.
Есть необходимость при копировании задачи (по кнопке) некоторые поля сохранять, некоторые устанавливать в дефолтовые (как при создании задачи), а некоторые - в определенные значения.
Для этого в обработке был написан свой код. НО, есть следующие проблемы:
1. После установки Даты начала и Даты завершения через BaseGridArea.AddDataDefaultValues при последующем (например) создании новой задачи эти поля устанавливаются как в копируемой ранее задаче. Подскажите, как их можно очищать или каким другим способом устанавливать.
/*при добавлении этих полей в атрибуты в окне карточки задачи остаются старые даты...*/
2. Еще проблема с напоминаниями. Если в копируемой задаче выбрано Напоминание ответсвенному (дата задана), то при копировании в объекте BaseGridArea.AddDataDefaultValues.Item('RemindToOwnerDate') свойства Value не определено, а ValIsNull = true. Хотя для объекта BaseGridArea.AddDataDefaultValues.Item('RemindToAuthorDate') все данные отображаются, если выбрано Напоминание автору. /*смотрю в отладчике*/.
Подскажите, с чем это связано и по какому полю можно отследить выбрано напоминание или нет, чтоб установить новую дату.
тескт функции прикреплен.
Заранее, спасибо.
Нравится
Надежда, добрый день.
Попробуйте вместо BaseGridArea.AddDataDefaultValues использовать GetNewDictionary():
var DefVal = GetNewDictionary();
Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.
Спасибо, первая проблема разрешилась.
Осталась втроя...
Вторая проблема возникает потому, что в реестр задач не вытянута колонка "Дата напоминания ответственному", зато вытянута "Дата напоминания автору". Поскольку колонка не активна, программа считает, что её значение пустое.
Для устранения проблемы используйте вместо
!BaseGridArea.GridDataset.DataFields.ItemsByName('RemindToOwnerDate').ValIsNull
проверку
!IsEmptyDateTime(GetFieldValueFromDisabledField(BaseGridArea.GridDataset, 'RemindToOwnerDate'))
Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.
Возникает ошибка, если напоминание не установлено, при проверке говорится, что поле null или не определено...
Я уже пробывала проверять BaseGridArea.GridDataset.DataFields.ItemsByName('RemindToOwnerDate').Value - заполнено или нет, в этом случае возникала ошибка, что поле заблокировано (если оно пустое).
Надежда, Вы проверяете, как я Вам рекомендовал выше? С помощью функции GetFieldValueFromDisabledField(BaseGridArea.GridDataset, 'RemindToOwnerDate')?
Полностью эта часть кода выглядит так:
if (!IsEmptyDateTime(GetFieldValueFromDisabledField(BaseGridArea.GridDataset, 'RemindToOwnerDate'))) { DefVal.Item('RemindToOwnerDate') = NewStDate.getVarDate(); } if (!IsEmptyDateTime(GetFieldValueFromDisabledField(BaseGridArea.GridDataset, 'RemindToAuthorDate'))) { DefVal.Item('RemindToAuthorDate') = NewStDate.getVarDate(); } ShowEditWindowEx(BaseGridArea.EditWindowUSI, Attributes, DefVal);
Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.
Олег, да, я пишу именно так. При выполнении возникает ошибка "Ожидается наличие объекта" в ф-ции IsEmptyDateTime.
Если ей передать new Date(GetFieldValueFromDisabledField(BaseGridArea.GridDataset, 'RemindToOwnerDate')), то ошибки нет, но проверка некорректной получается...
Попробуйте вместо IsEmptyDateTime использовать IsEmptyValue.
Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.
Да, точно, спасибо.
Тогда проверка будет выглядеть так:
if (!IsEmptyValue(GetFieldValueFromDisabledField(BaseGridArea.GridDataset, 'RemindToOwnerDate'))) {
DefVal.Item('RemindToOwnerDate') = NewStDate.getVarDate(); }
if (!IsEmptyValue(GetFieldValueFromDisabledField(BaseGridArea.GridDataset, 'RemindToAuthorDate'))) {
DefVal.Item('RemindToAuthorDate') = NewStDate.getVarDate(); }
ShowEditWindowEx(BaseGridArea.EditWindowUSI, Attributes, DefVal);
Совершенно верно :).
Проблема решилась?
Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.