Показать сообщение отдельно
Старый 21.07.2019, 05:55   #1  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
643 / 347 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Паттерн initFrom() на таблице
Друзья, снова может быть ерундой занимаюсь, но все же прошу оценить. Суть паттерна в том, чтобы использовать один единственный метод для инициализации, остальные методы initFrom*() сделать private. С точки зрения пользователя кода это позволит сделать код немного чище и сосредоточиться на задаче не выискивая нужный метод в выпадающем списке. Сами делаем только на кастомных таблицах, используем весьма успешно.
X++:
public void initFrom(Common _common)
{
    switch (_common.TableId)
    {
        case tableNum(SalesLine):
            this.initFromSalesLine(_common);
            break;

        case tableNum(SalesTable):
            this.initFromSalesTable(_common);
            break;

        case tableNum(InventTable):
            this.initFromInventTable(_common);
            break;

        case tableNum(EcoResProduct):
            this.initFromEcoResProduct(_common);
            break;

        case tableNum(WMSBillOfLading):
            this.initFromWMSBillOfLading(_common);
            break;

        default:
            throw error(Error::wrongUseOfFunction(funcName()));
    }
}
__________________
// no comments