При автоматизации банковских операций пользователи часто сталкиваются с ситуацией, когда программа «ошибается» при загрузке выписки. Например, вместо ожидаемой «Оплаты поставщику» система устанавливает «Перечисление заработной платы». В этой статье мы подробно разберем внутренние механизмы 1С:Бухгалтерия 8, выясним, какими правилами руководствуется алгоритм, и поймем, как можно повлиять на этот процесс.
Первым делом проанализируем самый надежный механизм идентификации. Если в вашей базе 1С предварительно создано Платежное поручение, система при загрузке файла из банк-клиента попытается найти соответствие. Поиск происходит по следующей цепочке данных:
Если совпадение найдено, программа не пытается «угадывать» вид операции, а просто копирует его (и все остальные реквизиты: статью ДДС, договор, счета учета) из вашего исходящего поручения. Рассмотрим этот момент как наиболее предпочтительный для исключения ошибок.
Разберем ситуацию, когда Платежное поручение в базе отсутствует. В этом случае система переходит к анализу банковских реквизитов получателя. Программа анализирует первые цифры (маску) расчетного счета:
Перечисление заработной платы или Прочее списание. Логика разработчиков здесь проста: коммерческие расчеты с обычными гражданами через личные счета в типовых сценариях встречаются реже, чем выплата зарплаты.Оплата поставщику.В случае автора темы именно этот механизм, скорее всего, стал причиной ошибки, так как контрагент заведен как физическое лицо.
Современные версии 1С (особенно редакция 3.0) умеют «читать» текст, приходящий из банка. Проанализируем, какие слова являются триггерами для смены вида операции:
Перечисление заработной платы.Уплата налога.Оплаты поставщику.Также система пытается извлечь ИНН прямо из текстового поля назначения платежа, если он не заполнен в отдельных полях файла выписки.
Выясним, как программа учится на ваших действиях. В системе существует регистр (или внутренняя таблица параметров обмена), где запоминается выбор пользователя. Если вы один раз вручную изменили автоматически определенный вид операции для конкретного контрагента и провели документ Списание с расчетного счета, 1С запомнит эту связку «ИНН + Вид операции».
При следующей загрузке выписки для этого же контрагента система проигнорирует стандартные алгоритмы поиска по маске счета и предложит тот вариант, который вы выбрали в прошлый раз. Это наиболее простой способ «обучить» программу без привлечения программиста.
Посмотрим на настройки справочников. Для того чтобы система корректно определила операцию как Оплата поставщику для физического лица, необходимо соблюдение условий:
Если договоров несколько или они имеют другой вид (например, «Прочее»), система может «свалиться» в дефолтную настройку, определяемую по маске счета.
Если вам необходимо точно определить место в коде, где происходит магия «угадывания», проанализируем структуру конфигурации 1С:Бухгалтерия 3.0. Основная логика сосредоточена в менеджерах документов Поступление на расчетный счет и Списание с расчетного счета.
Рекомендуем обратить внимание на общий модуль ОбменСБанками и следующие функции:
// В коде часто встречается вызов процедур типа:
ОбменСБанками.ОпределитьВидОперации(ПараметрыПлатежа);
// Или внутри формы документа при загрузке:
ЗаполнитьВидОперацииПоУмолчанию();
В процессе отладки следует смотреть на заполнение структуры ДанныеПлатежа. Именно там происходит сопоставление ключевых слов и анализ типа контрагента.
Чтобы исправить ситуацию, когда 1С неверно определяет вид операции, пройдем по шагам:
Платежное поручение. Если нет — создайте его перед загрузкой выписки.Следуя этим рекомендациям, мы добьемся того, что загрузка банковской выписки станет максимально автоматизированной и перестанет требовать ручного вмешательства в каждый документ.