Пользуясь сегодняшнем случаем наконец-то подправил в своем рабочем классе (практически в персональном "пролетариате"

) метод, устанавливающий значение в поле рекордсета:
X++:
#CCADO
void setValue(anytype _fldName, anytype _fldValue)
{
// _fldName - можно текстовое имя, а можно числовое, начиная с 1 (!), а не 0 как в самом ADO
anytype fldName;
;
if (typeof(_fldName)==Types::Integer)
fldName = _fldName - 1;
else
fldName = _fldName;
fld = flds.Item(fldName); // COM flds и fld - полЯ и полЕ рекордсета, определены в Class Declaration
if (! ((fld.Type()==#adDate || fld.Type()==#adDBDate) && !_fldValue) )
{
fld.Value(_fldValue); // если непустая дата или любое др.значение
}
// иначе если значение - пустая дата, то вообще не прописываем в поле
}
И теперь можно не обращать внимание на дату. А раньше приходилось делать проверку в самом цикле вывода:
X++:
if (ltDb.TransDate)
out2xls.setValue(nextNum(),ltDb.TransDate);
Способ с проверкой в цикле, конечно, побыстрее будет, но вряд ли этот временнОй выигрыш так уж критичен, а по сему упрятывание обработки пустой даты в метод setValue выглядит комфортнее.