Всем привет! С наступившими праздниками! Уважаемое сообщество, возник такого рода вопрос: К примеру, нужно создать ВПФ для конфигурации 1С: Розница 8, редакция 2.3 в документе (Заказ покупателя), нужно к макету подтянуть параметры реквизитов Банковского счета Контрагента, его в этом документе нету, подтягиваем из сведений о Юр. Физ. лице, а через запрос ИЗ Справочника возможно это сделать?

```1c
    Функция СформироватьПечатнуюФорму(СсылкаНаОбъект, ОбъектыПечати)

    ТабДок = Новый ТабличныйДокумент;

    Макет = ПолучитьМакет("Макет");

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

    //Вопрос: Возможно ли через запрос подтянуть реквизиты Банковского счета Контрагента?

    Запрос.УстановитьПараметр("МассивОбъектов", СсылкаНаОбъект);

    Результаты = Запрос.ВыполнитьПакет();

    Макет.Параметры.КонтрагентОГРН = СсылкаНаОбъект.Контрагент.РегистрационныйНомер;
    Макет.Параметры.КонтрагентОрганизация = СсылкаНаОбъект.Контрагент.НаименованиеПолное;
    Макет.Параметры.КонтрагентИНН = СсылкаНаОбъект.Контрагент.ИНН;
    Макет.Параметры.НомерСчетаПокупателя = //НомерСчета; ?

    //СведенияОПокупателе = ФормированиеПечатныхФормСервер.СведенияОЮрФизЛице(СсылкаНаОбъект.Контрагент, СсылкаНаОбъект.Дата);
    //Макет.Параметры.НомерСчетаПокупателя = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОПокупателе, "НомерСчета");

    ТабДок.Вывести(Макет);

    Возврат ТабДок;

    КонецФункции // СформироватьПечатнуюФорму()
```
---
```1c
    Результаты = Запрос.Выполнить();
    Выборка = Результаты.Выбрать();
    Пока Выборка.Следующий() Цикл
    Макет.Параметры.НомерСчетаПокупателя = Выборка.НомерСчета;
    КонецЦикла;
```

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

Вопрос - а если есть несколько счетов, как вы собираетесь указывать нужный?
---
В запросе в секцию "ГДЕ" добавь условие "БанковскиеСчетаКонтрагентов.Владелец = &Контрагент", и установи значение параметра:
Запрос.УстановитьПараметр("Контрагент", СсылкаНаОбъект.Контрагент); \
В итоге получишь по контрагенту все банковские счета с их реквизитами.
---
Можно полный код вместе с запросом, у меня туго с запросами, как раз это пытаюсь для себя немного подучить, если можно конечно?
---
Я правильно прописала запрос?

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

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

    Результаты = Запрос.ВыполнитьПакет();
```

Макет.Параметры.НомерСчетаПокупателя = //Что здесь прописать.НомерСчета;
---
Вообще твой код по идее можно сократить до:

```1c
    Функция СформироватьПечатнуюФорму(СсылкаНаОбъект, ОбъектыПечати)

    ТабДок = Новый ТабличныйДокумент;

    Макет = ПолучитьМакет("Макет");

    СведенияОПокупателе = ФормированиеПечатныхФормСервер.СведенияОЮрФизЛице(СсылкаНаОбъект.Контрагент, СсылкаНаОбъект.Дата);

    Макет.Параметры.КонтрагентОГРН = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СсылкаНаОбъект.Контрагент, "РегистрационныйНомер");
    Макет.Параметры.КонтрагентОрганизация = СведенияОПокупателе.НаименованиеПолное;
    Макет.Параметры.КонтрагентИНН = СведенияОПокупателе.ИНН;
    Макет.Параметры.НомерСчетаПокупателя = СведенияОПокупателе.НомерСчета;

    ТабДок.Вывести(Макет);

    Возврат ТабДок;

    КонецФункции
```
---
Уважаемое сообщество, так кто ни будь подскажет?
---
```1c
    Результаты = Запрос.Выполнить();
    Выборка = Результаты.Выбрать();
    Пока Выборка.Следующий() Цикл
    Макет.Параметры.НомерСчетаПокупателя = Выборка.НомерСчета;
    КонецЦикла;
```

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

Вопрос - а если есть несколько счетов, как вы собираетесь указывать нужный?
---
А есть решение указать нужный?
---
Если счет указать как основной, то его и можно будет использовать как нужный.
ЗЫ не помню есть такой реквизит в справочнике Розницы
---
Спасибо, все четко работает!
---
Надо проверить на пустоту результат - если не будет вообще счета...

```1c
    Если Результаты.Пустой() Тогда

    Сообщить(" У контрагента нет счета");

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

    КонецЕсли;
```
---
Ок, буду иметь ввиду (Основной), ясно!
---
Банковский счет по-умолчанию можно ещё найти вызвав процедуру модуля менеджера справочника БанковскиеСчетаКонтрагентов:

```1c
    БанковскийСчет = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(Контрагент);
```

И его реквизиты:

```1c
    РеквизитыСчета = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьРеквизитыБанковскогоСчета(БанковскийСчет);
```
---
Я так поняла, все остальное точно так же выводится, я имею ввиду: "Банк, КоррСчет, БИК"
---
Советую получать счет через:

```1c
    БанковскийСчет = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(Контрагент);
    РеквизитыСчета = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьРеквизитыБанковскогоСчета(БанковскийСчет);
```

А затем обращаться через точку к реквизитам счета:

```1c
    БИК = РеквизитыСчета.БИК;
    КоррСчет = РеквизитыСчета.КоррСчет;
```