четверг, 5 марта 2009 г.

Перенос данных из Microsoft Money в KMyMoney

Перенос данных из Microsoft Money в KMyMoney « Калейдоскоп

Вот уже 3 года, как я веду домашнюю бухгалтерию. Не буду вдаваться в объяснения, насколько это важно и полезно, деньги любят счет и каждый у кого они есть рано или поздно осознает необходимость их учета. Я уже и не представляю, как можно жить без этого. С самого начала я использовал программу Microsoft Money. Умолчим о лицензии, программа очень хорошая, у нее есть лишь один “недостаток” - приставка Microsoft в названии. Но сейчас я перехожу на использование Linux дома, поэтому ей пришлось подыскать замену.

Для линукса есть всего 2 достойные внимания свободные программы для учета личных финансов: GNU Cash и KMyMoney. Лично мне изначально больше понравилась KMyMoney, GNU Cash как то больше похоже на сухой бухучет (в общем-то для него в первую очередь она и предназначена). Почитав отзывы людей, которые пробовали пользоваться и той и другой программой и в итоге переходили на KMyMoney, так как она больше похожа на msmoney и quicken, я решил что тоже выберу ее. Естественно встал вопрос о переносе данных, накопленных за 3 года. И хотя эта задача вполне выполнима, она далеко не так проста, как хотелось бы. Ниже изложена примерно-пошаговая инструкция, как это сделать.

Microsoft money позволяет экспортировать данные в несколько форматов и в частности в qif. KMyMoney может импортировать из этого формата, поэтому для обмена данными нужно воспользоваться им. К сожалению, импорт-экспорт нужно осуществлять отдельно для каждого счета, а некоторые типы счетов (например, кредиты) не экспортируются вовсе. У меня было около 10 счетов, 3 из которых - наличные деньги в разных валютах. Весь перенос данных с учетом времени, которое понадобилось, чтобы разобраться, занял у меня около 6 часов.

Итак, начнем (очень желательно иметь возможность запустить msmoney и kmymoney одновременно, у меня просто два ноутбука стояли рядом. Не забывайте постоянно сохранять файл, kmymoney может вылететь с sigfault):

  1. Создайте новый файл в KMyMoney
  2. Создайте в нем абсолютно такие же счета, заведения, статьи расходов и доходов, как и в Microsoft money, если в названии есть специальные символы, лучше удалите их в обоих программах, чтобы названия содержали только буквы и пробелы
  3. Экспортируйте каждый счет из msmoney в формат Loose QIF (Файл->Экспорт->QIF)
  4. Скопируйте файлы в отдельную директорию на линуксе
  5. Так как msmoney использует кодировку CP1251, а kmymoney UTF8 необходимо перекодировать все файлы. Делаем это с помощью iconv так - откройте в консоле директорию с файлами и для каждого из них выполните следующую команду:iconv -f CP1251 -t UTF8 mymoney.qif > mymoney8.qif (имена файлов ваши)
  6. Теперь необходимо импортировать все данные в kmymoney. Идем в меню файл->импорт qif. Выбираем один из наших перекодированных файлов. Далее нужно настроить профиль импорта. Если вы использовали русскую локаль в windows и используете ее в linux, то создайте новый профиль импорта и укажите, что разделитель дробной части это запятая, а разделитель тысяч - точка. После создания профиля выберите его, отметьте флаг автоматического создания плательщиков и нажимайте кнопку импорт
  7. kmymoney спросит вас, в какой счет импортировать данные, и если вы выполнили пункт 2, предложит по умолчанию такой же счет, как и в файле
  8. Далее в процессе импорта из-за непонятных сбоев в кодировке могут возникать вопросы, к какой категории отнести тот или иной платеж, я вручную присваивал эти платежи соответствующим категориям. В целом у меня было не более 2-3% сбоев от общего числа платежей
  9. Повторите процедуру для всех ваших счетов
  10. Далее начинаются настоящие проблемы, которые отнимают основное время. К сожалению, импорт ведется для каждого счета независимо, поэтому все переводы между счетами (transfers) дублируются на каждом счете. Например, у вас есть два счета рубли RUR и евро EUR, и вы сделали перевод, скажем, 6000 рублей в 200 евро. После импорта-экспорта вы получите на рублевом счете перевод 6000 и перевод 200 рублей, а на евровом приход 6000 евро и 200 евро. Необходимо пройтись по каждому валютному счету, удаляя оттуда лишний перевод, а в осташемся - вносить курс валют, по которому сделан перевод. Возвращаясь к приведенному выше примеру нужно на евровом счете открыть приход 200 евро на редактирвоание, ничего не делая нажать сохранить, появится окно, в котором нужно ввести правильную сумму рублей (по умолчанию курс равен 1) - 6000, и нажать сохранить. А другой перевод на 6000 евро просто удалить.
  11. Если вы нигде не наделаете ошибок, то после проделывания этих операций на всех счетах остатки в kmymoney и msmoney сойдутся.
  12. Поздравляю, вы перенесли все, что можно перенести. Все остальные данные нужно переносить вручную.

Конечно, этот процесс можно автоматизировать, но, видимо, ни у кого не дошли руки. Я мог бы на питоне написать скрипт, если бы мне надо было 15 лет данных переносить, но в данном случае мне быстрее оказалось все вручную перенести. В любом случае порадовало, что с данными расставаться не пришлось, как это советуют в самой популярной статье про переезд на kmymoney.

Надеюсь, мой опыт поможет вам.

Be happy, be free!

Комментариев нет: