Каждый из нас хотя бы раз задумывался об учете своих доходов и расходов, а возможно даже и пробовал, каким-либо образом, планировать свой бюджет. Однажды и мне пришла такая мысль. Изначально была написана программа на C++ с использованием библиотеки Qt. Идея была в написании небольшой программы со справочниками статей доходов/расходов, но в дальнейшем была реализована возможность планирования и учета полученных и выданных долгов. Программу в этой версии я выкладывать не хочу, т.к. оглядываясь назад – понимаю, что стиль написания кода был максимально плохим. Тогда еще не было никакого опыта в коммерческой разработке, понимания паттернов и чистого кода. В 2022 алгоритмы учета и планирования были перенесены на платформу 1С, которые и будут здесь описаны.
Решение переписать все на платформу 1С пришло во время работы в этой сфере. Описываемся конфигурация была написана больше для изучения возможностей IDE 1С:EDT и СКД.
Цели проекта
- Написать простой и удобный инструмент для ведения домашней бухгалтерии;
- Изучение IDE от 1С – 1С:EDT;
- Отработка знаний по СКД, полученных из курсов.
Немного теории.
Сам учет до банального прост, расходы/доходы учитываются в разрезе статей расходов/доходов соответственно одновременно отнимая или прибавляя сумму движения к сумме указанного счета.
Алгоритм планирования несколько сложнее.
Изначально нужно определиться с периодом планирования. Например, будет один месяц: 01.10.2022 – 31.10.2022. Далее нужно определить сумму затрат в которую мы хотим уложиться. Пусть это будет 25 000 руб.
Далее нужно учитывать плановые расходы. Плановый расход представляет из себя запись с планируемой датой покупки, суммой, необходимой для покупки, и наименованием. Например, мы наверняка знаем о своих следующих затратах на этот месяц:
- Коммунальные платежи | 10.10.2022 | 4000
- Заправка автомобиля 1 | 01.10.2022 | 2000
- Заправка автомобиля 2 | 15.10.2022 | 2000
- Оплата связи | 11.10.2022 | 500
Для примера достаточно. Исходя из этого, мы считаем, что сумма наших плановых расходов будет 9 500 руб. Но помимо плановых расходов существует еще множество различных мелких расходов и расходы на еду (которые так же могут быть плановыми, но мы рассмотрим случай, когда они таковыми не являются).
Теперь считаем, что с учетом плановых расходов (9500 руб.) и выделенных 25 000 руб. на планируемый месяц, мы имеем 15 500 руб. оставшихся («свободных») денег. Которые будут равномерно распределены на каждый день планируемого периода. 15500 / 31 = 500 руб. На дни, в которых есть плановые расходы, будет выделена сумма «свободных» денег и сумма на плановый расход.
01.10.2022 | 500 + 2000 = 2000
02.10.2022 | 500
03.10.2022 | 500
…
10.10.2022 | 500 + 4000 = 4500
…
20.10.2022 | 500
…
31.10.2022 | 500
Надеюсь, принцип понятен.
Далее, каждый день, мы вносим расходы. По окончании дня – завершаем его (подсчитываем, уложились ли мы в плановую сумму расхода). Если потратили меньше или больше, перерасход или остаток распределяется на весь оставшийся период, либо на следующий день.
Таким образом, мы видим динамику соблюдения выделенных на день сумм, и то, как нужно действовать при перерасходах или недорасходах.
Так же необходим учет долгов. Тип долга: мне/от меня. Долг записывается как запись вида:
Тип долга | Кому(от кого) | Сумма | Счёт | Комментарий
При создании долга – сумма долга вычитается/прибавляется к сумме на счете.
Так же нужно иметь список счетов и сумм на них.
В целом, это вся концепция учета. Далее перейдём непосредственно к описанию реализации на платформе.
Реализация
Учет доходов/расходов
Для учета создано два справочника «статьи расходов» и «статьи доходов». Как было сказано выше, в них только наименование статей.

Так же, есть справочник счетов, каждый элемент которого содержит в себе наименование счета.

Перечисление с типамм операций:
- Доход
- Расход
Далее есть два регистра сведений «Ежедневные расходы» и «Ежедневные доходы». Структура регистров:
Измерения : Дата, Статья,
Ресурсы: Сумма
Реквизиты: Комментарий

Учет средств на счетах реализован с помощью регистра накопления «Движение денежных средств»
Его структура:
Измерения: Счет
Ресурсы: Сумма

Вышеописанные три регистра подчинены регистратору- документу «Дневное движение денежных средств». Этот документ создается один раз в день (даже если движений не было). В нем указываются доходы и расходы на соответствующих вкладках. Так же в документе указано, как распорядится перерасходом или остатком в случае его появления (поле активно в случае, если закрываемый день находится в периоде, который имеет план): «Распределить на период», «Пересчитать следующий день» и «Без изменений» (Значения берутся из перечисления «Тип финализации дня»).
В процессе внесения движения ДС, в документе отображается динамическая информация: сколько было выделено средств на день, сколько осталось с уже введенными расходами, так же отображаются плановые расходы в выпадающем списке. Помимо даты создания документа, на форме отображается дата движения, именно по этому полю будут делаться движения в регистре.

Для удобства существует константа, которая указывает какой счет использовать по умолчанию. При добавлении строки расхода в документ Движения денежных средств, счет проставляется автоматически в соответствии со значением, выбранным в константе.
Учет долгов
Для учета долгов созданы два типа документов «Долг» и «Закрытие долга».
При выдаче или взятии долга создается документ «Долг». В нем указывается тип долга «Мне»/«От меня», Кому или от кого был долг (в формате строки), сумма и счет учета. При проведении создаются движения в регистре накопления «Движения денежных средств».

Для гашения долга Создается Документ типа «Закрытие долга» на основании документа «Долг», по которому долг был создан. Документ не имеет редактируемых реквизитов и при проведении делает неактивным движение регистра «Движение денежных средств», которое было создано документом «Долг». Здесь не раз возникал вопрос правильности реализации, делать движение долга неактивным, или делать противоположное движение. И я решил остановиться на неактивности записи.
Перевод средств между счетами
Для перевода средств между счетами существует тип документа «Перевод денежных средств». В нем указывается сумма перевода и счета – откуда и куда. При проведении делается два движения в регистре «Движения денежных средств».

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

Планирование бюджета
Для планирования бюджета созданы следующие элементы метаданных:
Документ «Бюджетирование». Его реквизиты:
- Дата начала планирования
- Дата окончания планирования
- Планируемая сумма расхода
- Табличные части с плановыми расходами/доходами (Дата, сумма, наименование)
В документе указывается дата начала периода планирования и дата его окончания, сумма, выделенная на период, а также две табличные части с плановыми расходами и доходами.
Для удобства создан справочник «Плановые ДДС», в него можно внести плановые расходы/доходы, которые производятся каждый месяц. В документе Бюджетирования есть кнопка «Заполнить периодическими элементами», при нажатии на которую, документ заполнится элементами из справочника, недостающие элементы можно внести руками.

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


Отчетность
Для контроля в системе есть три отчета: Расходы за период, доходы за период и остатки по счетам. Отчеты построены с помощью системы Компоновки данных.

Алгоритм работы.
После разворачивания конфигурации нужно создать элементы справочника “Счета” для разделения учёта. Раздел “НСИ”.
Далее заполняются справочники со статьями затрат и доходов. Нужно заранее подумать в разрезе каких статей вы хотите вести учёт. Раздел “НСИ”
После этого вводятся начальные остатки на счета. Раздел “Оперативный учёт”
Теперь пользователь решает, нужно ли ему планировать свои расходы, или он будет пользоваться конфигурацией только для записи движений ДС. Можно комбинировать различные способы, к примеру, в один месяц создавать план, в другой просто вести учёт.
Если нужно создать план, то выбираем документ бюджетирование из раздела “Оперативный учёт” и создаём период планирования с выделенной суммой и плановыми расходами.
После создания плана, каждый день создаём один документ “Движение денежных средств” с внесенным расходами и доходами.
Периодически контролируем показатели с помощью встроенных отчётов.
Вывод.
Платформа 1с позволяет за несколько дней создать неплохой инструмент для ведения личной бухгалтерии. Для построения подобного инструмента с помощью других средств ушло бы намного больше времени. Но нужно учесть, что для использования данной конфигурации следует приобрести лицензию на платформу (или нет…).
Не планирую поддерживать проект в дальнейшем, поэтому выкладываю его как есть. В проекте есть ошибки, исправлять которые нет времени и желания. Можете использовать конфигурацию по своему усмотрению.