При работе с розничными продажами в программах 1С (особенно в конфигурациях «Бухгалтерия для Беларуси 2.1», «Бухгалтерия предприятия 3.0», «УНФ» или «Розница») пользователи часто сталкиваются с блокирующей ошибкой при проведении документа Отчет о розничных продажах (ОРП). Сообщение гласит: «Сумма оплат по платежным картам и банковским кредитам превышает сумму выручки от реализации!». Эта ситуация заводит в тупик, так как фактические данные по кассе и терминалу верны, а документ отказывается проводиться.
Рассмотрим подробнее причины возникновения этой коллизии и разберем по шагам все возможные способы её решения — от простых «обходных путей» до правильной настройки методологии учета и внесения правок в программный код.
Проанализируем ситуацию: ошибка возникает из-за жесткой проверки в программном модуле документа (обычно это процедуры ПередЗаписью или ОбработкаПроверкиЗаполнения). Система автоматически сравнивает два показателя:
С точки зрения формальной логики программы, покупатель не может оплатить картой сумму, превышающую стоимость самого товара. Однако в жизни часто случаются возвраты. Если в текущий Отчет о розничных продажах попадает возврат товара, проданного в другой день, сумма выручки в таблице товаров уменьшается (становится «чистой» за вычетом возврата), в то время как сумма оплат по картам остается прежней. В итоге возникает перекос, и программа блокирует проведение документа.
Это самый правильный метод с точки зрения методологии бухгалтерского учета. Нам необходимо четко разделять, когда был продан товар, который возвращает покупатель:
Отчет о розничных продажах текущего дня. Он просто уменьшает общую выручку. В этом случае ошибка не возникнет, если сумма продаж по картам все еще больше или равна сумме возвратов по картам за этот же день.Возврат товаров от покупателя. В этом случае сумма возврата не вычитается из текущей выручки в ОРП, а проходит по учету отдельной операцией. Это позволяет избежать конфликта в документе Отчет о розничных продажах, так как текущая выручка и безналичные оплаты будут соответствовать друг другу.Часто проблема приходит из интеграции. В 1С:Управление торговлей (УТ) документ может проводиться без проблем, так как там проверки менее строгие. Но при загрузке в 1С:Бухгалтерия (БП) правила обмена могут «схлопывать» все операции за день в один документ.
Проанализируем ситуацию в настройках обмена: рекомендуется изменить правила выгрузки так, чтобы возвраты прошлых периодов выгружались в БП не как строки с отрицательным количеством в ОРП, а как обособленные документы Возврат товаров от покупателя. Это полностью снимет проблему превышения оплат над выручкой при синхронизации. При необходимости сопоставить документы в обеих базах и устранить расхождения поможет обработка для сравнения и синхронизации УТ и БП.
Если методологические изменения внедрить невозможно, мы можем прибегнуть к корректировке конфигурации. Вместо того чтобы полностью отключать проверку (что является рискованным «костылем»), лучше модифицировать условие.
Посмотрим на пример логики, которую можно внедрить в модуль документа, предварительно используя инструмент, чтобы архивировать и тестировать информационные базы 1С в автоматическом режиме:
// В процедуре проверки заполнения или перед записью
СуммаВыручки = ТабличнаяЧастьТовары.Итог("Сумма");
СуммаОплатБезнал = ТабличнаяЧастьОплаты.Итог("СуммаОплаты");
// Добавляем проверку на наличие возвратов (отрицательных сумм)
ЕстьВозвраты = Ложь;
Для Каждого СтрокаТовар Из ТабличнаяЧастьТовары Цикл
Если СтрокаТовар.Количество < 0 Тогда
ЕстьВозвраты = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
// Если есть возвраты, то жесткую проверку на превышение можно игнорировать
// или делать её более гибкой
Если НЕ ЕстьВозвраты И (СуммаОплатБезнал > СуммаВыручки) Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Сумма оплат превышает выручку!";
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
Такой подход позволяет сохранить контроль над обычными продажами, но не блокирует работу при наличии законных возвратов в документе.
Существует вариант «ручной правки», когда бухгалтер уменьшает сумму оплат в ОРП на сумму возврата, чтобы документ провелся. Однако здесь кроется серьезная ловушка: для поиска расхождений после подобных правок используется автоматическая сверка бухгалтерских проводок между базами 1С.
Важно: Если вы вручную уменьшите сумму оплат по картам в документе, у вас возникнет расхождение между данными 1С и банковской выпиской (эквайрингом). При загрузке выписки банк покажет полную сумму прихода, а в ОРП она будет занижена. В итоге «не пойдет» сальдо по счету 57 или 76 (в зависимости от ваших настроек). Для выявления и детального анализа таких расхождений можно использовать внешний отчет по взаиморасчетам с банком по эквайринговым операциям.
Если вы выбрали этот путь, то сумму возврата необходимо отразить через документ Операция по платежной карте с видом операции «Возврат покупателю». Это позволит корректно закрыть взаиморасчеты с банком-эквайером и покупателем, не затрагивая проблемный Отчет о розничных продажах.
Мы проанализировали проблему и выяснили, что наиболее устойчивым решением является переход на использование документа Возврат товаров от покупателя для всех случаев, когда товар возвращается не в день покупки. Это сохранит чистоту учета, обеспечит соответствие кассовым чекам и позволит избежать ошибок при синхронизации данных между различными базами 1С.