Как в 1С:Бухгалтерии предприятия 3.0 отразить смешанную комиссию эквайринга по картам и СБП из одной строки выписки?

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

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

Анализ проблемы и ограничений типовой конфигурации

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

  1. По акту и счету-фактуре банка: вся указанная в документе комиссия списывается в дебет счета 60.02 (или 76.05) как аванс банку за оказанные услуги с последующим зачетом в конце месяца.
  2. Сразу при зачислении на счет: сумма комиссии списывается непосредственно в дебет счета 91.02 (прочие расходы).

Стандартный документ не предусматривает разбиения комиссии из одной строки поступления одновременно на два разных счета (например, часть на 60.02, а часть на 91.02). Типовой механизм загрузки выписки рассчитывает совокупную сумму удержания и заполняет единое поле комиссии. Если банк передает текст назначения платежа нестандартного формата, регулярные выражения и поиск подстрок могут не сработать, из-за чего часть комиссии не переносится со счета 57.03.

Программный анализ и доработка модуля загрузки выписки

Выясним причину сбоя при чтении выписки. За разбор текстовых назначений платежей отвечает общий модуль ЗагрузкаВыпискиПоБанковскомуСчету и функция ПоискШаблонаВТекстеНазначения. Рассмотрим, как эволюционировал алгоритм разбора составных комиссий в типовых релизах.

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


Если Результат <> Неопределено И ЗначениеЗаполнено(Результат.ТекстПосле) Тогда
    // Проверим, что в тексте переданы 2 комиссии - с НДС и без НДС и поправим текст для дальнейшей обработки.
    КомиссияВТЧНДС = СтрНайтиПоРегулярномуВыражению(Результат.ТекстПосле, "(\d+(?:\.\d+)?)(?=\s*в т\.ч\.)");
    КомиссияБезНДС = СтрНайтиПоРегулярномуВыражению(Результат.ТекстПосле, "(\d+(?:\.\d+)?)(?=\s*ндс не)");
    
    Если ЗначениеЗаполнено(КомиссияВТЧНДС.Значение) И ЗначениеЗаполнено(КомиссияБезНДС.Значение) Тогда
        Результат.ТекстПосле = СтрЗаменить(Результат.ТекстПосле, СтрШаблон(НСтр("ru = 'и %1'"), КомиссияБезНДС.Значение), СтрШаблон(НСтр("ru = 'и комиссия %1'"), КомиссияБезНДС.Значение));
    КонецЕсли;
КонецЕсли;

Однако на практике банки часто присылают строку другого формата, например: «Сумма комиссии 1 218.36 (1 123.19 (в т.ч. НДС 202.50) и 95.17 (НДС не обл).», где сначала указана итоговая сумма, а затем в скобках дана ее расшифровка. Для таких сценариев применяется усовершенствованный алгоритм со скобками и приведением типов:


Если Результат <> Неопределено И ЗначениеЗаполнено(Результат.ТекстПосле) Тогда
    ФорматЧисло = Новый ОписаниеТипов("Число");
    ТекстПосле = Результат.ТекстПосле;
    ПозицияСкобки = СтрНайти(ТекстПосле, "(");
    ОбщаяКомиссия = "0";
    
    Если ПозицияСкобки > 0 Тогда
        ОбщаяКомиссия = Лев(ТекстПосле, ПозицияСкобки - 1);
        ТекстПосле = Сред(ТекстПосле, ПозицияСкобки + 1);
    КонецЕсли;
    
    Если ОбщаяКомиссия <> "0" Тогда
        РезультатКомиссия = ВыделитьКомиссииНДСИБезНДС(ТекстПосле);
        Если ЗначениеЗаполнено(РезультатКомиссия.СуммаСНДС) И ЗначениеЗаполнено(РезультатКомиссия.СуммаБезНДС) Тогда
            СуммаКомиссии = ФорматЧисло.ПривестиЗначение(СтрЗаменить(ОбщаяКомиссия, " ", ""));
            СуммаСНДС = ФорматЧисло.ПривестиЗначение(СтрЗаменить(РезультатКомиссия.СуммаСНДС, " ", ""));
            СуммаБезНДС = ФорматЧисло.ПривестиЗначение(СтрЗаменить(РезультатКомиссия.СуммаБезНДС, " ", ""));
            
            Если СуммаКомиссии = СуммаСНДС + СуммаБезНДС Тогда
                Результат.ТекстПосле = ОбщаяКомиссия;
                Возврат Результат;
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
    
    Результат.ТекстПосле = СтрЗаменить(Результат.ТекстПосле, "(", " ");
    РезультатКомиссия = ВыделитьКомиссииНДСИБезНДС(Результат.ТекстПосле);
    Если ЗначениеЗаполнено(РезультатКомиссия.СуммаСНДС) И ЗначениеЗаполнено(РезультатКомиссия.СуммаБезНДС) Тогда
        Результат.ТекстПосле = СтрЗаменить(Результат.ТекстПосле, СтрШаблон(НСтр("ru = 'и %1'"), РезультатКомиссия.СуммаБезНДС), СтрШаблон(НСтр("ru = 'и комиссия %1'"), РезультатКомиссия.СуммаБезНДС));
    КонецЕсли;
КонецЕсли;

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

Методологические варианты отражения смешанной комиссии

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

Вариант 1. Разделение потоков зачислений на стороне банка (рекомендуемый способ)

Наиболее надежным решением является обращение в службу поддержки банка с заявлением о разделении выплат. Банк настраивает перечисление выручки по картам и выручки по СБП отдельными платежными поручениями. В этом случае в 1С настраиваются два элемента справочника Виды оплат:

  1. Эквайринг (банковские карты): способ учета комиссии устанавливается как «По акту и счету-фактуре банка». Комиссия отправляется в дебет счета 60.02. В конце месяца проводится входящий УПД с НДС 22%, и формируется вычет со счета 19.04.
  2. СБП (Система быстрых платежей): способ учета комиссии устанавливается как «Сразу при зачислении на счет». Комиссия сразу списывается в дебет счета 91.02 без НДС, счет 57.03 закрывается полностью.

Вариант 2. Единый учет комиссии через счет авансов (60.02)

Если в документе загружается совокупная сумма комиссии (карты + СБП) и отправляется в дебет счета 60.02, ручные проводки в выписке делать не требуется, если банк предоставляет закрывающий документ на полный объем услуг:

  1. При получении ежемесячного документа от банка создаем документ Поступление (акт, накладная, УПД) с видом операции Услуги.
  2. В табличной части создаем две строки:
    1. Услуги эквайринга по картам — ставка НДС 22%, сумма НДС относится на счет 19.04;
    2. Комиссия по операциям СБП — ставка «Без НДС», затраты относятся на счет 91.02.
  3. При проведении документа программа автоматически выполнит зачет аванса со счета 60.02 на всю сумму комиссии.

Если банк не выставляет акт на операции СБП, закрытие зависшего дебетового сальдо на счете 60.02 оформляется в конце месяца документом Поступление услуг на основании отчета банка без регистрации входящей счет-фактуры.

Вариант 3. Ручное или полуавтоматическое разбиение строки выписки

Если необходимо вести раздельный учет сразу в момент загрузки дня, входящий платеж в выписке разбивается на два самостоятельных документа Поступление на расчетный счет. В первом документе отражается сумма карточных зачислений с комиссией по картам (с отнесением на 60.02), во втором — зачисление по СБП с соответствующей комиссией (с отнесением на 91.02). Это исключает использование ручных проводок и сохраняет целостность регистров эквайринга.

← На главную