Где в 1С:Бухгалтерии хранится признак основного банковского счета контрагента?

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

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

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

Архитектурная логика хранения связи в 1С:Бухгалтерии

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

Чтобы не перегружать подчиненный справочник лишними признаками и исключить ситуацию, когда у одного контрагента случайно окажется выбрано несколько «основных» счетов, разработчики 1С пошли по классическому пути СУБД: связь «один-ко-многим» замыкается обратной ссылкой «один-к-одному» на стороне владельца.

Таким образом, признак «Основной» хранится непосредственно в карточке владельца в виде реквизита со ссылочным типом данных:

  1. Для контрагентов: Реквизит ОсновнойБанковскийСчет в справочнике Контрагенты (тип ссылки: СправочникСсылка.БанковскиеСчета).
  2. Для собственных организаций: Реквизит ОсновнойБанковскийСчет в справочнике Организации (тип ссылки: СправочникСсылка.БанковскиеСчета).
  3. Для физических лиц: Реквизит ОсновнойБанковскийСчет в справочнике ФизическиеЛица (тип ссылки: СправочникСсылка.БанковскиеСчета).

Когда пользователь в интерфейсе программы нажимает кнопку «Использовать как основной» в списке банковских счетов, система не модифицирует сам элемент счета. Вместо этого она берет ссылку на выбранный банковский счет и записывает ее в реквизит ОсновнойБанковскийСчет соответствующего контрагента или организации.

Программное получение и установка основного счета

Рассмотрим, как работать с этим реквизитом на практике с помощью встроенного языка 1С. Ниже приведена пара простых примеров для разработчиков.

Пример 1. Получение основного счета контрагента в коде:


// Получаем ссылку на контрагента (например, из реквизита документа)
СсылкаНаКонтрагента = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", "7701010101");

Если ЗначениеЗаполнено(СсылкаНаКонтрагента) Тогда
    // Прямое обращение к реквизиту владельца
    ОсновнойСчет = СсылкаНаКонтрагента.ОсновнойБанковскийСчет;
    
    Если ЗначениеЗаполнено(ОсновнойСчет) Тогда
        Сообщить("Основной счет контрагента: " + ОсновнойСчет.НомерСчета + " в банке " + ОсновнойСчет.Банк);
    Иначе
        Сообщить("У контрагента не выбран основной банковский счет.");
    КонецЕсли;
КонецЕсли;

Пример 2. Программная установка банковского счета в качестве основного:


// Предположим, у нас есть ссылка на созданный банковский счет
НовыйСчетСсылка = Справочники.БанковскиеСчета.НайтиПоРеквизиту("НомерСчета", "40702810XXXXXXXXXXXX");

Если ЗначениеЗаполнено(НовыйСчетСсылка) Тогда
    // Получаем владельца счета (это может быть Контрагент или Организация)
    ВладелецСчета = НовыйСчетСсылка.Владелец;
    
    // Блокируем и открываем объект владельца для изменения
    ОбъектВладельца = ВладелецСчета.ПолучитьОбъект();
    ОбъектВладельца.ОсновнойБанковскийСчет = НовыйСчетСсылка;
    
    Попытка
        ОбъектВладельца.Записать();
        Сообщить("Счет успешно установлен в качестве основного.");
    Исключение
        Сообщить("Не удалось перезаписать владельца: " + ОписаниеОшибки());
    КонецПопытки;
КонецЕсли;

Важные нюансы при переносе данных (Конвертация данных)

Если вы настраиваете правила обмена в программе «1С:Конвертация данных» для переноса информации из старой базы 1С:Бухгалтерия 2.0 (на платформе 8.2) в новую 1С:Бухгалтерия 3.0 (на платформе 8.3), то перенос основного счета не вызовет трудностей. Структура этих реквизитов в обеих редакциях идентична.

Однако при переносе следует соблюдать правильный порядок создания объектов, чтобы избежать записи пустых ссылок:

Отличие от конфигураций ERP, КА 2 и УТ 11

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

Если же вы осуществляете интеграцию с конфигурациями торговой линейки, такими как «Управление торговлей 11» (УТ), «Комплексная автоматизация 2» (КА) или «ERP Управление предприятием», то там физически нет реквизита «ОсновнойБанковскийСчет» в карточке контрагента.

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

← На главную