При ежедневной загрузке банковских выписок в 1С:Управление торговлей 11.4 много времени уходит на ручное указание основания платежа — договора, заказа или счета. Возникает закономерный вопрос: можно ли автоматизировать этот процесс, чтобы программа сама подставляла нужный договор в документ Поступление безналичных денежных средств? Стандартный функционал здесь ограничен, но давайте разберем несколько подходов, которые помогут решить эту задачу — от простых настроек до небольших доработок конфигурации.
Основная сложность заключается в том, что банк, передающий информацию о платеже, ничего не знает о том, как ведутся взаиморасчеты в вашей системе 1С. Единственный источник информации, который связывает платеж с конкретной сделкой — это текстовое поле "Назначение платежа". Именно его и заполняет ваш контрагент. Следовательно, большинство решений будет основано на анализе этого текста.
Это самый распространенный и гибкий метод. Идея состоит в том, чтобы научить систему "читать" назначение платежа и извлекать из него ключевую информацию: номер и дату договора, счета или заказа. Рассмотрим, как это можно реализовать, от простого к сложному.
Простой поиск по ключевым словам. Самый базовый алгоритм — это поиск в тексте назначения платежа таких слов, как "договор", "дог.", "контракт". После нахождения ключевого слова программа пытается извлечь следующие за ним цифры и символы, предполагая, что это номер и дата. Этот метод сработает, если ваши контрагенты пишут назначение более-менее однообразно.
Использование регулярных выражений. Это более мощный и точный инструмент. Регулярные выражения позволяют задать шаблон для поиска. Например, можно создать шаблон, который будет искать конструкцию вида "дог. № [любые цифры] от [дата в формате ДД.ММ.ГГГГ]". Такой подход значительно снижает вероятность ошибки и позволяет обрабатывать более сложные варианты написания.
Создание словаря синонимов. Чтобы сделать алгоритм еще умнее, можно заложить в него обработку различных вариантов написания ключевых слов. Например, программа должна понимать, что "дог.", "договор", "контракт", "счет-договор" — это одно и то же.
Приоритезация оснований. Часто контрагент в назначении указывает сразу несколько документов: "Оплата по счету №123 от 01.01.2024 по договору №45-А от 15.12.2023". В 1С:УТ расчеты могут вестись не только по договорам, но и по заказам или накладным. Можно настроить алгоритм так, чтобы он искал основания в порядке приоритета:
Такая логика позволяет более точно определить объект расчетов.
Реализация парсинга обычно требует доработки обработки загрузки выписки из банка. Программист может встроить этот алгоритм в типовой механизм, чтобы он срабатывал при создании документов поступления ДС.
Этот подход не требует анализа текста и подходит для ситуаций, когда с контрагентом ведется работа в рамках одного основного договора. Логика здесь очень простая, но часто эффективная.
При загрузке платежа от известного контрагента система проверяет, сколько у него действующих договоров. Возможны следующие варианты алгоритма:
Важный момент: типовой функционал 1С часто ориентируется на признак "Основной договор" в карточке договора. Однако на практике этот признак используется не всегда корректно. Поэтому для реализации описанной выше логики, скорее всего, понадобится небольшая доработка, которая будет выполнять запрос к базе данных и находить единственный действующий договор по заданным критериям.
Иногда самое надежное решение лежит не в усложнении программного кода, а в наведении порядка в процессах. Можно договориться с ключевыми или постоянными контрагентами об использовании строгого формата в назначении платежа.
Например, вы можете попросить их всегда указывать данные в виде специальных тегов:
//Договор:123-А от 01.01.2024//Счет:45//
Или в любом другом, удобном для вас формате. Наличие таких четких и неизменных тегов в строке назначения платежа максимально упрощает и удешевляет доработку по разбору этой строки. Программисту не придется гадать и использовать сложные алгоритмы — достаточно будет найти тег и извлечь его значение.
Помимо прямого заполнения договора, существуют и другие способы, которые помогают упорядочить расчеты.
Поступление безналичных ДС. Это не ошибка. В дальнейшем, когда вы будете создавать документ Реализация товаров и услуг для этого клиента, вы можете воспользоваться "Помощником зачета оплат". Этот инструмент покажет все незачтенные авансы и позволит легко распределить их на созданный отгрузочный документ. Это не автоматизирует заполнение договора в момент загрузки, но является штатным и правильным способом для последующей разноски авансов.Таким образом, хотя 1С:УТ 11.4 не предлагает готового "волшебного" решения, существует множество способов добиться автоматического заполнения договора. Рекомендуем начать с самых простых (логика единственного договора) и организационных мер, а для более сложных случаев привлекать программиста для настройки интеллектуального анализа назначения платежа.