Добавлю еще 3-й вопрос.
почему такой код
X++:
fds = !_ignoreDataSourceLevel ? _record.dataSource() : null; // ругается
вызывает проблемы. Разве null нельзя однозначно преобразовать в нулевую ссылку на класс, как это происходит при обычном присваивании переменной
X++:
fds = null; // не ругается
А вот это еще веселее
X++:
ret = fdo ? fdo.validate() : _record.validateField(_fieldId); // ругается - один boolean отличается от другого ?
оба метода (FormDataObject.validate и common.validateField) возвращают boolean, но компилятор увидел где-то отличия в типах
а вот так нормально
X++:
ret = fdo ? fdo.validate() : any2int(_record.validateField(_fieldId)); // не ругается
ret = fdo ? fdo.validate() : any2enum(_record.validateField(_fieldId)); // не ругается
видимо где то в ядре прописано что один из методов валидации возвращает int, а другой boolean в то время как во всплывающей подсказке для обоих методов стоит описание, что возвращается boolean. Другого объяснения у меня нет.