Как автоматически заполнять субконто Склады на счете 57.03 при загрузке денег по терминалу в 1С:Бухгалтерия 3.0

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

В практической работе бухгалтера часто возникает ситуация, когда типовых аналитик в 1С недостаточно для детального учета. Например, в конфигурации 1С:Бухгалтерия 3.0 на счете 57.03 ("Продажи по платежным картам") стандартно используются только два субконто: Контрагенты и Договоры. Однако для розничных сетей с множеством торговых точек (магазинов) критически важно видеть движение денежных средств в разрезе конкретных складов или подразделений непосредственно на счетах учета денежных средств в пути.

Если вы самостоятельно добавили третье субконто Склады на счет 57.03, вы столкнетесь с проблемой: при загрузке банковской выписки это поле остается пустым, и бухгалтеру приходится вручную корректировать сотни операций. В этой статье мы разберем, как автоматизировать этот процесс, проанализируем причины поведения программы и предложим несколько вариантов решения — от внешней обработки до расширения конфигурации.

Почему 1С не заполняет Склад в банковской выписке автоматически

Разберем ситуацию с технической точки зрения. Банковский файл обмена (обычно это kl_1c.txt) содержит информацию о транзакциях: дату, сумму, контрагента и назначение платежа. В самом формате обмена данными между банком и 1С поля "Склад" не существует. Программа 1С при создании документа Поступление на расчетный счет с видом операции "Поступление по платежным картам" опирается на типовые алгоритмы заполнения.

Поскольку в типовом решении на счете 57.03 нет субконто Склады, программный код заполнения проводок просто "не знает" о необходимости искать и подставлять это значение. Даже если вы добавили субконто в План счетов, механизмы загрузки из клиент-банка игнорируют его, так как оно не является частью стандартной модели учета денежных средств.

Решение 1: Использование Merchant ID и внешней обработки

Проанализируем самый простой и безопасный для целостности конфигурации способ. В тексте назначения платежа, который приходит из банка, почти всегда содержится уникальный идентификатор терминала — Merchant ID (или № мерчанта). Мы можем использовать эту информацию как ключ для определения склада.

Рассмотрим алгоритм создания обработки, которая будет заполнять пропущенную аналитику:

  1. Создадим таблицу соответствий, где каждому номеру мерчанта (из комментария) соответствует определенный элемент справочника Склады.
  2. Напишем код, который перебирает документы Поступление на расчетный счет за выбранный период.
  3. Для каждого документа будем искать в тексте назначения платежа номер мерчанта.
  4. При совпадении — программно заполним субконто в движениях документа.

Пример фрагмента кода для реализации такой логики:


Для Каждого СтрокаВыписки Из ВыбранныеДокументы Цикл
    ТекстКомментария = СтрокаВыписки.НазначениеПлатежа;
    
    // Поиск номера мерчанта в строке
    Если Найти(ТекстКомментария, "Merchant 12345") > 0 Тогда
        НужныйСклад = Справочники.Склады.НайтиПоНаименованию("Магазин №1");
    ИначеЕсли Найти(ТекстКомментария, "Merchant 67890") > 0 Тогда
        НужныйСклад = Справочники.Склады.НайтиПоНаименованию("Магазин №2");
    КонецЕсли;

    // Заполнение движений документа
    НаборДвижений = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
    НаборДвижений.Отбор.Регистратор.Установить(СтрокаВыписки.Ссылка);
    НаборДвижений.Прочитать();
    
    Для Каждого Запись Из НаборДвижений Цикл
        Если Запись.СчетДт = ПланыСчетов.Хозрасчетный.ПродажиПоПлатежнымКартам Тогда
            Запись.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады] = НужныйСклад;
        КонецЕсли;
    КонецЦикла;
    
    НаборДвижений.Записать();
КонецЦикла;

Важно: При использовании этого метода помните, что при обычном перепроведении документа типовыми средствами 1С ваши ручные правки в движениях могут очиститься, если не установлена блокировка корректировки движений (флаг РучнаяКорректировка).

Решение 2: Использование расширения конфигурации

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

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

  1. Создадим расширение и добавим в него документ Поступление на расчетный счет и план счетов Хозрасчетный.
  2. Добавим в программу новый Регистр сведений (например, СоответствиеТерминаловИСкладов), где будем хранить связку "ID терминала — Склад".
  3. Используем метод &После для процедуры, отвечающей за формирование проводок по эквайрингу.

Выясним причину, по которой это решение эффективнее: программа будет обращаться к регистру сведений при каждом проведении документа и, основываясь на тексте назначения платежа, автоматически подставлять склад в третье субконто счета 57.03. Это избавит бухгалтера от необходимости запускать какие-либо обработки вручную.

Решение 3: Методологически верный подход (без изменения плана счетов)

Рассмотрим ситуацию с позиции стандартной методологии 1С. Часто попытка добавить "Склады" на денежный счет является избыточной. В системе для разделения выручки по точкам продаж предусмотрено субконто Подразделения.

Посмотрим, как настроить учет корректно:

  1. Включите в настройках параметров учета использование подразделений (Администрирование — Параметры учета — Настройки зарплаты — Расчет зарплаты по обособленным подразделениям или через общие настройки аналитики, если это КОРП-версия).
  2. Для каждого магазина создайте отдельное Подразделение.
  3. В справочнике Эквайринговые терминалы для каждого терминала укажите соответствующее подразделение.

При загрузке выписки 1С умеет сопоставлять транзакции с терминалами. Если терминал привязан к подразделению (магазину), аналитика заполнится автоматически без доработок кода. Бухгалтер сможет сформировать Оборотно-сальдовую ведомость по счету 57.03 в разрезе подразделений и получить те же данные, что и по складам, но в рамках типовой логики программы.

Советы по работе с файлом обмена kl_1c.txt

Если автоматизация сопоставления работает плохо, рекомендуем изучить внутреннюю структуру файла обмена, который выгружается из вашего клиент-банка. Откройте его любым текстовым редактором и найдите секции РасчСчет и НазначениеПлатежа. Вы увидите, какие именно данные передает банк. Иногда идентификатор торговой точки передается в скрытых тегах или специфических кодировках. Понимание структуры этого файла поможет вам или вашему программисту более точно настроить регулярные выражения для поиска Merchant ID в коде обработки или расширения.

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

← На главную