![]() |
#21 |
Administrator
|
Цитата:
Сообщение от Lucky13
![]() 2 Mazzy
Mazzy, интересно узнать ваше мнение по следующему вопросу: Допустим есть задача: импортировать в Axapta данные, которые присылают, ну скажем, поставщики, в виде текстовых файлов. В файлах находятся практически одни и те же данные, но формат у каждого свой. Унифицировать формат невозможно. Возможны 2 варианта решения данной задачи: 1. Программировать каждый отдельный формат отдельно с помощью Enums и switch/case 2. Создать универсальный механизм, позволяющий подстраиваться под каждый формат. Минус первого варианта - каждый раз, при добавлении новых поставщиков (форматов файлов) придется программировать Минус второго - пользователь (имеется в виду тот, кто занимается настройкой системы) должен иметь достаточную квалификацию, чтобы произвести настройку. Какой по вашему вариант предпочтительнее? И вот призадумался - над Вашим вопросом, отнесенным правда не ко мне. Вот что скажу. Возможно 2 варианта решения задачи: Вариант 1. Создаем некий конструктор импорта (та же группа определения в стандарте - только с меганастройками). Если можно обойтись стандартными группами определения - еще проще. Для каждого поставщика делаем свою группу определения, которая сохраняется в таблице. На выходе - мы имеем динамический список, который можно пополнить без программирования (лукап). В этом случае мы в принципе обходимся без программирования. Однако этот вариант актуален - если мы готовы потратить время на настройку (и возможное программное докручивание) всего этого безобразия Вариант 2. Форматы настолько принципиально разные - что конструктор, как общее решение - не потянет - т.е. придется писать класс. В таком случае, раз уж все равно придется работать разработчику - то модифицировать до кучи класс-со switch/case (возможно что он даже будет родительским) и добавить элемент енума - дело 5 минут. В этом случае мы тратим время на программирование и тестирование (плюс описание) этого варианта Есть пример в системе - когда для каждой страны существует своя проверка корректности введенного банковского счета (Классы Bank_*). Есть енум (тип банк счета) и класс Bank, который, разруливает этот енум и создает наследника. Есть и другой пример - импорт банковских платежей. Сделан аккурат через выбор в списке класса. Если честно - то название классов - меня, разработчика, который полез первый раз изучать просто функциональность - смутило. Я еще тогда с названиями стандартных классов не был особо знаком и выбирал название - "по логике", хотя проще для меня было бы выбрать из енума.
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 04.06.2008 в 15:29. |
|
|
За это сообщение автора поблагодарили: mazzy (5). |