Показать сообщение отдельно
Старый 20.05.2013, 14:54   #15  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Всем добрый день! К примеру, имею следующий код:
X++:
public void displayOption(Common _record, FormRowDisplayOption _options)
{
    int     i;
    container   changedFieldIds = _record.(fieldnum(ProductionGoodsSet, ChangedFieldIds));
    ;

    if (conlen(changedFieldIds))
        _options.backColor(winapi::rgb2int(255, 200, 200));

    for(i = 1; i <= conlen(changedFieldIds); i++)
    {
        _options.affectedElementsByField(fieldId2Ext(conpeek(changedFieldIds, i), 1));
        
        if (conpeek(changedFieldIds, i) == fieldnum(ProductionGoodsSet, BusRelAccount))
        {
            _options.affectedElementsByControl(busRelNameAlias.id());
        }
    }
}

    super(_record, _options);
Контейнер, содержащий ид полей, которые нужно подкрасить и, если в этом контейнере имеется ид поля BusRelAccount, то нужно подкрасить контрол, в котором описан дисплей метод по этому полю.
Если использую только функцию affectedElementsByField() или только affectedElementsByControl(), то окрашивание происходит корректно, но если использую обе сразу - не работает.
В наличии ид нужных полей убедился.
При этом не хочется из-за одного дисплейного поля ограничиваться методом affectedElementsByControl() для всех полей.
Может в чём-то ошибаюсь? Прошу подсказать. Спасибо!