Сообщество
Логин
Пароль
Забыли пароль?     Регистрация
От всей души
Мы старались, делали.
Можно поблагодарить разработчиков любой суммой.
Общение / Веб версия / Импорт из ПО "Домашняя бухгалтерия"

Импорт из по "домашняя бухгалтерия"

Amargo
3 октября 2014 15:22
Добрый день, хотелось бы предложить сделать механизм полностью автоматического импорта из программы "Домашняя бухгалтерия" от keepsoft. Насколько я знаю. у этой софтины много пользователей и так же много недовольных тем, куда скатилось некогда отличное приложение. Желающих перейти на что-то действительно хорошее среди них много.

Например я :) Уже больше года мечтал перейти на drebedengi.ru, например, но очень жаль потерять всю историю. Базу веду с 2003 года, это уже 11 лет, хотелось бы сохранить данные.

Да, я читал про импорт через cvs, скорее всего, я даже с этим справлюсь с моими знаниями и опытом, но думаю, что не ошибусь, предположив, что таких юзеров мало, меньше десятка наверняка!
большинство сломается в попытках долго и мучительно подгонять .cvs файл к приемлемому для импорта виду, а потом переделывать это n раз из-за пропущенной запятой или ошибки форматирования полей.

у "ДБ" открытый формат, насколько я понимаю, это самый банальный .dbf, те же самые категории, 2 уровня, те же расход/доход+счета+долги(кредиторы/должники) и правильно работающий бэкап.

Замечу, что бэкап позволяет полностью восстановить базу "как было"!
То есть можно было бы сделать парсер куда юзер мог бы загрузить файл бэкапа "Домашняя бухгалтерия" и нажать кнопку "импортировать".
И на выходе получить заполненую базу с категориями, счетами и т.п. в drebedengi.ru, после чего просто продолжить вести свои домашние финансы уже здесь.
Admin
 
3 октября 2014 15:30
Здравствуйте.
Спасибо за предложение, подумаем.
Если решитесь взяться за импорт, было бы полезно составить пошаговую инструкцию, по приведению к нашему .csv.

Это поможет другим людям "уже сейчас", да и программистам тоже упросит (читай, ускорит) выполнение задачи.
Amargo
3 октября 2014 16:43
Да, я вот как раз планирую всё таки сделать импорт, но для этого я для себя сейчас выясняю предварительно:

1. Хочу ли я сохранить свою старую структуру категорий или же подкорректировать её заодно с переходом.
у вас есть очень удобные тэги, поэтому я планирую сократить количество категорий, а вместо лишних добавить тэги.
Например, я разделял по подкатегориям "покупки продуктов", в отдельные подгатегории выносил чай и кофе, т.к. закупаю отдельно свежеобжаренный кофе и китайские чаи на развес и мне интересно знать, сколько я на это трачу. Аналогично свежие молочные и кисломолочные продукты.
Теперь я просто делаю одну категорию "покупка продуктов" и помечаю тэгами где чай, кофе и т.п.

2. хочу неделю-две попробовать вести учёт финансов параллельно в своей старой программе и в drebedengi.ru, чтобы понять для себя, удобно ли мне в новой программе и стоит ли переходить. В основном интересует система планирования. По первому впечатлению все базовые функции реализованы просто отлично, но на всякий случай ещё немного потестирую.

3. какие есть варианты делать импорт? Мне было бы удобнее подгружать свои данные относительно небольшими частями, чтобы отслеживать и отлавливать ошибки.
насколько я понимаю, так делать можно, то есть, я могу, например, сначала выгрузить из "ДБ" в .csv только расходы и только за сентябрь 2014, например, для первого раза.
открыть его текстовым редактором, там автозаменой подогнать категории под формат моей базы в "дребеденьги", сохранить и импортировать. Если всё прошло хорошо, взять период больше, например весь 2014 год и повторить.

Потом тоже самое сделать с доходами.
Названия счетов у меня совпадают, так что тут проблем быть не должно.

Долгов нет, должников всего 2 и суммы маленьки, проще руками ввести и забыть.

Что я ещё забыл? Вроде бы ничего.

Такой вот план.
Admin
 
3 октября 2014 17:51
Alex Пишет:
насколько я понимаю, так делать можно
Всё верно.
Ilyan
5 октября 2014 10:39
Alex Пишет:
Например, я разделял по подкатегориям "покупки продуктов", в отдельные подгатегории выносил чай и кофе, т.к. закупаю отдельно свежеобжаренный кофе и китайские чаи на развес и мне интересно знать, сколько я на это трачу. Аналогично свежие молочные и кисломолочные продукты.
Теперь я просто делаю одну категорию "покупка продуктов" и помечаю тэгами где чай, кофе и т.п.
Извините, за оффтоп, но чем это удобнее?

Ведь вместо выбора только категории, вам придется выбирать и категорию, и тег.
* хотя, если делать это через "Разбить трату", категория будет выставлена автоматически

А чтобы посмотреть историю то тегу, придется формировать отдельный отчет.
А узнать, какой процент составляет чай от продуктов можно будет только вручную.
Ilyan
5 октября 2014 11:32
Другими словами, если по всем признакам что-то является подкатегорией, зачем делать это тегом?
aleter
5 октября 2014 14:42
тоже озадачился переносом базы (4 года) из домашней бухгалтерии в дребеденьги. операций множество, привести выгрузку из ДБ в удобочитаемую для ДД пока не смог :(
Admin
 
5 октября 2014 14:49
У нас есть открытый API. Если кто-нибудь из пользователей энтузиастов напишет тулзу для экспорта, то можем выложить её на всеобщее пользование.
Ilyan
5 октября 2014 17:31
Admin Пишет:
Если кто-нибудь из пользователей энтузиастов напишет тулзу
Могу попробовать.

Думаю, что и администрация может быть в этом заинтересована - тогда имеет смысл сделать это так, чтобы можно было прикрутить к сайту дребеденег.

Admin, Perl-скрипт вас устроит?

Alex, aleter, я пока не сумел сделать экспорт доходов/расходов в текстовый файл с датами и комментариями (только перемещений и обменов валют). Это возможно?
Ilyan
5 октября 2014 17:39
А как у "Домашней бухгалтерии" с юникодом?

Я сейчас установил английскую версию (язык ОС - иврит). Комментарии на русском превращаются в ???
Ilyan
5 октября 2014 17:51
Ilyan Пишет:
Alex, aleter, я пока не сумел сделать экспорт доходов/расходов в текстовый файл с датами и комментариями
Все, нашел.
Admin
 
5 октября 2014 18:22
Ilyan Пишет:
Admin, Perl-скрипт вас устроит?
А как у Perl обстоят дела с soap? Лучше бы конечно на PHP, и примеры у нас на сайте есть рабочие.
Ilyan
5 октября 2014 18:29
Зачем soap?

Вы напишете инструкцию для экспорта из "Домашней бухгалтерии" от keepsoft (видимо, понадобится 4 файла: расходы, доходы, перемещения и обмены валют).

Потом попросите пользователя закачать эти файлы, как в импорте, запустите на них мой скрипт-конвертор, и полученный результат (1 файл) продолжите обрабатывать как обычный импорт.

* только с размером файла не лютуйте - за 11 лет у людей может быть мнооого транзакций.
Ilyan
5 октября 2014 18:39
Инструкция будет простая - по очереди экспортировать расходы, доходы (из главного меню), перемещения и обмены валют.

Надо только выбрать формат - в принципе, у них там есть и csv, но "без кавычек" - т.е. если символ-разделитель (например, ';') используется в любом справочнике или комментарии, то ж**а.

Надежнее в XML.
Admin
 
5 октября 2014 19:00
Ilyan Пишет:
Зачем soap?
Чтобы сохранить иерархию категорий, исключая тем самым косяки с одинаковыми названиями дочерних категорий.. и кажется ещё какие-то мелкие косяки в импорте, о которых вы когда-то писали.

С простым импортом будет не так хорошо. Хотя лучше так, чем никак.

А там разве сам файл dbf нельзя взять и вычитать из него напрямую?
Ilyan
5 октября 2014 19:23
Так подправьте "простой" импорт! )))

Ведь именно его вы сейчас предлагаете, "чтобы загрузить в дребеденьги данные из других программ домашней бухгалтерии, банковских выписок и т.п."

Из косяков я помню невозможность заимпортить символ кавычки.
Еще, конечно, было бы хорошо указывать иерархию категории, чтобы пользователю осталась только сортировка, без переносов.


Скрипт мог бы возвращать ошибку/сообщение о конфликте элементов пользователя (из моего скрипта). Тогда можно сделать продолжение импорта возможным только если конфликтов нет.
Admin
 
5 октября 2014 19:31
Формат импорта переделать сложнее, чем наладить экспорт из 5-ти разных домашних бухгалтерий, и кажется даже такой задачи в плане ещё не стоит. Так что по этому пути мы сейчас никуда не придём. Кавычки нормально импортируются, скорее что-то с амперсандами.

А, с soap было бы красивее и гибче :). Сделав раз - считай готова была бы половина работы для импорта из множества других источников.
Ilyan
5 октября 2014 19:36
Ilyan Пишет:
Скрипт мог бы возвращать ошибку/сообщение о конфликте элементов пользователя
В их экспорте есть вся необходимая информация.
Ilyan
5 октября 2014 19:42
Admin Пишет:
Сделав раз - считай готова была бы половина работы для импорта из множества других источников.
С простым импортом - тоже самое ))

Если бы существовал текстовый формат (пусть из даже нескольких файлов, как в "более удобный для анализа" экспорте), с помощью которого можно было с нуля, ПОЛНОСТЬЮ загрузить бухгалтерию дребеденег, импорт из множества других источников свелся бы к написанию довольно простого (особенно, после примера) конвертора.
Admin
 
5 октября 2014 19:46
Ilyan Пишет:
Если бы существовал текстовый формат
Впринципе, он существует.
Есть "внутренний" формат, который использует, например, приложение для Windows.
Можете его скачать, сделать экспорт и будет готовый пример.
Amargo
6 октября 2014 10:14
Пардон, я на выходных был АФК, сейчас сразу постараюсь всем ответить.
2Ilyan: про тэги, я ещё не разбирался, как это работает в отчётах, предположил, что вывод суммы по тэгам возможен. Сейчас буду читать и смотреть, как это реализовано, если окажется, что неудобно, переделаю.Возможно, я ошибочно себе представлял механизм.
Изначально цель не плодить лишних категорий, потому что в общем случае мне важно знать среднюю сумму на продукты. А остальное это так, праздное любопытство "сколько тысяч в год ушло на кофе?"
Но для ежемесячных отчётов мне как раз важнее видеть только основные категории и разбивку вида:
- Продукты = 10к
- Гигиена = 5к
- Транспорт = 2к
- Питание вне дома = 3к
- Счета = 9к
- Услуги и сервис = 4к
- Спорт и отдых = 20к
примерно так, а уж на что сколько конкретно потратилось, допустим среди транспорта, 1300автобус и 700метро это мне не важно. Или сколько именно "съела" зубная паста, а сколько шампунь, тоже пофигу.
Amargo
6 октября 2014 10:21
Про форматы и кодировки:
Домашняя бухгалтерия умеет экспортировать в стопицот форматов.
Оптимальным мне видится .cvs, это по сути форматированный текст с разделителями,он открывается легко блокнотом Notepad++, который умеет конвертировать кодировки и имеет нереально крутой поиск с автозаменой и регулярными выражениями.(http://fadmin.ru/vopros/regulyarnye-vyrazheniya-v-notepad)

Таким образом, можно выгрузить данные из "ДБ" в .cvs файл, открыть его Notepad++, конвертнуть и пересохранить в "UTF-8 без BOM", после чего, заменой по маске привести к нужному формату.

Могу выложить на дропбоксе пример чистого экспорта + пересохранённый файл в UTF-8 для экспериментов.
Ilyan
6 октября 2014 13:37
Admin Пишет:
Можете его скачать, сделать экспорт и будет готовый пример.
"Синхронизация не удалась"
Ilyan
6 октября 2014 13:40
* и это не говоря о том, что половина надписей, включая "Синхронизация не удалась", нечитабельны из-за неправильной кодировки (ОС - на иврите).
Admin
 
6 октября 2014 13:57
От вас xml ошибка из приложения приходит: "{ http://www.drebedengi.ru/...}name': [facet 'minLength'] The value has a length of '0'; this underruns the allowed minimum length of". Вероятно из-за utf8 символов.

Попробуйте под демо пользователем войти.
Ilyan
6 октября 2014 14:00
Admin Пишет:
Попробуйте под демо пользователем войти.
OK

А как теперь "сделать экспорт"?
Admin
 
6 октября 2014 14:06
Слева внизу есть иконочка синхронизации, в ней есть ссылка "Экспорт".
Ilyan
6 октября 2014 14:23
ОК

Могу и в такой формат законвертить.

Только не все поля понятны:

[currency]: порядковый номер, название, курс (неважно), код, t;f;t для основной / t;f;f для остальных?

[objects]: id, родитеьский id, 2 - счет / 3 - категория / 4 - источник, f;f;f, еще раз id?

[records]: вроде, понятно


А какие использовать id?


* Наальный остаток - имеется в виду Анальный остаток? ))
Admin
 
6 октября 2014 15:42
[currency]
id; // уникальное число
name; // название, по csv стандарту, лучше в двойных кавычках. Символ кавычек - две двойные кавычки
course; // курс - поставить 1
code; // международный код валюты. Очень желательно чтоб он был
is_autoupdate; // ставить 't', чтоб по умолчанию курс обновился сам. Случится это в 12 дня по мск.
is_hidden; // валюта скрыта
is_default; // 't' для валюты по умолчанию

[objects]
id;
parent_id; // id родителя, -1 для корневого элемента
type; // 2 источник доходов, 3 категория затрат, 4 счёт.
name; // название, csv формат
user_id; // для импорта из других программ, всегда пустая строка
is_credit_card; // флаг для кредитной карты. на будущее
is_hidden; // элемент скрыт
is_for_duty; // долговой счёт
sort; // число для пользовательской сортировки. по умолчанию равно id.

[records]
sum; // сумма в копейках
currency_id; // id валюты
object_id; // id категории расходов или источника доходов. Для перемещений - id счёта "из которого" если сумма > 0, или "в который" если < 0. Для начальных остатков -1.
account_id; // id счёта
date;
comment; //комментарий, csv формат
user_id; // пустая строка

id - это просто уникальный идентификатор, можно использовать целочисленный счётчик.
Если есть начальные остатки
Ilyan
6 октября 2014 20:07
Спасибо!

Насчет id: я точно могу давать любые уникальные значения (до 31 бита)?

А что будет, если они совпадут с уже существующими id объектов этого или других пользователей?


Ну, и теперь когда я всех раздразнил, можно я за это (написание и поддержка скрипта) попрошу годовой премиум?
Вы ведь его даете всего за 5 рефералов - думаю, 5 активных пользователей "Домашней бухгалтерии" от keepsoft эта фича привлечет :)
Admin
 
6 октября 2014 20:17
Ilyan Пишет:
я точно могу давать любые уникальные значения (до 31 бита)?
Да, на сервере они всё равно будут преобразованы.
Премиум - ок.
Ilyan
7 октября 2014 13:01
Спасибо!

У меня дома сейчас проблемы с интернетом, но надеюсь, к концу недели сделаю.
Amargo
7 октября 2014 13:36
Я тут поэкспериментировал на тестовом аккаунте, в результате у меня довольно просто получилось загрузить расходы+доходы за сентябрь 2014-го, например.

но сразу нарисовались проблемы. Есть пара вопросов.

в первый раз пришлось немного поводиться. но с 3-е попытки всё прошло хорошо.

выглядело это так:
1. содал счета в Дребеденьги. необязательно точно такие же, как были в "ДБ"
2. выгрузил экспортом расходы из ДБ
3. выгрузил экспортом доходы из ДБ
получилось 2 файла .cvs расходы092014.cvs и доходы092014.cvs

тут начинаются танцы с бубном) много ctrl+c -> ctrl+v, очень много )
нам понадобится MS Excel или LibreOffice Calc и Notepad++

4. Открываем расходы092014.cvs в MS Excel видим таблицу, простой операцией добавляем минус "-" к столбцу сумм, иначе Дребеденьги засунет эти строчки в Доходы, гугл подскажет как.
5. Открываем доходы092014.cvs в MS Excel в соседнем файле и копируем в первый файл добавляя.
6. выделяем столбец даты и сортируем с галочкой "Expand selection" "расширить диапазон", получаем расходы и доходы вперемешку, но отсортированные по дате.
7. для начала меняем столбцы местами, чтобы сразу получить формат:
SUM;[currency];[object];[account];[date];[comment];

тут у нас 2 проблемы, но они легко решаемы
а) у нас суммы сразу с валютой вида 437,00р. а нам нужно разделить это на 2 столбца 437,00|Руб
это легко, например, открываем чистый лист Excel, копируем туда столбец сумм, сначала автозаменой удаляем "р.", потом рядом создаём такой же столбец заполненный полностью "Руб". Оба столбца копируем в основной лист.
здесь же! лучше сразу автозаменой поменять запятую на точку в разбиении разрядов.
Здесь же! Важно! удалить автозаменой пробел после тысячного знака, например, "2 387.00руб." привести к виду "2387.00руб."
иначе импорт в Дребеденьги будет ругаться!
б) нужна ";" после последнего столбца, для этого в стобце после последнего произвольно заполняем одну любую ячейку любой буковой. (после всех операций просто удалим эту букву уже в Notepad++, а Excel будет считать этот столбец рабочим и при сохранении в .cvs сам проставит везде ";;" где комментарии пустые.

8. теперь главная проблема с сопоставлением двух столбцов Категория+Подкатегория из "ДБ" в один столбец [account]
я решил проблему так: сначала слил "merge" в Excel 2 столбца в один. Гугл подскажет как, потом уже загрузив в Дребеденьги зашёл в Справочники - Категории затрат и выполнил руками "Перенести траты в другую категорию - Переносим в ..."
благо категорий не более 2 десятков.
Тоже самое можно сделать сразу в Notepad++ автозаменой, в принципе.
Количество действий будет одинаковым. Да, это не совсем быстро, категорий может быть 40-50, у кого как, но с другой стороны, это делается один всего раз, на десятки тысяч записей за несколько лет. Так что даже 50 кликов это не так страшно.

Но это мы немного вперёд забежали.
9. что у нас получилось?
таблица в Excel вида:
235.00| Руб| Кошелёк|Категория1 Подкатегория2|02.09.2014|комментарий или пусто|пп(произвольные пара букв|
1134.00| Руб| Карта Сбербанка|Категория2 Подкатегория2|03.09.2014|комментарий или пусто| |
сохраняем в файл ready-for-import.cvs выбираем при сохранении формат .cvs в качестве разделителя ставим ; А когда Excel предупреждение покажет, что при сохранении в этот формат может что-то там потеряться , соглашаемся, что мы это понимаем.

10. открываем этот файл в Notepad++. Удаляем в первой строчке нашу произвольную пару букв пп
конвертируем кодировку в UTF-8
Автозаменой меняем названия счетов, до полного совпадения с названиями счетов в Дребеденьги!
сохраняем файл.
Можно сейчас прогнать автозамену по категориям.

11. Импортируем файл. Перед окончательной записью Дребеденьги показывает что получится и выводит ошибки если они есть.
исправляем ошибки и импортируем окончательно.

12. приводим в порядок Категории.

Отдельным постом напишу сейчас какие остались нерешенные вопросы
Amargo
7 октября 2014 13:52
нерешённые вопросы(разобью по пунктам, чтобы можно было отвечать отдельно):

1.Валюты!
при экспорте расходов и доходов в разных валютах мы получаем 3 пары столбцов, котрые нам надо упихнуть в SUM;[currency];
это не трудно сделать в Excel объединением, но если это данные за 10 лет, то это уже не так просто
В идеале, надо бы скриншоты сделать и показать наглядно.
100,00р0,00$0,00ЄКошелек
445,00р0,00$0,00ЄКошелек
0,00р1,30$0,00ЄКошелек
0,00р0,00$8,40ЄКошелек

если есть знатоки Excel, или гуглить надо, но наверняка можно напистаь скрипт, которых объединит 3 столбца в один, по принципу "убираем ячейку с нулями", я даже догадываюсь как это сделать, думаю, за 20 минут в гугле разберусь и сам, но может, кто-то знает сразу?

2. начальные остатки.
сразу 10 лет экспортировать страшно, проверять трудно, хотелось бы частями.
Я вот загрузил с 1-го сентября для пробы по сегодня. И сразу проблема - в "ДБ" я не могу посмотреть какие были остатки на счетах на 01.09.2014

Варианты решения - забить до окончательного импорта, а потом подправить остатки так, чтобы совпало с сегодняшним.
Наверное это самое разумное?

3. старые счета, закрытые.
в "ДБ" есть счета, которые я юзал давно и перестал, допустим в период с 2006 по 2008 год открывал карту в Альфа-банке. потом закрыл навсегда и из списка счетов удалил. Но по ней же были расходы и она фигурирует в расходах-доходах.

Решение: долго и нужно проверять какие счета были(можно сделать отчёт за всё время в ДБ и увидеть) потом аккуратно завести все счета в Дребеденьги. Муторно, но не вижу другого пути.
Проблема в том, что надо будет искать и проверять переносы между этими счетами, например
открывал я эту карту в Альфе в 2006, я же её как-то пополнил первый раз? С какого счёта? Налом или переводом из другого банка? А при закрытии снимал деньги. Если эти операции не отразить, фигня в остатках получится.

4. Должники и Кредиты.
фиг знает, у меня их совсем мало и они все закрыты, открыто пара мелких типа "одолжил 1000р. до зарплаты другану" может проще забить на историю и просто руками завести те несколько , что есть.
Admin
 
7 октября 2014 14:22
Amargo Пишет:
Наверное это самое разумное?
Да, начальные остатки можно внести потом. Но и в самом импорте есть способ их включить, см. -1 в кач-ве категории.
Ilyan
7 октября 2014 17:36
Amargo Пишет:
тут начинаются танцы с бубном
Уже скоро все будет гораздо проще )
aleter
7 октября 2014 22:52
давай Ilyan мы верим в тебя))
Amargo
8 октября 2014 09:46
Да фиг знает, а нужно ли оно проще, операция-то разовая по сути.
P.S. ненавижу Excel и MS в целом, упоротые идиоты, после замены запятой на точку, он часть(не все, а только часть!) чисел переводит в дату! Убивать.
Amargo
8 октября 2014 09:51
Так, у меня проблема с перемещениями.
>>Импорт перемещений и долгов
>> Перемещение состоит из двух транзакций, доходной и расходной, которые должны >>следовать строго друг за другом
>> Категория затрат у расходной транзакции — это место хранения, В КОТОРОЕ >>перемещаем, а источник дохода у доходной — ИЗ КОТОРОГО перемещаем
------------------
То есть, на каждое перемещение должно быть 2 строчки
допустим, у меня в файле экспорт ДБ такая строка:
06.10.2014MasterCard СбербанкMasterCard Русский Стандарт62 000,00р

я правильно понимаю, что мне нужно сделать из неё 2 строки вида
-62 000,00 Руб MasterCard Сбербанк MasterCard Русский Стандарт06.10.2014
62 000,00 Руб MasterCard Русский Стандарт MasterCard Сбербанк 06.10.2014

так?
ээ.. я что-то не представляю, как это автоматизировать в экселе?
Amargo
8 октября 2014 10:39
Вроде придумал, копирование дубликата на другой лист -> изменение сумм на отрицательные -> перемена местами столбцов -> копирование дубля под оригинал -> сортировка по дате
1 2 3 4 5 6  Туда  
Чтобы отвечать на сообщения - зарегистрируйтесь и войдите в личный кабинет.