logo
logo

Форум Структура данных

создать новую тему раскрыть все
Структура данных JaRule 13/10/2015 16:39 #написать ответ
Добрый день, Сергей!
Если можно, хотел бы задать Вам несколько вопросов касательно AbilityCash. Я сам разработчик подобных программ, и сейчас разрабатываю программу чем-то похожую на Вашу, и мой заказчик все время мне ставит ее в пример. Мне хотелось бы узнать следующее. Я смотрю, у вас файлы данных с таким интересным расширением .cash - это Вы собственную мини-субд разрабатывали? Или на самом деле это файл какой-то из стандартных субд с измененным расширением?
И, как программа работает с остатками на счетах за дату? Они  хранятся на ежедневной основе или за каждую дату остатки на счетах высчитываются исходя из операций? Я спрашиваю, потому что передо мной сейчас стоит подобный выбор как это реализовать, и хотелось бы с Вами посоветоваться, если это возможно.
Заранее спасибо!
Попробую ответить. Dervish 13/10/2015 18:32 #написать ответ
чем-то похожую на Вашу, и мой заказчик все время мне ставит ее в пример
Даже интересно, а что именно не устроило заказчика в моем творении?
 
Я смотрю, у вас файлы данных с таким интересным расширением .cash
Ну как бы Windows никого не ограничивает в том, какое расширение давать файлу. Вы можете свое придумать для своей программы, главное, это не пересечься с уже существующим расширением. Например, делать расширение .docx нежелательно, иначе Ваши файлы будут путаться с файлами MS Word.
 
Вы собственную мини-субд разрабатывали?
AbilityCash версий 2.0 и 2.1 записывала файлы cash в своем собственном формате. Я не стал бы называть это мини-СУБД, это просто свой собственный формат данных. Кстати, не самый удачный. Именно поэтому AbilityCash версии 3.0 в файлы cash записывает при помощи СУБД SQLite, которая идеально подходит для задач такого типа.
 
Если на файл данных не установлен пароль, то файл cash от третьей версии программы можно открыть при помощи сторонних утилит, понимающих формат SQLite. Например, можете воспользоваться утилитой DB Browser for SQLite. А если пароль установлен, то файл данных шифруется и открыть его нельзя ничем. Забытый пароль = потерянные данные, я даже не буду пытаться расшифровать AES-256.
 
И, как программа работает с остатками на счетах за дату? Они хранятся на ежедневной основе или за каждую дату остатки на счетах высчитываются исходя из операций?
AbilityCash сохраняет остаток после исполнения операции в самой операции. Все остатки хранятся в таблице операций. Не берусь утверждать, что это лучший подход, но для той задачи, как я ее ставил, он работает нормально. Подойдет ли такое решение Вашему заказчику или нет, я не знаю потому что не представляю, что за задачу он решает.
Большое спасибо JaRule 14/10/2015 13:13 #написать ответ
Огромное Вам спасибо за ответ. Ваша программа не устраивает моего заказчика только тем что в ней нет таких понятий как Клиент, Валютная позиция, Курсовая разница и Переоценка. Хочет он практически точную копию только со всем вышеназванным, и мне очень тяжело ему объяснить что у программистов разные почерки и логики решения задач, и потому на выходе будет даже если что-то похожее, то все равно далеко не точная копия.
Что касается хранения остаток на счетах - мысль интересная хранить их в операциях, хотя я предпочитаю просто хранить ежедневные за каждый день, но заказчик хочет чтобы даже в этом плане все походило на то как у Вас.
Мне кажется,... Dervish 15/10/2015 11:16 #написать ответ
...что по крайней мере два пункта из списка Вашего заказчика могут быть решены в AbilityCash. Клиенты легко добавляются при помощи Классификаторов, которые довольно полно описаны в документации.
 
Валютная позиция тоже может быть посчитана, если включить представление счетов в виде дерева (меню "Файл", пункт "Настройки файла данных...", поставить галочку в поле "Представлять счета в виде дерева"). Тогда счета, на которых формируется эта самая валютная позиция, можно собрать в отдельной папочке дерева и почитать суммарный остаток по ним (выбрать валюту в поле "Пересчитать остатки в валюте" на странице счетов).
 
Курсовая разница и переоценка... Наверное это тоже можно сделать, если правильно расписать учетную политику. Кстати, а как предлагает считать эти параметры Ваш заказчик?
Курсовая разница + переоценка Star 03/11/2015 01:57 #написать ответ
счета, на которых формируется эта самая валютная позиция, можно собрать в отдельной папочке дерева и почитать суммарный остаток по ним (выбрать валюту в поле "Пересчитать остатки в валюте" на странице счетов).

 
Валютная позиция формируется из суммы остатков по всем имеющимся в Валюте счетам.
 
Курсовая разница и переоценка... Наверное это тоже можно сделать, если правильно расписать учетную политику.

 
Учетная политика не решает, т.к. это специальный механизм:
курс. разница = разница соотношений сумм в валютах операции по учетному курсу и по курсу операции
переоценка = разница в оценке валютной позиции по старому учетному курсу и новому.
 
В целом, есть алгоритмы, которые вполне могли бы быть интегрированы в вашу чудесную программу, но с оговоркой - они подходят исключительно для тех, кто выбрал учетную политику с 2-м учетом (без висячих операций типа доход/расход).
Валютная позиция. Dervish 03/11/2015 09:55 #написать ответ
Валютная позиция формируется из суммы остатков по всем имеющимся в Валюте счетам.
Создаете еще один план счетов (меню "Файл", "Настройки файла данных", галочка в поле "Использовать несколько планов счетов"), в новом плане для каждой валюты создаете собственную папочку и разносите по папкам все счета по валютам. В папке будет показан суммарный остаток в валюте этой папки, если нужно все пересчитать в единой валюте, то выбираете ее в поле "Пересчитать остатки в валюте".
Это оригинальный выход Star 03/11/2015 11:07 #написать ответ
не знал, что можно одни и те же счета использовать в разных планах.
 
Однако это не решает главной задачи, из-за которой сыр-бор:
баланс в программе не бьется из-за отсутствия учета курсовых разниц и переоценки. Сами по себе валютные позиции практически нужны именно для сведения баланса.
помогает одинарная запись... Daniil 05/11/2015 02:51 #написать ответ
... если вести учет в этой программе двойной записью, и сделать переоценку, то Баланс не пойдет. Тогда на эту сумму делаете одинарную запись в прибыль или убыток, по результатам переоценки.
Так и было, но Star 05/11/2015 16:07 #написать ответ
эту поправку невозможно исследовать - она может включает в себя:
- другие одинарные записи (сделанные по ошибке, если выбрана политика вести только 2-й учет)
- курсовые разницы
- переоценку.
 
А курсовые разницы могут быть нужны для различных практических дел.
 
Баланс должен считаться автоматически - а то это как добавить в песочные часы полчасика)))) как в известном фильме "Тот самый Мюнхгаузен"
ПО самовольно делает 1-ю запись из 2-ой проводки ... Daniil 05/11/2015 20:09 #написать ответ
... поэтому и надо "добивать" Баланс еще одинарной проводкой.
 
Как вариант:
при выборе счета с валютой надо указывать счет куда будет сбрасываться курсовая разница.
 
Счет что бы можно было выбирать произвольно: для баксов один, для юаней другой, для тушенки третий.
 
"Тушенка" - товарная валюта, кто не сразу понял. Вникайте.
Мозг виснет? А могут быть и кирпичи. Та что входите в норму быстрее, как бы чего не вышло)))
 
Сейчас ПО самовольно производит рассчет с "половиной проводки", поэтому вторую половину, что бы "шел" Баланс надо вбивать ручками. Ну .......... не комильфо.
Все верно Star 08/11/2015 12:52 #написать ответ
хотя не обязательно много счетов, на которые относить курс. разницу - можно и на один сваливать (для тех "валют", которые не являются критичными. "тушенка", например). но это все - настройки.
 
сложный вопрос возникает при смене задним числом курсов или позиций (нужно будет пересчет делать), а также такая система должна запретить менять валюту баланса.
А я вот, честно говоря, не понял Loki 08/11/2015 21:17 #написать ответ
какой смысл в курсовых разницах, если курс может меняться задним числом?
Если вспомнить бухучет (ведь ноги у курсовых разниц растут именно оттуда), то курсовая разница это прибыль или убыток по валютному счету на дату отчета. То есть после отчета никаких "задних чисел" быть не может. В противном случае надо переделывать отчет.
Вы правы Star 09/11/2015 01:29 #написать ответ
понадобится пересчет. но какая проблема его сделать за период?
не будет идти баланс Star 05/11/2015 16:29 #написать ответ
и в другом случае - если сделать обмен валют по курсу, отличающемуся от действующего на этот день.
а Вы опять одинарной ........... Daniil 05/11/2015 20:13 #написать ответ
......... по этой системе грохните и все пойдет.
Конечно тяжело из "Баланса" вычленять доллары, евро, депозиты, тушенку, незамерзайку и пр.пр.пр.
Ну не биться же в истерике?
 
зы
Если очень кому-то надо , то господа есть платный продукт 1 ....
Вообще гадость какая-то, но платная, значит "хорошая".
В истерике никто не бьется Star 08/11/2015 12:46 #написать ответ
но подгонять руками постоянно несерьезно.
 
А преимущества AbilityCash огромны против других - она изящна, удобна и отлично продумана. Удачная, короче, программа.
 
Все, что хотелось сказать в вопросе о позициях, курсах и т.д. - очень-очень жаль, что автор не реализовал эти механизмы. Почему-то кажется, что это возможно.
сдерживать эмоции вредно(((( Daniil 08/11/2015 18:45 #написать ответ
ну хоть на боксерской груше написать АС)))))))))
- это тебе за баланс
- а вот курсовые разницы...
 
зы
Автор делал ПО не для профи, а для чайников. Т.е. 2-я запись, это дурной тон)))))
ПО сделано под 1-у запись. Вот где собака порылась)))
Но сделано довольно гибко, так что и другим "места" хватило.
все, успокоили))) (-) Star 09/11/2015 01:31 #написать ответ
если загрузить курсы... Daniil 06/11/2015 12:07 #написать ответ
... тоже не пойдет, если они изменились.
По цвету Баланса сразу видно: в выигрыше ты или в проигрыше, стоило валюту покупать или нет.
А подскажите, пожалуйста, пару нюансов по программе, если уж полезли в дебри :) EugeneL 26/10/2015 22:53 #написать ответ
AbilityCash сохраняет остаток после исполнения операции в самой операции. Все остатки хранятся в таблице операций. Не берусь утверждать, что это лучший подход, но для той задачи, как я ее ставил, он работает нормально

 
Подскажите, пожалуйста:
1. Если я веду учет с 2013-го года, и если я изменю операцию от 2013-го года, то это изменение вызовет каскадный пересчет всех операций по данному счету с 2013 года?
2. Допустим, существуют даты Д1 и Д2, причем Д1 < Д2. На Д1 существует введенный курс валюты В1(Д1). На дату Д2 была введена операция на сумму С1. Затем на дату Д2 был введен курс валюты В1(Д2). Какой курс валюты будет выбран системой при попытке пользователя отобразить отчет о расходах на дату Д3 > Д2 -  В1(Д1) либо В1(Д2)?
 
Заранее большое спасибо
Еще один конкурент? Dervish 26/10/2015 23:09 #написать ответ
Начинаю чувствовать себя кузницей кадров.
 
1. Да, будет каскадный пересчет.
 
2. Курс действует с момента установки (с даты курса) и до момента, пока не будет введен новый курс. Соответственно, ответ будет В1(Д2).
:) Нет. Просто я веду учет "задним" числом, и не уверен, как это отразиться программой EugeneL 26/10/2015 23:56 #написать ответ
И немного оффтопа:
 
я уже в ИТ около 10-и лет, из них 6 работал с 1С, собственно из опыта работы с ней и возникли вопросы - как 1С это посчитает я знаю на уровне т.н. "платформы", а как посчитает Ваше ПО, увы, нет.
Ну, и 4 года назад я перешел в автоматизированное тестирование - это интереснее автоматизации бухгалтерии и переучиваться не пришлось в свое время, поэтому с моей стороны создание еще одного конкурента Вам не грозит
Да нет проблем. Dervish 27/10/2015 00:06 #написать ответ
Каскадный пересчет, на самом деле, это не так уж и плохо. В данной программе, поскольку объем данных невелик и все они находятся в памяти. Конечно, если ориентироваться на большие массивы данных, то этот подход уже вряд ли подойдет и там пришлось бы поступать как-то иначе. А в масштабах AbilityCash это работает нормально.