Почему не проводится реализация на 1 копейку в 1С:ERP и как исправить ошибку графика оплат?

Пользователь 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием Управленческий учет Торговля и дистрибуция
← На главную

Давайте проанализируем довольно интересную и нетривиальную ситуацию, с которой пользователи могут столкнуться в программе 1С:ERP Управление предприятием. Ситуация возникает при попытке сделать частичную отгрузку (реализацию) на минимально возможную сумму — 1 копейку (0,01 руб.), когда в исходном заказе клиента настроен многоэтапный график оплат, например, 50% предоплата и 50% после отгрузки.

Рассмотрим симптомы проблемы. При вводе документа РеализацияТоваровУслуг на основании заказа, система переносит утвержденный график оплат. В первую строку она ставит 0,01 руб. (что составляет 100% суммы реализации), а во второй строке остается нулевая сумма и пустое значение процента оплаты. При попытке провести документ система выдает ошибку, так как пустое значение процента или нулевая сумма в строке недопустимы. При этом вручную поправить табличную часть пользователю система не дает.

Разберем технические причины такого поведения

Выясним причину этой ошибки. Она кроется в математических ограничениях алгоритмов распределения 1С:ERP и жестком системном контроле заполнения графиков оплат. Механизм просто не рассчитан на такие микро-суммы.

Система пытается пропорционально распределить сумму реализации (0,01 руб.) по этапам (50% и 50%). Поскольку разделить 1 копейку на два без остатка невозможно (0,005 руб. не поддерживается системой), алгоритм из-за математического округления забирает всю копейку на первый этап. В результате для второго этапа остается ровно 0 рублей. Платформа 1С жестко контролирует табличную часть графика: строка с пустым процентом или нулем не может существовать. Документ блокируется при проведении.

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

Способ 1. Изменение стоимости товара

Посмотрим на самое очевидное и простое решение. Если проблема кроется в математическом неделимом остатке, мы можем изменить сумму документа так, чтобы она стала кратной этапам оплаты.

Вместо продажи дополнительного товара за 1 копейку, попробуйте продать его за 2 копейки (0,02 руб.). В этом случае система корректно разделит сумму на два этапа по 0,01 руб. (50% и 50%), пустых строк в документе не возникнет, и реализация успешно проведется.

Способ 2. Объединение отгрузок в один документ

Если изменить цену невозможно, рассмотрим вариант отказа от отдельной частичной реализации на копейку. Проблема возникает исключительно из-за нехватки общей суммы документа для ее дробления на проценты.

  1. Объедините этот дополнительный копеечный товар в один документ отгрузки с любым основным товаром.
  2. Общая сумма реализации увеличится.
  3. Это позволит алгоритмам корректно высчитать проценты (50/50) в рублях без формирования нулевых сумм для второго этапа оплаты.

Способ 3. Корректировка графика оплат в исходном заказе

Если отгрузку нужно произвести именно отдельным документом на 0,01 руб., мы можем временно изменить графики на уровне самого заказа клиента.

Для этого перед созданием реализации зайдем в исходный документ ЗаказКлиента. Мы можем разбить строку с копеечным товаром и для нее задать индивидуальный график оплат, состоящий только из одного этапа (например, 100% предоплата или 100% кредит). Либо же временно поменять общий график заказа. После того как реализация на 1 копейку будет проведена с одним этапом оплаты, график оставшейся (невыполненной) части заказа можно будет вернуть к исходным настройкам 50/50.

Способ 4. Ослабление контроля в соглашении с клиентом

Разберем вариант изменения настроек НСИ. Если ваши бизнес-процессы и политики безопасности это позволяют, можно разрешить отклонения от графика оплат в типовом или индивидуальном соглашении.

Если снять жесткий запрет на отклонения, табличная часть графика оплат в документе РеализацияТоваровУслуг станет доступной для ручного редактирования. Пользователь сможет просто зайти в табличную часть, вручную удалить зависшую вторую строку с нулевой суммой и провести документ.

Способ 5. Программная доработка через Расширение конфигурации

Если продажа бонусных или дополнительных товаров за 1 копейку при графике 50/50 — это частая бизнес-практика в вашей компании, есть смысл автоматизировать решение этой проблемы силами программиста. Оптимально использовать механизм расширений, чтобы не снимать типовую конфигурацию с поддержки.

В расширении можно перехватить обработчик заполнения документа и добавить проверку: если итоговая сумма документа реализации равна минимальной (0,01 руб.), система должна автоматически свернуть график оплат в одну строку, назначив 100% оплату, и программно удалить остальные пустые строки из табличной части этапов оплат.

Пример логики, которую можно реализовать в процедуре модуля объекта:


Если СуммаДокумента = 0.01 Тогда
    Для Каждого СтрокаОплаты Из ЭтапыГрафикаОплаты Цикл
        Если СтрокаОплаты.СуммаПлатежа = 0 Тогда
            ЭтапыГрафикаОплаты.Удалить(СтрокаОплаты);
        Иначе
            СтрокаОплаты.ПроцентПлатежа = 100;
        КонецЕсли;
    КонецЦикла;
КонецЕсли;

Это полностью избавит пользователей от необходимости каждый раз обращаться к администраторам или придумывать обходные схемы при оформлении подобных копеечных документов реализации.

← На главную