Одной из наиболее распространенных и неприятных проблем при работе с банковскими операциями в 1С:Комплексная автоматизация (КА) 2.4 является появление дублей документов. Ситуация выглядит следующим образом: бухгалтер создает документ Списание безналичных денежных средств, отправляет его в банк, а при обратной загрузке выписки система не находит существующий документ и создает второй точно такой же. В итоге остатки по расчетному счету «расползаются», а бухгалтеру приходится вручную удалять лишние записи.
В этой статье мы подробно разберем, почему так происходит, как работает алгоритм поиска документов в 1С и что именно нужно исправить, чтобы избавиться от дублей навсегда.
Для начала проанализируем архитектурную особенность программы. В отличие от 1С:Бухгалтерия предприятия 3.0, в 1С:КА 2.4 (а также в ERP и УТ 11) нет отдельного документа Платежное поручение, который бы создавал бухгалтерские проводки. Вместо этого используется единый объект — Списание безналичных денежных средств.
Этот документ проходит через несколько стадий (статусов):
Когда мы загружаем выписку, система должна найти документ, находящийся в статусе К оплате, и перевести его в статус Оплачено, заполнив дату проведения банком. Если система его не находит — она создает новый документ в статусе Оплачено, что и приводит к задвоению.
Разберем по шагам, по каким полям система пытается сопоставить данные из банковского файла с документами в базе данных:
DirectBank (прямой обмен с банком), система старается сопоставить объекты по внутренним идентификаторам. Это самый надежный способ.1c_to_kl.txt). Обратите внимание: система ищет совпадение именно по реквизиту НомерПоБанку, а не по внутреннему номеру документа 1С.Рассмотрим ситуацию, с которой столкнулись пользователи на практике. Часто банки при обработке платежа «отрезают» лидирующие нули в номере. Например, если в 1С номер документа 0000-000015, банк может вернуть в выписке номер 15.
Для решения этой проблемы в 1С существует специальный реквизит НомерПоБанку. В старых релизах или при определенных настройках программисты часто писали расширения, которые принудительно дополняли этот номер нулями (например, до 4 знаков — 0015), чтобы поиск работал корректно.
Однако фирма 1С постоянно обновляет логику типовых конфигураций. В последних версиях КА 2.4 механизм поиска был пересмотрен. Теперь система сама умеет эффективно сопоставлять номера типа 15 и 000015. Если в базе осталось старое расширение, которое модифицирует НомерПоБанку при записи, происходит конфликт:
Пример конфликта:
0015.15.15, но находит 0015.Выясним причину проблемы, проанализировав код и настройки. Рассмотрим порядок действий:
Откройте любой проблемный документ (дубль и оригинал). Посмотрите, что написано в поле «Номер по банку». Если вы видите разницу в количестве нулей, значит, проблема именно в сопоставлении номеров. Если поле скрыто с формы, воспользуйтесь меню «Еще» — «Изменить состав реквизитов» или посмотрите через консоль запросов.
Если вы ранее «боролись» с задвоениями с помощью программного кода, проверьте ваши расширения. Ищите процедуры ПередЗаписью или ПриЗаписи для документа СписаниеБезналичныхДенежныхСредств. Проанализируйте следующий фрагмент кода, который мог быть внедрен ранее:
// Пример устаревшей доработки, которая может вредить:
&После("ПередЗаписью")
Процедура Имя_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ЗначениеЗаполнено(ЭтотОбъект.Номер) Тогда
// Раньше мы насильно добавляли нули
ЭтотОбъект.НомерПоБанку = СокрЛП(Прав(ЭтотОбъект.Номер, 4));
КонецЕсли;
КонецПроцедуры
Если подобный код обнаружен, его следует отключить (закомментировать), так как современные релизы КА 2.4 справляются с поиском по номеру более гибко.
Убедитесь, что ваши документы перед загрузкой выписки находятся в статусе К оплате. Если документ остается в статусе Согласовано, система при загрузке может проигнорировать его, посчитав, что это лишь предварительная заявка, и создаст новое фактическое списание.
Проанализируем важную настройку в разделе НСИ и администрирование — Казначейство. Здесь определяется модель работы с банком:
Если у вас включен первый вариант, но вы или ваши коллеги создаете документы вручную в день загрузки, не соблюдая правила нумерации, задвоения неизбежны. Рекомендуем придерживаться строгой последовательности: создание документа -> выгрузка в банк -> загрузка подтверждения.
Подводя итог, можно сказать, что решение проблемы задвоения в 1С:КА 2.4 чаще всего кроется в отказе от старых «костылей» в пользу типового функционала. Проанализируем краткий чек-лист:
НомерПоБанку.DirectBank, проверьте актуальность настроек на стороне банка — иногда смена сертификата или протокола обмена приводит к тому, что UUID платежа перестает передаваться корректно.Помните, что 1С стремится к унификации работы с банками, и зачастую «хитрые» способы борьбы с ошибками прошлых лет становятся основной причиной проблем в новых версиях программы.