При ведении учета в программе 1С:Комплексная автоматизация 2.4 (а также в 1С:ERP) пользователи часто сталкиваются с ситуацией, когда система позволяет провести документ РасходныйКассовыйОрдер (РКО) на сумму, превышающую фактический остаток наличных денег в кассе организации. В результате в учете возникают некорректные отрицательные остатки, что напрямую нарушает кассовую дисциплину и создает проблемы при формировании кассовой книги.
Многие бухгалтеры и казначеи ищут заветную «галочку» в настройках системы, аналогичную контролю остатков товаров на складах. В этой статье мы подробно разберем, почему разработчики фирмы «1С» отказались от жесткого оперативного контроля кассы в конфигурациях крупного класса, как устроен альтернативный механизм предотвращения кассовых разрывов и какими техническими способами можно решить эту задачу, если жесткий запрет вашей организации все-таки необходим.
Выясним причину, по которой привычный по «младшим» конфигурациям (таким как 1С:УНФ или 1С:Розница) флаг контроля остатков денежных средств отсутствует в 1С:Комплексная автоматизация. Дело в разнице методологических подходов к учету на предприятиях малого и крупного бизнеса.
Проанализируем ключевые причины:
Проанализируем ситуацию: если жесткого запрета на проведение РКО нет, как защитить кассу от ухода в минус штатными средствами? Для этого разработчики предусмотрели развитый блок казначейства. Разберем по шагам ключевые инструменты, которые позволяют эффективно контролировать кассовые расходы.
Это самый надежный способ ограничить несанкционированные выплаты из кассы. Когда этот механизм включен, кассир физически не может создать и провести РасходныйКассовыйОрдер без предварительно согласованной и утвержденной руководством заявки.
Для включения этого механизма выполним следующие настройки:
Кассы) укажем вариант использования заявок. Мы можем выбрать режим «Разрешено без заявок» или установить жесткое требование обязательного использования заявок для всех расходов.При такой схеме работы цепочка выглядит так: инициатор создает документ ЗаявкаНаРасходованиеДенежныхСредств, финансовый контроллер согласовывает её (проверяя наличие лимитов и плановых остатков), руководитель утверждает, и только после этого бухгалтер по кассе может на основании заявки сформировать РКО. Сумма РКО будет жестко ограничена суммой заявки.
Чтобы автоматизировать процесс согласования заявок и не допускать перерасхода, мы можем настроить лимиты. Лимитирование настраивается в привязке к статьям движения денежных средств (ДДС) или подразделениям.
Посмотрим на пример настройки:
Платежный календарь — это главный рабочий инструмент казначея. Он позволяет спрогнозировать остатки денежных средств на расчетных счетах и в кассах на несколько дней или недель вперед. Календарь автоматически сопоставляет планируемые поступления (ожидаемые оплаты от клиентов) и планируемые расходы (утвержденные заявки на оплату).
Если система видит, что на определенную дату планируемый расход по кассе превышает остаток, в платежном календаре эта дата подсвечивается красным цветом. Это сигнализирует о возникновении «кассового разрыва». Казначей может оперативно перенести выплату по заявке на другой день или запланировать внутреннее перемещение наличных денег из другой кассы.
Что делать, если специфика вашего бизнеса все же требует жесткого автоматического запрета на проведение РКО при отсутствии денег в кассе, а внедрять сложную систему заявок и платежных календарей компания пока не готова? В этом случае оптимальным решением будет доработка программы с использованием механизма расширений.
Преимущество расширений заключается в том, что конфигурация вашей базы данных остается на стандартной поддержке, что существенно облегчает процесс последующих обновлений 1С.
Рассмотрим пример программного кода, который можно внедрить в расширение конфигурации. Наша задача — перехватить проведение документа РасходныйКассовыйОрдер, рассчитать текущий остаток денег в кассе организации по регистру накопления ДенежныеСредстваНаличные и заблокировать проведение, если остатка не хватает.
Разберем по шагам пример реализации обработчика в расширении перед записью документа:
&После("ПередЗаписью")
Процедура Расш_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
// Нас интересует только непосредственное проведение документа пользователем
Если РежимЗаписи <> РежимЗаписиДокумента.Проведение Тогда
Возврат;
КонецЕсли;
// Отключим проверку для документов, проводимых в режиме обмена данными
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
// Выполним запрос к остаткам регистра "Денежные средства (наличные)"
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЕСТЬNULL(ДенежныеСредстваНаличныеОстатки.СуммаОстаток, 0) КАК Остаток
|ИЗ
| РегистрНакопления.ДенежныеСредстваНаличные.Остатки(
| &МоментВремени,
| Касса = &Касса
| И Организация = &Организация) КАК ДенежныеСредстваНаличныеОстатки";
// Передаем границу времени ДО проведения текущего документа
Запрос.УстановитьПараметр("МоментВремени", Новый Граница(МоментВремени(), ВидГраницы.Исключая));
Запрос.УстановитьПараметр("Касса", Касса);
Запрос.УстановитьПараметр("Организация", Организация);
РезультатЗапроса = Запрос.Выполнить();
ТекущийОстаток = 0;
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
ТекущийОстаток = Выборка.Остаток;
КонецЕсли;
// Сравниваем сумму документа с доступным остатком
Если ТекущийОстаток < СуммаДокумента Тогда
Отказ = Истина;
// Выводим понятное сообщение об ошибке пользователю
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = Шаблон(
"Ошибка проведения! Недостаточно наличных денежных средств в кассе ""%1"". " +
"Требуется: %2, Доступно в кассе: %3 (Дефицит: %4)",
Касса, СуммаДокумента, ТекущийОстаток, (СуммаДокумента - ТекущийОстаток)
);
Сообщение.Поле = "СуммаДокумента";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
КонецЕсли;
КонецПроцедуры
Этот код надежно предотвратит проведение расходного ордера, если физически в кассе по данным программы числится меньшая сумма. Обратите внимание, что мы используем объект Граница с видом Исключая, чтобы получить остаток строго на момент времени непосредственно перед проведением текущего документа РКО.
Если вы не хотите вносить изменения в программный код и использовать расширения, можно прибегнуть к регулярному административному аудиту. Настройте регламент работы бухгалтерии следующим образом:
Таким образом, хотя в 1С:Комплексная автоматизация 2.4 нет простой настройки для запрета списания денег по кассе в минус, система предлагает мощные инструменты планирования и лимитирования, которые гораздо эффективнее борются с кассовыми разрывами. В случаях, когда необходим именно технический запрет, задача легко решается созданием небольшого расширения конфигурации.