Здравствуйте, господа. Заимел проблему.
Задача: в карточке договора при изменении значения состояния (в комбобоксе) надо подставить в качестве даты завершения текущую дату. То есть выбираем в комбобоксе "Завершён" - дата меняется.
Проблема: скрипт работает, но не совсем корректно. Дата меняется не тогда, когда мы меняем какое-то состояние на состояние "Завершён", а уже тогда, когда мы пытаемся менять состояние "Завершён" на какое-то другое.
В function DataChange(DataField) добавил такой кусок кода:
ContractScript.DisableDataChange = true;
try {
var StatusName = DataFields.ItemsByName('ContractStatusName').Value;
var Today = GetLocalDate();
var sEnd = 'Завершён';
if(StatusName == sEnd)
{
DataFields.ItemsByName('DueDate').Value = Today;
MessageBox('В качестве даты закрытия контракта установлена сегодняшняя дата!');
}
}
finally{
ContractScript.DisableDataChange = false;
}
break;
Видимо, получается, что я обращаюсь к старому экземпляру поля ContractStatusName. А надо к только что установленному.
Помогите, пожалуйста.
Нравится
Сергей, не пробовали сравнивать if(StatusName == sEnd) не по названию состояния, а по его ID? Возможно, поскольку обработка происходит в момент изменения StatusID, а не StatusName, последнее поле содержит старое значение.
Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.