создать новую тему раскрыть все
свернуть/развернуть ветвь Алгоритм импорта [Dmitry 04/03/2012 00:08] # написать ответ
 
Добрый день!
 
   Организовал тесную работу с AbilityCash (217), предполагающую частый экспорт/импорт данных. Работает хорошо, если не выгружать/загружать остатки по счетам.
   Но иногда импорт происходит весьма избирательно. Часть операций не прочитывается в AbilityCash. Множественные опыты показали, что скорее всего эта проблема связана с тем, что при импорте происходит сравнение операций имеющихся в базе и импортируемых, поэтому часть операций "бракуется".
   Как в общих чертах реализован этот алгоритм? Он должен отлавливать и запрещать абсолютно одинаковые операции?
 
Эта проблема есть в 217-й сборке (и более ранних). Там у меня была задумка использовать импорт для своего рода синхронизации. Реализовал я эту задумку так: если во время импорта находится операция, у которой все поля совпадают с существующей операцией, считается, что эту операцию импортировать не нужно потому что она вроде как уже есть.
 
Задумка оказалась откровенно неудачной. Она неочевидна, запутывает пользователей и делает результат непредсказуемым.
 
Зато если скачать текущую бета-сборку AbilityCash, в ней экспорт и импорт реализованы иначе. Отличия таковы:
 
1. Экспорт можно выполнять в формате xml и в формате Excel. При этом, выгружать в Excel можно даже если сам Excel на рабочей станции не установлен. Программа просто записывает данные в файл в формате Excel и все.
 
2. Импорт также реализован из форматов xml и Excel. И наличие установленного Excel-я для импорта не обязательно.
 
3. Импорт не занимается волюнтаризмом, не сравнивает импортируемые операции с существующими и записывает в текущий файл данных все как есть. Никакой самодеятельности.
 
4. Формат экспорта и импорта изменен. Возможно, вам придется внимательно сравнить получающийся в результате экспорта результат чтоб убедиться, что вся ваша обработка будет продолжать работать нормально.
свернуть/развернуть ветвь Спасибо! [Dmitry 13/03/2012 13:21] # написать ответ
 
Я обнаружил, что в 217 при сравнении "отбраковываются" не только одинаковые операции, но и операции почти одинаковые - с разницей в одном из добавляемых классификаторов. Вот это меня и запутало. Спасибо за объяснения. Буду смотреть новую версию.
Пока решил проблему так: при создании файла импорта добавляю к каждой операции "уникальный идентификатор" в примечание - системную дату и время на момент создания файла. Полагаю так вероятность отбраковывания будет минимальной. И отслеживать удобнее только что добавленное, фильтруя по примечанию.
 
...можно быть уверенным в том, что все операции, поданные на вход, будут импортированы. Ну, если в них дефекта не будет, конечно же.
 
На днях собираюсь выложить новый релиз. Там еще будут внесены изменения в алгоритмы экспорта и импорта. Незначительные, но все же.