Контроль лимитов денежных средств в кассе

31.01.25

Учетные задачи - Кассовые операции

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

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

Лимит кассы — это максимальная сумма наличных, которая может оставаться в кассе в конце рабочего дня и переноситься на начало следующего. Этот лимит устанавливается руководителем компании и зависит от определенных условий. Превышать этот «порог» запрещено, однако сумма может быть меньше установленного лимита.

Это касается средних и крупных компаний. Согласно правилам Банка России (согласно пункту 2 Указаний Банка России №3210-У от 11 марта 2014 года), индивидуальные предприниматели и малый бизнес не обязаны устанавливать лимит кассы, но могут сделать это по своему желанию.

При нарушении лимитов кассы предприятие несет административную ответственность в виде штрафов. Их размеры утверждены ст. 15.1 КоАП РФ.

При выявлении превышение лимитов, выписывает штраф:

- от 4 до 5 тыс. руб. на должностное лицо;

- от 20 до 25 тыс. руб. на малое предприятие;

- от 40 до 50 тыс. руб. на юридических лиц.

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

В чем суть доработок? Суть заключается в том, чтобы в программе установить для каждого магазина свой лимит денежных средств, а также установить минимальный порог денежных средств, который необходимо контролировать. Грубо говоря…У нас, есть «Магазин - 1», максимальный лимит по кассе у него будет «10000», а вот порог для контроля у него будет допустим «2000». Таким образом если в кассе будет достигнут порог 8000 тогда пользователю будет приходить уведомление о том, что ему необходимо сдать денежные средства. Уведомление допустим будет появляться каждый раз, когда пользователь входит в РМК (рабочее место кассира).

Итак, что нам необходимо сделать!

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

Так как у нас оповещение пользователя будет происходить при открытии окна РМК (рабочее место кассира), то давайте добавим в расширение процедуру «ПриОткрытии» в которой вызовем исполнение процедуры проверки лимитов. Назовем процедуру «ПроверкаДоступныхЛимитовПоКассе()»

 

&НаКлиенте
Процедура Расширение1_ПриОткрытииПосле(Отказ)  
	
	ПроверкаДоступныхЛимитовПоКассе();

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

 

В процедуре «ПроверкаДоступныхЛимитовПоКассе()» необходимо определить следующей алгоритм. Который будет получать данные по наличю денежных средств в кассе и кассе ККТ текущего магазина и при приближении к данным лимитам как и говорилась выше вводится некое предупреждение пользователю.

 

&НаКлиенте
Процедура ПроверкаДоступныхЛимитовПоКассе()
	
	// Получаем структуру, которая содержит информацию
	// по денежным средствам. Если лимиты не достигнуты, то оповещения выполнено не будет

	СтруктураОтвета = ПроверкаДоступныхЛимитовПоКассеСервер();
	Если СтруктураОтвета = Неопределено Тогда
		Возврат;	
	КонецЕсли;
	
	// Формируем сообщение пользователю (можно конечно через шаблон, но для наглядности пусть будет так) 
	//
	ТекстСообщения = Новый ФорматированнаяСтрока("ВЫ ПРИБЛИЗИЛИСЬ К ЛИМИТУ, НЕОБХОДИМО СДАТЬ ВЫРУЧКУ!" + Символы.ПС + 
	"Остаток по кассе: "      + СтруктураОтвета.ОбщийОстаткокДенежныхСредствВКассе     + Символы.ПС +  
	"Остаток по кассе ККТ: "  + СтруктураОтвета.ОбщийОстаткокДенежныхСредствВКассеККТ  + Символы.ПС +   
	"Остаток общий: "         + (СтруктураОтвета.ОбщийОстаткокДенежныхСредствВКассеККТ + СтруктураОтвета.ОбщийОстаткокДенежныхСредствВКассе) + Символы.ПС + 
	"Общий лимит по кассе: "  + СтруктураОтвета.ОбщийЛимитПоКассе);
	
	// Выводим сообщение пользователю
	ОписаниеОповещения = Новый ОписаниеОповещения("ПредупрежедениеЗавершение",ЭтаФорма);
	ПоказатьПредупреждение(ОписаниеОповещения, ТекстСообщения,, "Кассовые лимиты");

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

&НаСервере
Функция ПроверкаДоступныхЛимитовПоКассеСервер()
	
	// Установка привилегированного режима
	// Это для выполнения запроса, чтобы не давать права пользователям, 
	// можно конечно создать роли (по хорошему) и установить каждому пользователя свои права доступа
	УстановитьПривилегированныйРежим(Истина);
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ДенежныеСредстваНаличныеОстатки.Магазин КАК Магазин,
	|	ДенежныеСредстваНаличныеОстатки.Касса КАК Касса,
	|	ЕСТЬNULL(ДенежныеСредстваНаличныеОстатки.СуммаОстаток, 0) КАК СуммаОстатокКасса
	|ИЗ
	|	РегистрНакопления.ДенежныеСредстваНаличные.Остатки(, Магазин = &Магазин) КАК ДенежныеСредстваНаличныеОстатки
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ДенежныеСредстваККМОстатки.КассаККМ КАК КассаККМ,
	|	ЕСТЬNULL(ДенежныеСредстваККМОстатки.СуммаОстаток, 0) КАК СуммаОстатокККТ
	|ИЗ
	|	РегистрНакопления.ДенежныеСредстваККМ.Остатки(, КассаККМ = &КассаККМ) КАК ДенежныеСредстваККМОстатки
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ЛимитПоКассеСрезПоследних.Магазин КАК Магазин,
	|	ЕСТЬNULL(ЛимитПоКассеСрезПоследних.Лимит, 0) КАК Лимит,
	|	ЛимитПоКассеСрезПоследних.МинимальныйЛимит КАК МинимальныйЛимит
	|ИЗ
	|	РегистрСведений.ЛимитПоКассе.СрезПоследних КАК ЛимитПоКассеСрезПоследних
	|ГДЕ
	|	ЛимитПоКассеСрезПоследних.Магазин = &Магазин";	
	Запрос.УстановитьПараметр("Магазин",  Объект.Магазин); 
	Запрос.УстановитьПараметр("КассаККМ", ТекущаяКассаККМ);
	
	РезультатЗапроса = Запрос.ВыполнитьПакет();
	
	СуммаОстатокКасса   = РезультатЗапроса[0].Выгрузить();
	СуммаОстатокККТ     = РезультатЗапроса[1].Выгрузить();
	ЛимитПоКассе        = РезультатЗапроса[2].Выгрузить();  
	АнализироватьЛитимы = Константы.АнализЛимитовПоКассе.Получить();
	
	УстановитьПривилегированныйРежим(Ложь);
	
	// Тут у нас сумма остатка в кассе по магазину
	//////////////////////////////////////////////////////////////////////////////////////////////////////
	Если СуммаОстатокКасса.Количество() = 0 Тогда
		ОбщийОстаткокДенежныхСредствВКассе    = 0;		
	Иначе
		ОбщийОстаткокДенежныхСредствВКассе    = СуммаОстатокКасса[0].СуммаОстатокКасса;		
	КонецЕсли;                                                                                            
	// Тут у нас сумма остатка в кассе ККТ по подключенной кассе
	//////////////////////////////////////////////////////////////////////////////////////////////////////
	Если СуммаОстатокККТ.Количество() = 0 Тогда
		ОбщийОстаткокДенежныхСредствВКассеККТ = 0 ;
	Иначе
		ОбщийОстаткокДенежныхСредствВКассеККТ = СуммаОстатокККТ[0].СуммаОстатокККТ;	
	КонецЕсли;                                                                                            
	// Тут у нас установленные лимиты по магазину ну и расчеты 
	//////////////////////////////////////////////////////////////////////////////////////////////////////	
	Если ЛимитПоКассе.Количество() = 0 Тогда
		ОбщийЛимитПоКассе					  = 0;
		МинимальныйЛимит					  = 0;
	Иначе
		ОбщийЛимитПоКассе					  = ЛимитПоКассе[0].Лимит;  
		МинимальныйЛимит					  = ЛимитПоКассе[0].МинимальныйЛимит;	
	КонецЕсли;
	//////////////////////////////////////////////////////////////////////////////////////////////////////

	// Тут проверяем, а точнее проверяем условие по которому у нас появляется оповещение пользователя
	Если (ОбщийОстаткокДенежныхСредствВКассе + ОбщийОстаткокДенежныхСредствВКассеККТ) > (ОбщийЛимитПоКассе - МинимальныйЛимит) И АнализироватьЛитимы Тогда
		Возврат Новый Структура("ОбщийОстаткокДенежныхСредствВКассе, ОбщийОстаткокДенежныхСредствВКассеККТ, ОбщийЛимитПоКассе",
		ОбщийОстаткокДенежныхСредствВКассе, ОбщийОстаткокДенежныхСредствВКассеККТ, ОбщийЛимитПоКассе);
	Иначе
		Возврат Неопределено
	КонецЕсли;
	
КонецФункции  

&НаКлиенте
Процедура ПредупрежедениеЗавершение(Параметры) Экспорт
	// При необходимости, но в данном случае необходимости нет	
КонецПроцедуры 

 

Теперь все сохраняем, и можно запускать. Как выше было написано, для использования функционала необходимо включить константу «АнализЛимитовПоКассе». Поэтому первым делом нам необходимо это сделать. Далее проставляем в регистре сведений необходимые лимиты по кассе и магазин. В данном примере нет ролей на регистр, от слова совсем, хотя чисто теоретически, а точнее правильно было-бы это сделать. В принципе при реализации решения можно это предусмотреть, чтобы в дальнейшем можно было назначит ответственного за заполнение актуальных данных. В данном примере заполнение данных осуществляется с помощью дополнительной обработки, которая заполняет регистр лимитов через внешний файл. Поэтому реализация дополнительных прав не потребовалось.  На этом все, настройка закончена, можно пользоваться.

Стоит заметить, что, конечно можно более усовершенствовать данный механизм. Например: добавить в регистр отборы по организации. Так же можно сделать это регламентным заданием или даже бизнес - процессом с оповещением пользователей в задачи. Так же можно добавить отправку предупреждения на электронную почту, в мессенджеры различные и много куда еще (при необходимости). Тут уже как говорится может делать так как он хочет, не чего сложного тут как такового нет. По-хорошему при достижении определенного лимита надо установить полный запрет на дальнейшею реализацию каких-либо товаров или услуг, но тут уже каждый решает сам.

Таким образом небольшая доработка позволяет избежать больших проблем в исполнении кассовой дисциплины, в том числе позволяет разгрузить сотрудников розничной торговли от сложных подсчетов по остатку денежных средств в кассе. Конечно, это не защитит от человеческого фактора или просто игнорирования данных предупреждений, но тут опять поможет только полный запрет на продажу. Доработка делалась для «Розницы 2.3», а именно для старого РМК (рабочее место кассира). При необходимости можно всегда доработать под разные конфигурации.

 

На всякий случай прикрепляю мини инструкцию  по расчету кассовых лимитов

1. Расчет лимита кассы: по выручке

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

Лимит = Выручка / Расчетный период * Дни

Расчетный период составляет не более 92 рабочих дней компании. Выбирать его можно произвольно, учитывая, например, сезонность или продажи поступления прошлых лет.

Дни — это число рабочих дней между датами сдачи денег в банк, продолжительность этого периода должна быть не более 7 дней, а в местностях, где нет банка — не более 14. 

2. Расчет лимита кассы: по объему выдачи наличных

Второй способ подходит больше тем, кто в основном пользуется наличными деньгами для оплаты покупок или услуг. Формула лимита кассы будет основана на объеме выдачи наличных:

Лимит = Выдача / Расчетный период * Дни

Опять-таки информации по данной теме достаточно много в интернете, поэтому все-таки лучше руководствоваться официальными данными, так как периодически все меняется. Поэтому лучше использовать специализированные ресурсы которые постоянно актуализируют информацию.

 

Тестирование проводилось:

  • Платформа: 1С:Предприятие 8.3 (8.3.25.1374)
  • Конфигурация: Розница, редакция 2.3 (2.3.20.28)

Контроль лимитов касса касса ККМ

См. также

ККМ Кассовые операции Розничная торговля Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Бухгалтерия государственного учреждения 1С:Бухгалтерия 1.6 1С:Бухгалтерия автономного учреждения Россия Платные (руб)

Универсальная обработка для обслуживания любых фискальных регистраторов (ККТ), в том числе Веб сервер АТОЛ. Работает в соответствии с 54-ФЗ. (ФФД 1.0, ФФД 1.05, ФФД 1.1). Подключайте любую онлайн кассу к практически любой конфигурации. Нет необходимости обновлять 1С. Можно бесплатно скачать и протестировать. Может работать одновременно с несколькими онлайн-кассами, либо одной с разных рабочих мест. (через RDP, TCP\IP или веб-сервер) Позволяет разделить один чек сразу на несколько ККТ или на несколько систем налогообложения. Поддерживает разрешительный режим. Можно настроить собственный шаблонов чека. Можно использовать эквайринг там, где он не поддерживается. Работает на LINUX и Windows ЭМУЛЯТОР + ЭКВАЙРИНГ + МАРКИРОВКА + ПОДДЕРЖКА ФФД 1.2 + НДС 5% и 7% УСН

6000 руб.

27.02.2017    806668    5083    9696    

2911

ККМ Кассовые операции Розничная торговля Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Бухгалтерия государственного учреждения 1С:Бухгалтерия автономного учреждения Россия Платные (руб)

Обработка осуществляет обслуживание ККТ АТОЛ, Штрих, Вики Принт и Меркурий для конфигураций "УТ 10.3", "КА 1.1", "УПП 1.3", "Розница 1.0", "БП 2.0" и других отраслевых решений, построенных на основе указанных выше конфигурациях. Поддерживает возможность параллельно пробития чеков на одной ККМ несколькими пользователями. Поддерживает Веб-сервер Атол. Соответствует требованиям 54-ФЗ. Поддерживает ФФД 1.0, 1.05, 1.1 и 1.2. Разделяет чеки по нескольким СНО. Поддерживает механизмы подключения ККТ по TCP/IP, для работы через RDP или интернет. Поддержка маркировки и разрешительного режима. Поддержка пробития чеков с новыми ставками НДС 5% и НДС 7%.

5880 руб.

25.05.2015    339412    2033    3107    

1054

ККМ Кассовые операции Розничная торговля Обмен с ГосИС Программист Бухгалтер Пользователь Бухгалтерский учет Оперативный учет Управляемые формы 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Расширение конфигурации для УТ 11.5, КА 2.5 ,ERP 2.5 (Управляемые формы) позволяет выполнять печать кассовых чеков на одну ККМ 54-ФЗ с нескольких рабочих мест. НИКАКИХ НАСТРОЕК В РАЗРАБОТКЕ - ПОДКЛЮЧИЛ И ПЕЧАТАЙ. Если у вас несколько отделов и одна ККМ - печатайте на одной ККМ! Если у вас две ККМ и одна поломалась - печатайте на одной ККМ, пока ремонтируете другую!

5000 руб.

27.08.2018    124915    1082    603    

894

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    6674    17    7    

27

Кассовые операции ККМ Пользователь Платформа 1С v8.3 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Россия Управленческий учет Платные (руб)

Расширение для 1С:Управление торговлей 11.5, которое позволяет пробивать чеки ККМ и списывать товар с разных складов. Склад списание товара можно указывать в табличной части рабочего места кассира (РМК).

5880 руб.

12.04.2023    10207    56    3    

44

SALE! 25%

Кассовые операции Файловый обмен (TXT, XML, DBF), FTP ЭДО и ОФД Программист Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Бухгалтерский учет Налоговый учет Управленческий учет Платные (руб)

Специализированные обработки для загрузки кассовых чеков в базах 1С (для локальных баз): 1С:БП 3.0, 1С:УНФ 3.0, 1С:КА. 2.5, 1С:ERP Управление предприятием, ред. 2 и 1С:УТ 11.5. Вы просто сканируете QR коды с бумажных и электронных чеков c помощью мобильного приложения ФНС и чеки автоматически (без ручного ввода) загружаются в документы 'Авансовый отчет', 'Расходы предпринимателя', 'Путевой лист', 'Приходная накладная', 'Поступление (акты, накладные, УПД)', 'Приобретение товаров и услуг', 'Отчет о розничных продажах' и 'Поступление денежных документов'.

12960 руб.

19.08.2020    70201    347    80    

229

ККМ Кассовые операции Розничная торговля Системный администратор Программист Пользователь Платформа 1С v8.3 1C:Бухгалтерия Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Россия Платные (руб)

«Сервер ККМ» позволяет приложениям работать с фискальными регистраторами по локальной сети или интернет, организовать печать на одном ККМ с нескольких рабочих мест с поддержкой очереди печати. Поддерживаются ВСЕ ревизии требований фирмы 1С к разработке драйверов ККТ от 2.2 до 4.4. В поставке есть драйверы для операционных систем Linux, Android, MacOs и Windows. Поддержка драйверов Атол, Штрих и 1С-совместимых драйверов для ККТ ревизии 4.4. Поддержка 54-ФЗ и разрешительного режима, ФФД 1.05,1.1,1.2. Подключается к 1С Торговля и склад 7.7, 1С:УТ 10/11, 1С:УНФ 1.6/3, 1С:Розница 1/2/3, 1С:БП 2/3, 1С КА 1/2., 1С:ERP, УПП. Ускоряет печать из терминального сеанса Windows. Работает с разрешительным режимом даже из старых конфигураций. Предоставляет REST API для печати через веб-сервис. Поддерживаются новые ставки НДС 5% и 7%.

5000 руб.

02.09.2016    138398    168    194    

192

Кассовые операции ЭДО и ОФД Бухгалтер Платформа 1С v8.3 Бухгалтерский учет 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Бухгалтерский учет Платные (руб)

Согласно 54-ФЗ по правилам ведения кассовых операций необходимо оформлять приходные кассовые ордера (ПКО) и расходные кассовые ордера (РКО) на основании чеков ККМ. Все данные о чеках, можно взять на сайте оператора фискальных данных (ОФД). Обработка загрузки данных из ОФД в 1С сделает за вас в 1С - ПКО и РКО, Операции по платежным картам или Отчет о розничных продажах (может создать номенклатуру в 1С, указать налоги и др. реквизиты в документах в зависимости от налогообложения ККМ в торговой точке).

6000 руб.

09.08.2017    152983    915    372    

556
Оставьте свое сообщение