Проектирование архитектуры денежных взаиморасчетов — одна из самых ответственных задач при разработке самописной конфигурации. Нам необходимо не просто фиксировать факт передачи денег, но и обеспечить прозрачность потоков между тремя сторонами: Заказчиком, Менеджером и Разработчиком. При этом система должна позволять детализировать данные по проектам и платежным системам.
Рассмотрим два основных подхода, которые чаще всего применяются в экосистеме 1С: использование регистров накопления и использование регистра бухгалтерии. Разберем их преимущества, структуру и логику работы.
Этот подход считается классическим для управленческих систем, где важна скорость работы и простота структуры. Мы разделим учет на два контура: взаиморасчеты (обязательства сторон) и движение денежных средств (фактическое наличие денег на счетах).
Проанализируем структуру первого регистра ВзаиморасчетыПоЗаказам (тип: Остатки):
Проект, Менеджер, Заказчик, Исполнитель.Сумма.Структура второго регистра ДвиженияДенежныхСредств (тип: Остатки):
Проект, ВладелецКошелька (Контактное лицо), ПлатежныйСчет (банковский счет или электронный кошелек).Сумма.Рассмотрим логику работы документов в этой модели:
1. Поступление оплаты от Заказчика менеджеру:
Документ делает две записи (движения):
ВзаиморасчетыПоЗаказам. Мы фиксируем, что по данному проекту долг перед заказчиком закрыт (или возник аванс).ДвиженияДенежныхСредств. Увеличиваем остаток на виртуальном или реальном кошельке Менеджера.2. Выплата Разработчику:
Документ делает следующие движения:
ДвиженияДенежныхСредств со счета Менеджера.ДвиженияДенежныхСредств на счет Разработчика (если мы ведем учет его кошельков).ВзаиморасчетыПоЗаказам, уменьшая задолженность перед Разработчиком за выполненную работу.Главный минус этого подхода, который мы должны учитывать: при получении отчетов нам придется делать сложные запросы с объединением по полям Отправитель и Получатель, чтобы увидеть общую картину. Чтобы этого избежать, в современных системах вводят понятие Объекта расчетов (например, Договор или Заказ), который выступает ключом связи.
Этот вариант более гибкий и методологически правильный, если нам нужно контролировать «целостность» системы (баланс). Здесь используется механизм двойной записи (Дт — Кт).
Для реализации нам понадобится простой ПланСчетов со следующими счетами:
КонтактноеЛицо, Проект.КонтактноеЛицо, ПлатежныйСчет.КонтактноеЛицо, Проект.Разберем проводки, которые будут отражать бизнес-процесс:
Дт Менеджер (Субконто: Менеджер Иванов, Кошелек WebMoney) — Кт Заказчик (Субконто: ООО "Ромашка", Проект "Сайт")
Дт Разработчик (Субконто: Петров, Проект "Сайт") — Кт Менеджер (Субконто: Менеджер Иванов, Кошелек WebMoney)
Преимущества данного метода очевидны: мы всегда видим баланс. Сумма на счете Менеджера покажет, сколько денег у него «на руках» в данный момент. Мы легко можем добавить новые разрезы учета, просто добавив Субконто к счету, даже не меняя структуру регистра накопления.
Независимо от выбранного типа регистра, для качественной системы взаиморасчетов проанализируем следующие аспекты:
В схеме «Заказчик -> Менеджер -> Разработчик» неизбежно возникает разница в суммах (доход компании/менеджера). В регистрах накопления для этого рекомендуется создать отдельный оборотный регистр ДоходыРасходы. При выплате разработчику сумма его вознаграждения (например, 70%) списывается с проекта, а остаток (30%) должен фиксироваться как прибыль. Без этого вы не сможете ответить на вопрос: «Сколько мы заработали на проекте X?».
Даже если сейчас расчеты идут только в рублях, закладывайте в ресурсы регистра три типа сумм:
СуммаВзаиморасчетов (в валюте договора, например, USD).СуммаУпр (в единой валюте базы для отчетов руководству).СуммаРегл (для отчетности, если это потребуется).Это позволит избежать переписывания всей архитектуры при появлении первого иностранного контрагента.
Если платежных систем много (разные банки, кошельки, криптообменники), не стоит плодить измерения в регистре накопления. Выясним причину: это раздувает таблицы и замедляет работу. Правильнее использовать справочник БанковскиеСчета или ЭлектронныеКошельки, где в реквизитах будет указана принадлежность к платежной системе, а в регистре хранить только ссылку на этот элемент справочника.
Проанализируем ситуацию: если ваша база предполагает огромный объем микротранзакций (тысячи в час), выбирайте регистры накопления из-за их высокой производительности на запись. Если же вам важна аналитическая гибкость, возможность быстро строить баланс и отслеживать, «куда делись деньги», регистр бухгалтерии будет вне конкуренции.
Оптимальным решением для самописной конфигурации среднего масштаба будет использование регистров накопления с четким разделением на «Обязательства» и «Денежные средства», как это реализовано в типовых решениях уровня 1С:Управление нашей фирмой (УНФ) или 1С:Управление торговлей.