Есть Обработка ПечатьЗаказовНаТоварыУслуги, в нем есть макет, в макете в области "Заказчик" создал параметр "ДолгКлиента" (рис1). В модуле объекта создал запрос
```1c
    // ШАПКА - ЗАКАЗЧИК
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | РасчетыСКлиентамиОстатки.СуммаОстаток КАК СуммаОстаток
    |ИЗ
    | РегистрНакопления.РасчетыСКлиентами.Остатки КАК РасчетыСКлиентамиОстатки" ;
    РезультатЗапроса = Запрос.Выполнить();
    Запрос.УстановитьПараметр("ДолгКлиента", СуммаОстаток);
    ОбластьМакета = Макет.ПолучитьОбласть("Заказчик");
    УстановитьПараметр(ОбластьМакета, "ПредставлениеЗаказчика", ОписаниеОрганизации(ДанныеПечати, "Заказчик"));
    ТабличныйДокумент.Вывести(ОбластьМакета);
```
 Но выдает ошибку, что
```1c
    Переменная не определена (СуммаОстаток)
    Запрос.УстановитьПараметр("ДолгКлиента", <<?>>СуммаОстаток); (Проверка: Сервер)
```
 Помогите пожалуйста. Может запрос не правильно пишу?
---
```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | РасчетыСКлиентамиОстатки.СуммаОстаток КАК СуммаОстаток
    |ИЗ
    | РегистрНакопления.РасчетыСКлиентами.Остатки КАК РасчетыСКлиентамиОстатки" ;
    Выборка = Запрос.Выполнить().Выбрать();
    Выборка.Следующий();
    ОбластьМакета = Макет.ПолучитьОбласть("Заказчик");
    УстановитьПараметр(ОбластьМакета, "ПредставлениеЗаказчика", ОписаниеОрганизации(ДанныеПечати, "Заказчик"));
    УстановитьПараметр(ОбластьМакета, "ДолгКлиента", Выборка.СуммаОстаток));
    ТабличныйДокумент.Вывести(ОбластьМакета);
```

Примечание: запрос выбирает общий долг по всем клиентам (и то не факт).
---
Правильно пишет, нет в запросе такого параметра.

Надо области макета этот параметр установить.

Например, так:

УстановитьПараметр(ОбластьМакета, "ДолгКлиента", СуммаОстаток);
---
УстановитьПараметр(ОбластьМакета, "ДолгКлиента", СуммаОстаток);
Теперь таких ошибок стали 2:
{Обработка.ПечатьЗаказовНаТоварыУслуги.МодульМенеджера(311,52)}: Переменная не определена (СуммаОстаток)
  УстановитьПараметр(ОбластьМакета, "ДолгКлиента", <<?>>СуммаОстаток); (Проверка: Сервер)
{Обработка.ПечатьЗаказовНаТоварыУслуги.МодульМенеджера(312,44)}: Переменная не определена (СуммаОстаток)
  Запрос.УстановитьПараметр("ДолгКлиента", <<?>>СуммаОстаток); (Проверка: Сервер)
---
Так Вы параметр устанавливаете после выполнения запроса. Надо перед
---
Это во-первых. А во-вторых, у Вас же явно сказано, что нет такой переменной как "СуммаОстаток", которую вы пытаетесь впихнуть в параметры запроса. Проверьте, точно ли она где-то определена для этой процедуры/функции
---
Написал вот так:
```1c
    // ШАПКА - ЗАКАЗЧИК

    ОбластьМакета = Макет.ПолучитьОбласть("Заказчик");
    УстановитьПараметр(ОбластьМакета, "ПредставлениеЗаказчика", ОписаниеОрганизации(ДанныеПечати, "Заказчик"));
    УстановитьПараметр(ОбластьМакета, "ДолгКлиента", СуммаОстаток);
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | РасчетыСКлиентамиОстатки.СуммаОстаток КАК СуммаОстаток
    |ИЗ
    | РегистрНакопления.РасчетыСКлиентами.Остатки КАК РасчетыСКлиентамиОстатки" ;
    РезультатЗапроса = Запрос.Выполнить();
    Запрос.УстановитьПараметр("ДолгКлиента", СуммаОстаток);
    ТабличныйДокумент.Вывести(ОбластьМакета);
```
 ошибка все равно есть. Переменная "СуммаОстаток" это я из запроса написал, по этому просил помощи, возможно у меня с самого начало в запросе что то не правильно идет?!
---
Вы хотите в запрос передать этот параметр? Или из запроса получить "СуммаОстаток", чтобы заполнить макет. Потому что в коде вы делаете первое, а просите второе))
То есть по коду Вы в параметр запроса передаёте параметр СуммаОстаток, которого нет в контексте процедуры. Если вы хотите из запроса получить сумму остаток, то её надо не передавать в запрос, а получать из него.
Если я правильно понял, что Вам в итоге нужно сделать, то послушайте (9) . А вообще, как говорится: "учи матчасть")) Потому что в запросе нет условия на клиента, то есть он выведет Вам сумму остаток по всем клиентам, а не только по нужному
---
А выборку из запроса дядя Александр Сергеевич будет делать?
В результатеЗапроса такого поля реально нет...
---
:) Вот если бы знал бы дядю Александра Сергеевича, я бы не задавал такие вопросы, если сможете помогите пожалуйста как правильно написать весь этот код, пожалуйста!
---
Вот если бы знал бы дядю Александра Сергеевича, я бы не задавал такие вопросы

Про него рассказывают в школе. Помнишь "Выпьем, няня, где же кружка"
---
РезультатЗапроса = Запрос.Выполнить();
        Запрос.УстановитьПараметр("ДолгКлиента", СуммаОстаток);
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
Запрос.УстановитьПараметр("ДолгКлиента", Выборка.СуммаОстаток);
        ТабличныйДокумент.Вывести(ОбластьМакета);
Иначе
  собощить("Запрос не дал результатов");
КонецЕсли
---
```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | РасчетыСКлиентамиОстатки.СуммаОстаток КАК СуммаОстаток
    |ИЗ
    | РегистрНакопления.РасчетыСКлиентами.Остатки КАК РасчетыСКлиентамиОстатки" ;
    Выборка = Запрос.Выполнить().Выбрать();
    Выборка.Следующий();
    ОбластьМакета = Макет.ПолучитьОбласть("Заказчик");
    УстановитьПараметр(ОбластьМакета, "ПредставлениеЗаказчика", ОписаниеОрганизации(ДанныеПечати, "Заказчик"));
    УстановитьПараметр(ОбластьМакета, "ДолгКлиента", Выборка.СуммаОстаток));
    ТабличныйДокумент.Вывести(ОбластьМакета);
```

Примечание: запрос выбирает общий долг по всем клиентам (и то не факт).
---
Примечание: запрос выбирает общий долг по всем клиентам (и то не факт). Да, действительно выбирает общий долг, а мне надо выводить по заказу клиента именно этого контрагента, что надо делать, запрос поменять да?
---
Даже не общий долг, а какая то не понятная сумма!
---
Да, надо поменять запрос. Посмотреть на структуру регистра, на то, какой документ какие движения в нем делает и поменять.
---
Вот по консоли запросов создал запрос (рис), в запросе внизу в таблице показывает сразу несколько Контрагентов по Заказу клиента и их долги. Мне надо выбрать того контрагента который печатается в моем макете т.е. по заказу клиента. Если сможете помогите пожалуйста.
---
В конструкторе запроса нажать кнопку (скрин). В открывшейся форме в поле "Условие" написать

ЗаказКлиента.Партнер = &Клиент

Нажать ок.

Потом перед строчкой, в которой Запрос.Выполнить() написать

```1c
    Запрос.УстановитьПараметр("Клиент", Клиент)
```
---
```1c
    "ВЫБРАТЬ
    | РасчетыСКлиентамиОстаткиИОбороты.КОплатеКонечныйОстаток КАК КОплатеКонечныйОстаток,
    | РасчетыСКлиентамиОстаткиИОбороты.ЗаказКлиента КАК ЗаказКлиента,
    | РасчетыСКлиентамиОстаткиИОбороты.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам
    |ИЗ
    | РегистрНакопления.РасчетыСКлиентами.ОстаткиИОбороты(, , , , ЗаказКлиента.Партнер = &Клиент) КАК РасчетыСКлиентамиОстаткиИОбороты";
    Запрос.УстановитьПараметр("Клиент", Клиент);
    Выборка = Запрос.Выполнить().Выбрать();
    Выборка.Следующий();
    ОбластьМакета = Макет.ПолучитьОбласть("Заказчик");

    УстановитьПараметр(ОбластьМакета, "ПредставлениеЗаказчика", ОписаниеОрганизации(ДанныеПечати, "Заказчик"));
    УстановитьПараметр(ОбластьМакета, "ДолгКлиента", Выборка.КОплатеКонечныйОстаток);
    ТабличныйДокумент.Вывести(ОбластьМакета);
```
 Появилось ошибка: {Обработка.ПечатьЗаказовНаТоварыУслуги.МодульМенеджера(319,39)}: Переменная не определена (Клиент)
  Запрос.УстановитьПараметр("Клиент", <<?>>Клиент); (Проверка: Сервер)
---
Ну код у тебя где выполняется? В обработке? Воткни на форму реквизит, тип - справочник "Партнеры", имя - "Клиент", вытащи его на форму, выбирай там клиента и будет тебе счастье. Может, у тебя этот реквизит уже есть, тогда напиши

```1c
    Запрос.УстановитьПараметр("Клиент", ИмяМоегоРеквизитаВКоторомЯВыбираюКлиентаЧтобыПосмотретьПоНемуДолг)
```

Код написан мной для примера, не надо его копировать и ждать, что он сразу заработает. В переменную "Клиент" надо передать значение клиента.
---
Добрый день, я извиняюсь, но почему то не получается. Документ заказ клиента, а печатная форма это обработка ПечатьЗаказовНаТоварыУслуги. Все вышеуказанные запросы и коды написал в модуле обработки, на счет переменного "Клиент" написал вот так: ДанныеПечати.Заказчик. При сформировании печатной формы Заказ клиента параметр ДолгКлиента выходит пустым. Что делать?
Отладка вычислить выражение показывает Клиента если написать:
```1c
    Запрос.УстановитьПараметр("Клиент", ДанныеПечати.Заказчик);
```
---
Долг клиента нужен по тому заказу, который распечатывается? Тогда передавай не клиента, а ссылку на заказ - из данных печати ее тоже можно вытащить.

Тогда в запросе будет

```1c
    |ИЗ
    | РегистрНакопления.РасчетыСКлиентами.ОстаткиИОбороты(, , , , ЗаказКлиента = &Заказ) КАК РасчетыСКлиентамиОстаткиИОбороты
```

и в коде

```1c
    Запрос.УстановитьПараметр("Заказ", ДанныеПечати.Ссылка);//или как там в данных печати называется свойство, в котором хранится ссылка
```

Если же нужен общий долг клиента - посмотри в отладчике тип ДанныеПечати.Заказчик - может, это справочник "Контрагенты", а ты его пытаешься сравнить со справочником "Партнеры".
---
Я хочу посмотреть общий долг клиента. Вот в отладчике что дает ДанныеПечати (скрин)
---
В запросе:

```1c
    |ИЗ
    | РегистрНакопления.РасчетыСКлиентами.ОстаткиИОбороты(, , , , ЗаказКлиента.Контрагент = &Контрагент) КАК РасчетыСКлиентамиОстаткиИОбороты
```

В коде:

```1c
    Запрос.УстановитьПараметр("Контрагент", ДанныеПечати.Контрагент);
```
---
Спасибо большое!
---
Добрый день! Можно еще один вопрос задавать? У контрагента долги в двух валютах, в консоли запросе (скрин) получаю вот такой ответ. Как можно их в макет вывести. Сейчас у меня берет только первую строку!
---
Все уже решил! Всем спасибо за ответы!
---
Если по заказу клиента - еще проще, условие будет

ЗаказКлиента = &Заказ,

соответственно

Запрос.УстановитьПараметр("Заказ", Заказ)