Показать сообщение отдельно
Старый 04.06.2008, 15:26   #32  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,275 / 3476 (122) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
2 Mazzy

Mazzy, интересно узнать ваше мнение по следующему вопросу:
Допустим есть задача: импортировать в Axapta данные, которые присылают, ну скажем, поставщики, в виде текстовых файлов. В файлах находятся практически одни и те же данные, но формат у каждого свой. Унифицировать формат невозможно.
Возможны 2 варианта решения данной задачи:
1. Программировать каждый отдельный формат отдельно с помощью Enums и switch/case
2. Создать универсальный механизм, позволяющий подстраиваться под каждый формат.

Минус первого варианта - каждый раз, при добавлении новых поставщиков (форматов файлов) придется программировать
Минус второго - пользователь (имеется в виду тот, кто занимается настройкой системы) должен иметь достаточную квалификацию, чтобы произвести настройку.

Какой по вашему вариант предпочтительнее?
Посидел, подумал, почитал ветку... В общем-то я тоже стронник Dict-классов ... был до прочтения ветки.
И вот призадумался - над Вашим вопросом, отнесенным правда не ко мне.
Вот что скажу. Возможно 2 варианта решения задачи:
Вариант 1. Создаем некий конструктор импорта (та же группа определения в стандарте - только с меганастройками). Если можно обойтись стандартными группами определения - еще проще. Для каждого поставщика делаем свою группу определения, которая сохраняется в таблице. На выходе - мы имеем динамический список, который можно пополнить без программирования (лукап). В этом случае мы в принципе обходимся без программирования.
Однако этот вариант актуален - если мы готовы потратить время на настройку (и возможное программное докручивание) всего этого безобразия

Вариант 2. Форматы настолько принципиально разные - что конструктор, как общее решение - не потянет - т.е. придется писать класс. В таком случае, раз уж все равно придется работать разработчику - то модифицировать до кучи класс-со switch/case (возможно что он даже будет родительским) и добавить элемент енума - дело 5 минут.
В этом случае мы тратим время на программирование и тестирование (плюс описание) этого варианта

Есть пример в системе - когда для каждой страны существует своя проверка корректности введенного банковского счета (Классы Bank_*). Есть енум (тип банк счета) и класс Bank, который, разруливает этот енум и создает наследника.

Есть и другой пример - импорт банковских платежей. Сделан аккурат через выбор в списке класса. Если честно - то название классов - меня, разработчика, который полез первый раз изучать просто функциональность - смутило. Я еще тогда с названиями стандартных классов не был особо знаком и выбирал название - "по логике", хотя проще для меня было бы выбрать из енума.
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 04.06.2008 в 15:29.
За это сообщение автора поблагодарили: mazzy (5).