Как получить реквизиты банковского счета контрагента в печатной форме 1С?

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

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

Вариант 1: Использование прямого запроса к справочнику

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

Разберем процесс по шагам:

  1. Создаем объект Запрос.
  2. В текст запроса добавляем секцию ГДЕ, чтобы ограничить выборку конкретным контрагентом.
  3. Устанавливаем параметр запроса, соответствующий контрагенту из нашего документа.
  4. Проверяем результат на пустоту перед выводом в макет.

Посмотрим на пример реализации такого запроса:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |    БанковскиеСчетаКонтрагентов.НомерСчета КАК НомерСчета,
    |    БанковскиеСчетаКонтрагентов.БИКБанка КАК БИКБанка,
    |    БанковскиеСчетаКонтрагентов.КоррСчетБанка КАК КоррСчетБанка
    |ИЗ
    |    Справочник.БанковскиеСчетаКонтрагентов КАК БанковскиеСчетаКонтрагентов
    |ГДЕ
    |    БанковскиеСчетаКонтрагентов.Владелец = &Контрагент";

Запрос.УстановитьПараметр("Контрагент", СсылкаНаОбъект.Контрагент);
Результаты = Запрос.Выполнить();

Если НЕ Результаты.Пустой() Тогда
    Выборка = Результаты.Выбрать();
    Если Выборка.Следующий() Тогда
        Макет.Параметры.НомерСчетаПокупателя = Выборка.НомерСчета;
    КонецЕсли;
Иначе
    Сообщить("У контрагента не задан банковский счет!");
КонецЕсли;

Вариант 2: Использование типовых функций конфигурации

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

Рассмотрим использование метода ПолучитьБанковскийСчетПоУмолчанию:


// Получаем основной счет контрагента
БанковскийСчет = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(СсылкаНаОбъект.Контрагент);

// Если счет найден, получаем его полные реквизиты
Если ЗначениеЗаполнено(БанковскийСчет) Тогда
    РеквизитыСчета = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьРеквизитыБанковскогоСчета(БанковскийСчет);
    
    Макет.Параметры.НомерСчетаПокупателя = РеквизитыСчета.НомерСчета;
    Макет.Параметры.БИК = РеквизитыСчета.БИК;
    Макет.Параметры.КоррСчет = РеквизитыСчета.КоррСчет;
КонецЕсли;

Преимущества этого подхода:

Важные рекомендации по работе с печатными формами

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

1. Всегда проверяйте данные на пустоту. Не забывайте использовать Результаты.Пустой() или ЗначениеЗаполнено(). Попытка обратиться к несуществующему объекту вызовет ошибку, которая прервет выполнение печати документа.

2. Используйте серверные функции. Если в конфигурации уже есть готовые процедуры, такие как ФормированиеПечатныхФормСервер.СведенияОЮрФизЛице, старайтесь использовать их для получения стандартных реквизитов (ИНН, КПП, наименование). Это сократит количество кода в вашей функции СформироватьПечатнуюФорму.

3. Выбор счета. Если у контрагента несколько счетов, логика выбора нужного должна быть четко определена (например, выбор основного счета или счета, указанного в текущем заказе). Если нужно вывести несколько счетов, используйте цикл по выборке запроса и выводите данные в отдельные области табличного документа.

Надеемся, эти советы помогут вам эффективно реализовать вывод банковских реквизитов в ваших печатных формах!

← На главную