Почему при загрузке банковских выписок операции по эквайрингу определяются как 'Личные средства предпринимателя' или 'Взнос наличными' в 1С:Бухгалтерия 3.0?

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

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

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

Причина возникновения проблемы: Изменения в коде конфигурации

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

Ранее эта функция имела следующую структуру:


Функция ЭтоБанковскийОрдерНезавершенныхРасчетовАктив(Операция)
    Возврат БанковскиеПравила.ЭтоСчетНезавершенныхРасчетов3023Актив(Операция.БалансовыйСчет)
        И БанковскиеПравила.ЭтоБанковскийОрдер(Операция.ШифрОперации);
КонецФункции

В новых релизах функция была переименована в ЭтоНезавершенныеРасчетыЧерезТерминал и дополнена новым условием, что привело к изменению ее поведения:


Функция ЭтоНезавершенныеРасчетыЧерезТерминал(Операция)
    Возврат БанковскиеПравила.ЭтоСчетНезавершенныхРасчетов3023Актив(Операция.БалансовыйСчет)
        И (БанковскиеПравила.ЭтоБанковскийОрдер(Операция.ШифрОперации)
        Или БанковскиеПравила.ЭтоПлатежноеПоручение(Операция.ШифрОперации));
КонецФункции

Ключевая проблема заключается во второй части условия: Или БанковскиеПравила.ЭтоПлатежноеПоручение(Операция.ШифрОперации). Это дополнительное условие приводит к тому, что операции, которые по своей сути являются поступлениями по платежным картам (банковскими ордерами или транзакциями через терминал), теперь могут быть ошибочно интерпретированы как платежные поручения, что влияет на дальнейшее определение вида хозяйственной операции. Из-за этого изменения функция стала возвращать значение ИСТИНА в тех случаях, когда ранее возвращала ЛОЖЬ, нарушая корректную логику определения вида операций.

Для индивидуальных предпринимателей (ИП) существует также специфичная логика определения «Личных средств предпринимателя». Если в банковской выписке 1С видит, что балансовый счет получателя соответствует счету физического лица – индивидуального предпринимателя (40802), и при этом ИНН плательщика и получателя совпадают, система может автоматически классифицировать такую операцию как поступление личных средств ИП на ведение предпринимательской деятельности. Это правило выглядит следующим образом:


Если УчетДенежныхСредствКлиентСервер.БалансовыйСчет(СтрокаДокумента.ПолучательСчет) = "40802" // физические лица - индивидуальные предприниматели
И СтрДлина(СтрокаДокумента.ПлательщикИНН) = 12
И СтрДлина(СтрокаДокумента.ПолучательИНН) = 12
И СтрокаДокумента.ПлательщикИНН = СтрокаДокумента.ПолучательИНН Тогда
// это поступление личных средства ИП на ведение предпринимательской деятельности

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

Решение 1: Программное исправление через расширение конфигурации

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

  1. Создание расширения.

    Мы начинаем с создания нового расширения конфигурации. Для этого нам необходимо открыть конфигуратор, перейти в меню «Конфигурация» -> «Расширения конфигурации» -> «Добавить». Присвоим расширению понятное имя, например, «ИсправлениеЗагрузкиВыписок».

  2. Добавление общего модуля в расширение.

    Нам потребуется внести изменения в общий модуль ЗагрузкаВыпискиПоБанковскомуСчету. Мы добавляем его в наше расширение. В дереве конфигурации находим «Общие» -> «Общие модули», выбираем ЗагрузкаВыпискиПоБанковскомуСчету, вызываем контекстное меню и выбираем «Добавить в расширение».

  3. Изменение функции ЭтоНезавершенныеРасчетыЧерезТерминал.

    После того как модуль добавлен в расширение, мы открываем его и находим функцию ЭтоНезавершенныеРасчетыЧерезТерминал. Наша задача — скорректировать ее таким образом, чтобы исключить проблемное условие. Мы можем использовать директивы препроцессора #Удаление и #Вставка для чистого изменения кода в расширении.

    Пример кода, который мы используем в расширении:

    
    &ИзменениеИКонтроль("ЭтоНезавершенныеРасчетыЧерезТерминал")
    Функция Расш1_ЭтоНезавершенныеРасчетыЧерезТерминал(Операция)
        Возврат БанковскиеПравила.ЭтоСчетНезавершенныхРасчетов3023Актив(Операция.БалансовыйСчет)
            И (БанковскиеПравила.ЭтоБанковскийОрдер(Операция.ШифрОперации)
        #Удаление Или БанковскиеПравила.ЭтоПлатежноеПоручение(Операция.ШифрОперации)); #КонецУдаления
        #Вставка ); #КонецВставки
    КонецФункции
    

    Обратите внимание на префикс Расш1_ перед именем функции. Система 1С автоматически добавляет этот префикс к именам объектов, которые мы переносим в расширение, чтобы избежать конфликтов. Таким образом, мы "замещаем" типовую функцию из основной конфигурации на нашу модифицированную функцию из расширения.

    Суть изменения заключается в том, что мы убираем из условия проверку на БанковскиеПравила.ЭтоПлатежноеПоручение(Операция.ШифрОперации), тем самым возвращая логику определения операции к прежнему, корректному состоянию.

  4. Обновление конфигурации расширения.

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

  5. Проверка результата.

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

Этот подход позволяет нам решить проблему, сохраняя при этом возможность беспрепятственно обновлять типовую конфигурацию в будущем, поскольку наши изменения находятся в отдельном расширении.

Решение 2: Детальная проверка и настройка параметров в 1С

Помимо программного исправления, многие проблемы с некорректным определением видов операций могут быть решены путем тщательной проверки и настройки параметров в самой программе 1С. Мы рассмотрим следующие шаги:

  1. Сверка реквизитов контрагента (банка-эквайера).

    Очень часто проблема кроется в несоответствии реквизитов контрагента в вашей базе 1С с теми, что фактически используются банком-эквайером в банковской выписке. Давайте проверим:

    1. Откроем файл банковской выписки в текстовом формате (например, .txt или .dbf, в зависимости от банка). Найдем в нем информацию о плательщике (банке-эквайере) и его реквизитах, в частности ИНН и КПП.
    2. Перейдем в справочник «Контрагенты» в 1С. Найдем карточку вашего банка-эквайера. Убедимся, что ИНН и КПП, указанные в карточке контрагента в 1С, полностью совпадают с реквизитами из файла выписки.
    3. Проверим на наличие дублей. Не исключено, что в вашей базе может быть несколько карточек одного и того же банка (например, Сбербанка) с разными КПП, соответствующими различным филиалам. Если это так, убедимся, что в дальнейших настройках используется именно тот контрагент, реквизиты которого указаны в выписке. Иногда загрузка банковских выписок может предлагать одного контрагента, а в файле фактически фигурируют данные другого.
    4. Заведем недостающих контрагентов. Если в выписке фигурируют межбанковские платежи или транзитные банки, которые не заведены как контрагенты, система не сможет их распознать. Рекомендуем завести всех необходимых контрагентов, реквизиты которых встречаются в выписке.

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

  2. Проверка и настройка «Видов оплат».

    «Виды оплат» — это ключевой справочник для корректного распознавания операций по платежным картам. Давайте выполним следующие действия:

    1. Перейдем в раздел «Банк и касса» -> «Виды оплат (эквайринг и комиссии)».
    2. Найдем или создадим новый элемент справочника, который будет отвечать за поступления по эквайрингу или загрузку реестра оплаты.
    3. Убедимся, что «Способ оплаты» установлен как «Платежная карта».
    4. Укажем корректного контрагента. Здесь мы должны выбрать ту карточку банка-эквайера, которую мы сверили на предыдущем шаге, и которая соответствует данным в банковской выписке.
    5. Укажем договор эквайринга. Ниже мы более подробно рассмотрим настройку договора.
    6. Проверим счет расчетов. Убедимся, что указан правильный счет расчетов, например, 57.03. Также необходимо проверить, что счет 57.03 («Продажи по платежным картам») активен в вашем Плане счетов (раздел «Главное» -> «План счетов» -> откроем счет 57.03 -> установим флажок «Используется»).

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

  3. Настройка договора эквайринга.

    Для корректной работы эквайринга в 1С должен быть заведен и настроен соответствующий договор с банком:

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

    Корректно настроенный договор является связующим звеном между банком, видом оплаты и операциями по эквайрингу.

  4. Анализ протокола загрузки.

    После каждой загрузки банковских выписок 1С формирует протокол загрузки. Этот протокол — наш лучший помощник в диагностике проблем:

    1. Найдем протокол загрузки. Он обычно доступен после завершения процесса загрузки выписки.
    2. Изучим сообщения в протоколе. В нем часто указывается, какие именно поля или данные система не смогла распознать (например, «Контрагент не найден», «Договор не найден», «Счет не распознан»). Эти сообщения напрямую укажут нам на конкретную причину проблемы.

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

  5. Проверка настроек обмена с банком.

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

    1. Перейдем в раздел «Банк и касса» -> «Банковские выписки».
    2. Нажмем кнопку «Еще» (обычно находится в правом верхнем углу) -> «Настройки обмена с банком».
    3. Убедимся, что установлена применяемая вашим банком система клиент-банка и все параметры обмена соответствуют требованиям банка.

    Также рассмотрите возможность настройки Direct Bank, если ваш банк поддерживает эту технологию, поскольку она обеспечивает более тесную интеграцию и, возможно, более точное распознавание операций.

  6. Проверка константы «ИспользоватьИнкассацию».

    В случаях, когда вместо «Взнос наличными из кассы» операция определяется как «Инкассация», необходимо проверить соответствующую константу:

    В общем модуле ЗагрузкаВыпискиПоБанковскомуСчету в функции ОсновнойВидОперацииПредопределенногоПравила, при условии ПоступилоСписано = "Поступило", происходит проверка использования инкассации. Если эта проверка проходит, то заполняется вид операции «Инкассация». Мы можем изменить значение константы ИспользоватьИнкассацию с Истина на Ложь. Это можно сделать через «Все функции» (раздел «Администрирование» -> «Сервис» -> «Все функции» -> «Константы» -> найдем «Использовать инкассацию»). Отключение этой константы может помочь в случаях, когда инкассация ошибочно подставляется вместо взноса наличными.

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

← На главную