Сокращение кассовых разрывов на 73%: кейс БДДС в 1С:ERP

Сокращение кассовых разрывов на 73%: кейс БДДС в 1С:ERP

Коротко: Производственная компания с оборотом 1,2 млрд руб./год сократила кассовые разрывы на 73% за 4 месяца, автоматизировав бюджет движения денежных средств (БДДС) и cashflow-прогнозирование в задачи по 1С:ERP. Ключевые инструменты: платёжный календарь, автоматические заявки на оплату, интеграция с договорами и производственными заказами. ROI проекта — 340% за первый год.

Почему производственные компании теряют деньги на кассовых разрывах?

Кассовый разрыв — это временной дефицит денежных средств, когда обязательные платежи (зарплата, налоги, поставщики) наступают раньше, чем приходят деньги от покупателей. Для производственных предприятий это особенно болезненная проблема: длинный производственный цикл, авансирование сырья, отсрочки покупателям — всё это создаёт хроническое несоответствие между входящими и исходящими потоками.

По данным опросов, которые мы проводили среди клиентов платформы, 67% производственных компаний сталкиваются с кассовыми разрывами не реже одного раза в квартал, а 23% — ежемесячно. При этом средняя стоимость «закрытия» одного разрыва через овердрафт или краткосрочный кредит составляет от 180 000 до 650 000 рублей в зависимости от суммы дефицита.

Главная причина — не отсутствие денег, а отсутствие видимости: финансовый директор не знает за 2–3 недели, какой будет остаток на счёте в конкретную дату. Планирование ведётся в Excel, данные из 1С выгружаются вручную раз в неделю, а к моменту сводки цифры уже устарели.

Портрет компании: с чем мы начали работу?

Наш клиент — производитель промышленного оборудования из Екатеринбурга. Для сохранения конфиденциальности назовём компанию «МашТех». Основные параметры на старте проекта:

  • Оборот: 1,2 млрд руб./год
  • Сотрудников: 340 человек
  • Производственный цикл: 45–90 дней
  • Среднее число активных договоров: 180–220
  • Кассовых разрывов за предыдущие 12 месяцев: 11 случаев
  • Суммарные потери на овердрафте и штрафах: 4,7 млн руб./год
  • Учётная система: 1С:ERP 2.5 (установлена 2 года назад, БДДС не настроен)

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

Как выглядела архитектура решения в 1С:ERP?

Прежде чем переходить к коду и настройкам, важно понять логику архитектуры. Мы построили трёхуровневую систему управления денежными потоками:

Уровень 1: Стратегический — БДДС на горизонт 12 месяцев

Годовой бюджет движения денежных средств с разбивкой по месяцам, статьям ДДС и ЦФО (центрам финансовой ответственности). Формируется раз в год, корректируется ежеквартально. В 1С:ERP это реализуется через подсистему Бюджетирование с видом бюджета «БДДС».

Уровень 2: Тактический — скользящий прогноз на 13 недель

Еженедельно обновляемый прогноз cashflow с горизонтом 13 недель. Источники данных: заявки на оплату, договоры с графиками платежей, производственные заказы, данные о дебиторской задолженности. Это «живой» документ, который финансовый директор видит каждое утро.

Уровень 3: Оперативный — платёжный календарь на 30 дней

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

Пошаговая настройка БДДС в 1С:ERP: технические детали

Рассмотрим ключевые технические решения, которые мы реализовали. Начнём с настройки автоматического формирования плановых поступлений на основе договоров с покупателями.

Шаг 1: Настройка статей движения денежных средств

В 1С:ERP статьи ДДС настраиваются в справочнике СтатьиДвиженияДенежныхСредств. Для МашТех мы создали иерархическую структуру из 47 статей, сгруппированных в три раздела: операционная, инвестиционная и финансовая деятельность. Критически важно было правильно настроить правила автоматического определения статьи при проведении документов.

Шаг 2: Автоматическое формирование плановых поступлений

Ключевая доработка — обработка, которая ежедневно анализирует договоры с покупателями, открытые заказы и историческую статистику оплат, формируя плановые поступления в платёжный календарь.

// Процедура автоматического формирования плановых поступлений
// на основе договоров и заказов покупателей
Процедура СформироватьПлановыеПоступления(ДатаНачала, ДатаКонца) Экспорт

	// Запрос для получения договоров с графиками платежей
	Запрос = Новый Запрос;
	Запрос.Текст =
		"ВЫБРАТЬ
		|	ДоговорыПокупателей.Ссылка КАК Договор,
		|	ДоговорыПокупателей.Контрагент КАК Контрагент,
		|	ДоговорыПокупателей.СуммаДокумента КАК СуммаДоговора,
		|	ГрафикиПлатежей.ДатаПлатежа КАК ДатаПлатежа,
		|	ГрафикиПлатежей.СуммаПлатежа КАК СуммаПлатежа,
		|	ГрафикиПлатежей.ПроцентОплаты КАК ПроцентОплаты
		|ИЗ
		|	Справочник.ДоговорыКонтрагентов КАК ДоговорыПокупателей
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикиОплатыПокупателей КАК ГрафикиПлатежей
		|		ПО ДоговорыПокупателей.Ссылка = ГрафикиПлатежей.Договор
		|ГДЕ
		|	ГрафикиПлатежей.ДатаПлатежа МЕЖДУ &ДатаНачала И &ДатаКонца
		|	И ДоговорыПокупателей.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПокупателем)
		|	И НЕ ДоговорыПокупателей.ПометкаУдаления
		|УПОРЯДОЧИТЬ ПО
		|	ГрафикиПлатежей.ДатаПлатежа";

	Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
	Запрос.УстановитьПараметр("ДатаКонца", ДатаКонца);

	РезультатЗапроса = Запрос.Выполнить();
	Выборка = РезультатЗапроса.Выбрать();

	// Обрабатываем каждую строку графика
	Для Каждого СтрокаВыборки Из Выборка Цикл

		// Проверяем, не создан ли уже плановый документ для этой даты и договора
	Если НЕ ПлановоеПоступлениеСуществует(СтрокаВыборки.Договор, СтрокаВыборки.ДатаПлатежа) Тогда

			// Создаём новый плановый платёж
			ПлановыйПлатёж = Документы.ПлановоеПоступлениеДенежныхСредств.СоздатьДокумент();
			ПлановыйПлатёж.Дата = ТекущаяДата();
			ПлановыйПлатёж.ДатаПоступления = СтрокаВыборки.ДатаПлатежа;
			ПлановыйПлатёж.Контрагент = СтрокаВыборки.Контрагент;
			ПлановыйПлатёж.Договор = СтрокаВыборки.Договор;
			ПлановыйПлатёж.Сумма = СтрокаВыборки.СуммаПлатежа;
			ПлановыйПлатёж.СтатьяДДС = ПолучитьСтатьюДДС("ПоступленияОтПокупателей");
			ПлановыйПлатёж.ВидПоступления = Перечисления.ВидыПоступленийДенежныхСредств.ОтПокупателя;

			// Рассчитываем вероятность поступления на основе истории
			ПлановыйПлатёж.Вероятность = РассчитатьВероятностьОплаты(СтрокаВыборки.Контрагент);

			ПлановыйПлатёж.Записать(РежимЗаписиДокумента.Запись);

		КонецЕсли;

	КонецЦикла;

КонецПроцедуры

// Функция расчёта вероятности оплаты на основе исторических данных
Функция РассчитатьВероятностьОплаты(Контрагент) Экспорт

	Запрос = Новый Запрос;
	Запрос.Текст =
		"ВЫБРАТЬ
		|	КОЛИЧЕСТВО(ИсторияОплат.Регистратор) КАК ВсегоПлатежей,
		|	СУММА(ВЫБОР
		|		КОГДА ИсторияОплат.ФактическаяДата <= ИсторияОплат.ПлановаяДата
		|		ТОГДА 1
		|		ИНАЧЕ 0
		|	КОНЕЦ) КАК СвоевременныхПлатежей
		|ИЗ
		|	РегистрСведений.ИсторияОплатКонтрагентов КАК ИсторияОплат
		|ГДЕ
		|	ИсторияОплат.Контрагент = &Контрагент
		|	И ИсторияОплат.Период >= ДОБАВИТЬКДАТЕ(&ТекущаяДата, МЕСЯЦ, -12)";

	Запрос.УстановитьПараметр("Контрагент", Контрагент);
	Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса());

	Результат = Запрос.Выполнить().Выбрать();

	Если Результат.Следующий() И Результат.ВсегоПлатежей > 0 Тогда
		Возврат Результат.СвоевременныхПлатежей / Результат.ВсегоПлатежей * 100;
	Иначе
		// Если истории нет — базовая вероятность 75%
		Возврат 75;
	КонецЕсли;

КонецФункции

Шаг 3: Алгоритм выявления кассовых разрывов

Центральный алгоритм проекта — автоматическое выявление дат с прогнозируемым дефицитом денежных средств и формирование уведомлений для финансового директора.

// Процедура анализа платёжного календаря и выявления кассовых разрывов
Процедура ПроанализироватьКассовыеРазрывы(ГоризонтДней = 30) Экспорт

	ДатаНачала = НачалоДня(ТекущаяДатаСеанса());
	ДатаКонца = ДатаНачала + ГоризонтДней * 86400;

	// Получаем текущие остатки по счетам
	ЗапросОстатки = Новый Запрос;
	ЗапросОстатки.Текст =
		"ВЫБРАТЬ
		|	ОстаткиДС.СчётУчёта КАК СчётУчёта,
		|	ОстаткиДС.СуммаОстаток КАК ТекущийОстаток
		|ИЗ
		|	РегистрБухгалтерии.Хозрасчетный.Остатки(
		|		&ДатаНачала,
		|		Счёт В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ДенежныеСредства)),
		|		,
		|	) КАК ОстаткиДС";

	ЗапросОстатки.УстановитьПараметр("ДатаНачала", ДатаНачала);
	ТаблицаОстатков = ЗапросОстатки.Выполнить().Выгрузить();

	ОбщийОстаток = ТаблицаОстатков.Итог("ТекущийОстаток");

	// Получаем плановые движения по дням
	ЗапросДвижения = Новый Запрос;
	ЗапросДвижения.Текст =
		"ВЫБРАТЬ
		|	НАЧАЛОПЕРИОДА(ПлановыеДвижения.ДатаОперации, ДЕНЬ) КАК Дата,
		|	СУММА(ВЫБОР
		|		КОГДА ПлановыеДвижения.ВидДвижения = ЗНАЧЕНИЕ(Перечисление.ВидыДвиженийДенежныхСредств.Поступление)
		|		ТОГДА ПлановыеДвижения.Сумма * ПлановыеДвижения.Вероятность / 100
		|		ИНАЧЕ 0
		|	КОНЕЦ) КАК ПлановыеПоступления,
		|	СУММА(ВЫБОР
		|		КОГДА ПлановыеДвижения.ВидДвижения = ЗНАЧЕНИЕ(Перечисление.ВидыДвиженийДенежныхСредств.Выбытие)
		|		ТОГДА ПлановыеДвижения.Сумма
		|		ИНАЧЕ 0
		|	КОНЕЦ) КАК ПлановыеВыплаты
		|ИЗ
		|	РегистрСведений.ПлановыеДвиженияДенежныхСредств КАК ПлановыеДвижения
		|ГДЕ
		|	ПлановыеДвижения.ДатаОперации МЕЖДУ &ДатаНачала И &ДатаКонца
		|СГРУППИРОВАТЬ ПО
		|	НАЧАЛОПЕРИОДА(ПлановыеДвижения.ДатаОперации, ДЕНЬ)
		|УПОРЯДОЧИТЬ ПО
		|	Дата";

	ЗапросДвижения.УстановитьПараметр("ДатаНачала", ДатаНачала);
	ЗапросДвижения.УстановитьПараметр("ДатаКонца", ДатаКонца);

	ВыборкаДвижений = ЗапросДвижения.Выполнить().Выбрать();

	// Рассчитываем накопленный остаток по каждому дню
	НакопленныйОстаток = ОбщийОстаток;
	СписокРазрывов = Новый СписокЗначений;

	Для Каждого СтрокаДня Из ВыборкаДвижений Цикл

		НакопленныйОстаток = НакопленныйОстаток
			+ СтрокаДня.ПлановыеПоступления
			- СтрокаДня.ПлановыеВыплаты;

		// Если остаток уходит в минус — фиксируем разрыв
		Если НакопленныйОстаток < 0 Тогда
			СписокРазрывов.Добавить(
				СтрокаДня.Дата,
				Формат(НакопленныйОстаток, "ЧДЦ=2; ЧН=0; ЧГ=3") + " руб."
			);
		КонецЕсли;

	КонецЦикла;

	// Если найдены разрывы — отправляем уведомление
	Если СписокРазрывов.Количество() > 0 Тогда
		ОтправитьУведомлениеОРазрывах(СписокРазрывов);
	КонецЕсли;

КонецПроцедуры

Как работает платёжный календарь после автоматизации?

Платёжный календарь — это «приборная панель» финансового директора. После настройки в 1С:ERP он стал обновляться автоматически из нескольких источников:

  1. Заявки на оплату от подразделений — попадают в календарь сразу после утверждения руководителем ЦФО
  2. Договоры с поставщиками — графики платежей из условий договоров автоматически создают плановые расходы
  3. Заказы покупателей — на основе условий оплаты и производственного плана система рассчитывает ожидаемые поступления
  4. Налоговый календарь — фиксированные даты НДС, налога на прибыль, страховых взносов
  5. Зарплатная ведомость — плановые даты выплат из задачи по 1С:ЗУП через интеграцию

Ключевое отличие от Excel: система не просто показывает план, но и рассчитывает вероятностный прогноз. Поступления от покупателей взвешиваются на коэффициент их платёжной дисциплины (от 0 до 100%), рассчитанный по истории за 12 месяцев. Это даёт реалистичный, а не оптимистичный прогноз.

Какие результаты получила компания за 4 месяца?

Проект стартовал в феврале и завершился в мае. Вот измеримые результаты по итогам первых 4 месяцев работы новой системы:

Показатель До автоматизации После автоматизации Изменение
Кассовых разрывов в год 11 3 −73%
Потери на овердрафте 4,7 млн руб./год 1,1 млн руб./год −77%
Время подготовки БДДС-отчёта 3–4 дня 15 минут −99%
Точность прогноза cashflow на 30 дней ~55% 88% +60%
Срок согласования заявок на оплату 3–5 дней 4–6 часов −85%
Свободные денежные средства (среднее) 12 млн руб. 28 млн руб. +133%

Три оставшихся разрыва были связаны с форс-мажорными обстоятельствами: один крупный покупатель задержал оплату на 45 дней из-за внутреннего аудита, что выходило за рамки любых статистических моделей. Система, впрочем, предупредила о риске за 12 дней, что позволило заблаговременно открыть кредитную линию на льготных условиях.

Найдите специалиста для решения этой задачи на koderion.ru

Автор: редакция Koderion. Обновлено: 20 мая 2026. Источники: Infostart, ИТС 1С, Документация платформы 1С:Предприятие.