При внедрении отраслевого решения 1С:Транспортная логистика, экспедирование и управление автотранспортом КОРП пользователи и разработчики часто сталкиваются с ситуацией, когда типовые документы списания и поступления безналичных средств не формируют остатков на расчетных счетах. Попытка сформировать стандартный отчет по денежным средствам показывает только обороты за период, но не конечный баланс организации. Разберем архитектурные причины такого поведения конфигурации и детально рассмотрим варианты решения данной задачи.
Проанализируем структуру регистров конфигурации. При проведении расчетно-платежных документов (таких как СписаниеСРасчетногоСчета или ПоступлениеНаРасчетныйСчет) движения формируются по двум основным регистрам:
ВзаиморасчетыСКонтрагентами — регистр накопления с видом Остатки, фиксирующий состояние расчетов с заказчиками и перевозчиками.ДвижениеДенежныхСредств — регистр накопления с видом Обороты, предназначенный исключительно для анализа структуры денежных потоков по статьям ДДС (Cash Flow).Конфигурация позиционируется как специализированная TMS/FMS-система (управление перевозками и автопарком). Заявленный разработчиком финансовый учет включает в себя расчет маржинальности рейсов (P&L), учет прямых и косвенных затрат на автопарк, а также взаиморасчеты с контрагентами. Полноценный контур казначейства и контроль фактических остатков денег на счетах 50 и 51 в базовую поставку не заложен, так как эти функции обычно делегируются регламентированным или комплексным системам учета.
Рассмотрим возможные пути решения задачи в зависимости от архитектуры предприятия.
В типовой методологии 1С отраслевые решения работают в связке с системами бухгалтерского или комплексного учета (1С:Бухгалтерия предприятия, 1С:ERP Управление предприятием или 1С:Комплексная автоматизация). Разберем по шагам эту схему:
Если учет предприятия необходимо полностью замкнуть внутри отраслевой конфигурации без покупки сторонних модулей, оптимальным решением является добавление собственного регистра накопления с видом Остатки. Чтобы сохранить конфигурацию на полной типовой поддержке поставщика, реализуем доработку через расширение конфигурации.
Разберем по шагам порядок создания функционала:
В расширении создаем новый регистр накопления ДенежныеСредства с видом Остатки.
Определим его структуру:
Измерения:
Организация (СправочникСсылка.Организации)БанковскийСчетКасса (СправочникСсылка.БанковскиеСчета, СправочникСсылка.Кассы)Валюта (СправочникСсылка.Валюты)Ресурсы:
Сумма (Число 15.2)СуммаУпр (Число 15.2, если в базе ведется параллельный управленческий учет)Для документов движения денежных средств (ПоступлениеНаРасчетныйСчет, СписаниеСРасчетногоСчета, ПриходныйКассовыйОрдер, РасходныйКассовыйОрдер) создаем подписку на событие ОбработкаПроведения.
В общем модуле расширения описываем логику формирования движений при проведении документов. Посмотрим на пример кода для обработки списания с расчетного счета:
Процедура Расш_ОбработкаПроведенияДвиженияДС(Источник, Отказ, РежимПроведения) Экспорт
Если Отказ Или Не Источник.Проведен Тогда
Возврат;
КонецЕсли;
Движения = Источник.Движения;
НаборДенежныеСредства = Движения.ДенежныеСредства;
НаборДенежныеСредства.Записывать = Истина;
Движение = НаборДенежныеСредства.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Источник.Дата;
Движение.Организация = Источник.Организация;
Движение.БанковскийСчетКасса = Источник.БанковскийСчет;
Движение.Валюта = Источник.ВалютаДокумента;
Движение.Сумма = Источник.СуммаДокумента;
КонецПроцедуры
Создаем документ или универсальную обработку ввода начальных остатков по новому регистру на дату запуска учета, а также разрабатываем отчет на базе Системы компоновки данных (СКД), обращающийся к виртуальной таблице РегистрНакопления.ДенежныеСредства.ОстаткиИОбороты.
Принимая решение вести остатки денег непосредственно внутри специализированной логистической базы, проанализируем следующие риски: