Как в 1С:Бухгалтерия 3.0 оплачивать поставщику с определенного расчетного счета нашей организации?

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

В процессе ведения бизнеса компании часто сталкиваются с необходимостью жесткого разделения финансовых потоков. У организации может быть открыто несколько расчетных счетов в разных банках. Из-за требований валютного контроля, специфики тарифов или жестких алгоритмов комплаенса по 115-ФЗ (система «знай своего клиента» / банковский светофор) некоторые банки крайне неохотно проводят платежи в адрес определенных контрагентов. В таких случаях бизнесу приходится строго разграничивать: какому поставщику с какого нашего счета должны уходить деньги.

Если платежами занимается один опытный главный бухгалтер, она может держать эти правила в голове. Но при её уходе в отпуск или передаче обязанностей рядовому бухгалтеру риск человеческой ошибки резко возрастает. Ошибка в выборе счета может привести к блокировке платежа, запросу кучи документов со стороны банка или даже к временной приостановке дистанционного банковского обслуживания (ДБО).

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

---

Штатные возможности «1С:Бухгалтерия 3.0» и почему их недостаточно

Для начала проанализируем, как устроена логика работы с банковскими счетами в типовом решении «1С:Бухгалтерия 3.0».

В карточке нашей организации (раздел Главное — Организации) мы можем создать сколько угодно банковских счетов. Однако система позволяет выбрать только один счет в качестве «Основного» (с помощью кнопки «Использовать как основной»). Именно этот счет программа будет по умолчанию подставлять во все вновь создаваемые документы «Платежное поручение» или «Списание с расчетного счета».

Что касается контрагентов, то в их карточках мы также можем задавать их банковские счета и выбирать один основной для подстановки в качестве получателя платежа. Но связать конкретного контрагента с конкретным нашим расчетным счетом в БП 3.0 стандартными средствами невозможно.

Важное примечание: некоторые начинающие пользователи путают расчетные счета с регистром Счета расчетов с контрагентами. Этот регистр предназначен исключительно для бухгалтерского учета (например, автоматической подстановки счетов 60.01, 60.02, 76.05 в документы) и никак не связан с банковскими расчетными счетами организации.

---

Как эта задача решена в старших конфигурациях 1С

Если мы обратимся к архитектуре комплексных решений, таких как «1С:Комплексная автоматизация 2» (КА), «1С:ERP Управление предприятием» или «1С:Управление холдингом» (УХ), то увидим, что там эта потребность полностью закрыта на уровне типового функционала.

В этих программах расчетные счета нашей организации привязываются непосредственно к Договору контрагента. В карточке договора присутствует реквизит Банковский счет организации. При создании платежных документов по конкретному договору система автоматически считывает этот реквизит и подставляет нужный банк вместо общего основного счета компании.

В «1С:Бухгалтерия 3.0» такого реквизита в договорах, увы, нет. Но мы можем реализовать аналогичное поведение самостоятельно.

---

Вариант 1. Безболезненные организационные методы (без программирования)

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

  1. Специальное кодирование названий договоров. Это самый простой и надежный визуальный метод контроля. Переименуйте договоры с «проблемными» контрагентами, добавив название целевого банка прямо в начало наименования договора. Например: «СБЕР — Договор поставки №145» или «ВТБ — Договор аренды». При создании платежного поручения бухгалтер в обязательном порядке выбирает договор и сразу видит крупную визуальную подсказку, с какого именно счета необходимо осуществить платеж.
  2. Использование комментариев. В карточке контрагента или в карточке договора есть стандартное текстовое поле «Комментарий». Напишите туда предупреждение крупным шрифтом (например: «!!! ОПЛАТА СТРОГО С АЛЬФА-БАНКА !!!»). Это поле можно вывести в форму списка договоров или настроить вывод предупреждения при выборе контрагента.
  3. Создание шаблонов платежных поручений (копирование). Бухгалтер может создать группу неактивных платежных поручений, которые будут выступать в роли шаблонов. В них уже будут жестко заданы правильные пары: Контрагент — Наш расчетный счет. Рядовому сотруднику останется лишь скопировать нужный шаблон, изменить сумму, дату, привязать актуальный счет на оплату и провести документ.

---

Вариант 2. Современное техническое решение через Расширение конфигурации

Главная проблема классического изменения («допила») конфигурации «1С:Бухгалтерия» заключается в том, что БП обновляется очень часто (иногда несколько раз в месяц в период сдачи отчетности). Постоянное ручное обновление нетиповой конфигурации требует времени и несет риски затереть измененный код.

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

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

Шаг 2.1. Добавление реквизита в справочник Договоры контрагентов

В нашем расширении мы заимствуем справочник ДоговорыКонтрагентов и добавляем в него новый реквизит. Назовем его, например, НашБанковскийСчет с типом ссылки на справочник БанковскиеСчетаОрганизаций. Этот реквизит мы выносим на форму элемента договора, чтобы бухгалтер мог вручную один раз указать привязку к нашему конкретному счету.

Шаг 2.2. Написание обработчика заполнения платежного поручения

Далее нам необходимо переопределить логику изменения договора в документе «Платежное поручение». Заимствуем в расширение форму документа ФормаДокумента платежного поручения и процедуру, отвечающую за выбор договора.

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


&НаКлиенте
Процедура Расш1_ДоговорКонтрагентаПриИзмененииПосле(Элемент)
    
    // Вызываем серверную процедуру для получения счета и перезаполнения реквизитов формы
    Расш1_ЗаполнитьСчетОрганизацииПоДоговоруНаСервере();
    
КонецПроцедуры

&НаСервере
Процедура Расш1_ЗаполнитьСчетОрганизацииПоДоговоруНаСервере()
    
    ДоговорСсылка = Объект.ДоговорКонтрагента;
    
    Если ЗначениеЗаполнено(ДоговорСсылка) Тогда
        // Считываем значение нашего нового реквизита из договора
        НашЦелевойСчет = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДоговорСсылка, "НашБанковскийСчет");
        
        // Если реквизит заполнен в договоре, подставляем его в документ
        Если ЗначениеЗаполнено(НашЦелевойСчет) Тогда
            Объект.СчетОрганизации = НашЦелевойСчет;
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры

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

---

Вариант 3. Подписка на событие для контроля и проверки проведения документов

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

Мы можем создать подписку на событие ПередЗаписью или ОбработкаПроверкиЗаполнения для документа ПлатежноеПоручение.

Проанализируем пример серверного кода, выполняющего валидацию счета перед сохранением документа:


Процедура Расш1_ПроверитьСчетОрганизацииПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
    
    // Если идет загрузка данных (например, обмен), проверку пропускаем
    Если Источник.ОбменДанными.Загрузка Тогда
        Возврат;
    КонецЕсли;
    
    Если ЗначениеЗаполнено(Источник.ДоговорКонтрагента) Тогда
        // Получаем привязанный к договору счет организации
        НашЦелевойСчет = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Источник.ДоговорКонтрагента, "НашБанковскийСчет");
        
        // Проверяем, настроено ли соответствие и совпадает ли выбранный счет с целевым
        Если ЗначениеЗаполнено(НашЦелевойСчет) И Источник.СчетОрганизации <> НашЦелевойСчет Тогда
            
            // Вариант А: Мягкое предупреждение пользователя
            ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
                НСтр("ru = 'Внимание! Для договора """ + Строка(Источник.ДоговорКонтрагента) + """ установлен обязательный расчетный счет: " + Строка(НашЦелевойСчет) + ". Пожалуйста, проверьте реквизиты!'"),
                Источник,
                "СчетОрганизации"
            );
            
            // Вариант Б: Жесткий запрет проведения платежки (раскомментировать при необходимости)
            // Отказ = Истина;
            
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры

Благодаря этому коду программа автоматически проверит корректность выбранного банковского счета. В случае несовпадения она выведет понятное сообщение об ошибке, подсветит поле СчетОрганизации красным цветом и (при жесткой настройке) не позволит провести платеж с неверного счета.

---

Резюме и рекомендации

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

← На главную