Вопрос о том, как именно формируется документ Поступление на расчетный счет при загрузке из «Клиент-банка», часто возникает у технических специалистов и бухгалтеров при анализе данных. Рассмотрим ситуацию: в базе данных мы видим документ, где табличная часть Расшифровка платежа содержит несколько строк с разными договорами или статьями движения денежных средств (ДДС). Нам необходимо выяснить, является ли это результатом работы стандартного кода 1С или же в системе присутствует скрытая доработка.
Для начала проанализируем структуру файла обмена, который формирует большинство банковских программ. Традиционный протокол обмена данными «1С — Клиент-банк» базируется на текстовом файле (обычно kl_to_1c.txt). Если мы откроем этот файл блокнотом, то увидим, что каждая банковская транзакция описывается определенным набором тегов внутри секции СекцияДокумент=Платежное поручение (или другой вид документа).
В этом стандарте предусмотрены следующие поля для сумм и аналитики:
Важный вывод: формат обмена .txt физически не приспособлен для передачи иерархических или многострочных данных внутри одного платежа. В нем нет структуры, которая позволила бы передать, например, «1000 рублей по Договору №1 и 500 рублей по Договору №2» в рамках одной секции документа. Следовательно, типовой парсер 1С, считывая этот файл, технически не может получить готовую разбивку.
Разберем, как ведет себя программный код типовой конфигурации. Обработка КлиентБанкЗагрузка (или аналогичные механизмы в БП 3.0) при чтении файла создает объект документа и заполняет его данными. В типовом решении заложен принцип: одна входящая транзакция — одна строка в расшифровке.
Даже если в поле НазначениеПлатежа указано несколько счетов или договоров, стандартный алгоритм не выполняет лингвистический анализ этого текста для автоматического распределения сумм. Программа просто переносит общую сумму в одну строку расшифровки, подбирая основной договор или оставляя его пустым для дальнейшего заполнения пользователем.
Иногда может возникнуть иллюзия, что система «сама» разбила платеж. Давайте выясним причину такого поведения. В 1С:Бухгалтерии существует механизм автоматического заполнения, который может сработать в следующих случаях:
DirectBank сохраняется логика создания одной строки расшифровки.Поступления на расчетный счет от контрагента это не характерно.Если вы наблюдаете многострочные расшифровки сразу после загрузки, и при этом уверены, что бухгалтер не правил документ вручную, проанализируем систему на наличие расширений или скрытой логики:
ПриЗаписи.Типовой код загрузки обычно выглядит следующим образом (упрощенно):
// Типовой подход
НоваяСтрока = ДокументОбъект.РасшифровкаПлатежа.Добавить();
НоваяСтрока.СуммаПлатежа = ДанныеФайла.Сумма;
НоваяСтрока.ДоговорКонтрагента = НайденныйДоговор;
Если же в системе внедрена доработка, мы увидим цикл по распределению суммы:
// Пример нетиповой доработки (распределение по долгам)
ТаблицаДолгов = ПолучитьЗадолженность(Контрагент);
ОстатокСуммы = ДанныеФайла.Сумма;
Для Каждого СтрокаДолга Из ТаблицаДолгов Цикл
Если ОстатокСуммы <= 0 Тогда Прервать; КонецЕсли;
НоваяСтрока = ДокументОбъект.РасшифровкаПлатежа.Добавить();
НоваяСтрока.СуммаПлатежа = Мин(ОстатокСуммы, СтрокаДолга.СуммаДолг);
НоваяСтрока.ДоговорКонтрагента = СтрокаДолга.Договор;
ОстатокСуммы = ОстатокСуммы - НоваяСтрока.СуммаПлатежа;
КонецЦикла;
Резюме: В чистой типовой конфигурации 1С:Бухгалтерия 3.0 загрузка через текстовый файл всегда создает одну строку в расшифровке. Любое автоматическое появление нескольких строк — это признак либо использования расширений, либо специфических настроек автоматического распределения оплат, внедренных программистами в конкретную базу.