Не получается вывести значение параметра макета по запросу. 1С 8.3 УТ11.3

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


Примечание: запрос выбирает общий долг по всем клиентам (и то не факт).
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. accounting_cons 756 13.11.18 05:21 Сейчас в теме
Правильно пишет, нет в запросе такого параметра.

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

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

УстановитьПараметр(ОбластьМакета, "ДолгКлиента", СуммаОстаток);
3. Shurik_M 2 13.11.18 06:17 Сейчас в теме
(2)
УстановитьПараметр(ОбластьМакета, "ДолгКлиента", СуммаОстаток);

Теперь таких ошибок стали 2:
{Обработка.ПечатьЗаказовНаТоварыУслуги.МодульМенеджера(311,52)}: Переменная не определена (СуммаОстаток)
УстановитьПараметр(ОбластьМакета, "ДолгКлиента", <<?>>СуммаОстаток); (Проверка: Сервер)
{Обработка.ПечатьЗаказовНаТоварыУслуги.МодульМенеджера(312,44)}: Переменная не определена (СуммаОстаток)
Запрос.УстановитьПараметр("ДолгКлиента", <<?>>СуммаОстаток); (Проверка: Сервер)
4. Kovekh 13.11.18 07:34 Сейчас в теме
Так Вы параметр устанавливаете после выполнения запроса. Надо перед
5. Kovekh 13.11.18 07:41 Сейчас в теме
(4)
Это во-первых. А во-вторых, у Вас же явно сказано, что нет такой переменной как "СуммаОстаток", которую вы пытаетесь впихнуть в параметры запроса. Проверьте, точно ли она где-то определена для этой процедуры/функции
6. Shurik_M 2 13.11.18 11:00 Сейчас в теме
(5) Написал вот так:
// ШАПКА - ЗАКАЗЧИК
				
		ОбластьМакета = Макет.ПолучитьОбласть("Заказчик");
		УстановитьПараметр(ОбластьМакета, "ПредставлениеЗаказчика", ОписаниеОрганизации(ДанныеПечати, "Заказчик"));
		УстановитьПараметр(ОбластьМакета, "ДолгКлиента", СуммаОстаток);
		Запрос = Новый Запрос;
		Запрос.Текст =
		"ВЫБРАТЬ
		|	РасчетыСКлиентамиОстатки.СуммаОстаток КАК СуммаОстаток
		|ИЗ
		|	РегистрНакопления.РасчетыСКлиентами.Остатки КАК РасчетыСКлиентамиОстатки"  ;
		РезультатЗапроса = Запрос.Выполнить();
		Запрос.УстановитьПараметр("ДолгКлиента", СуммаОстаток);
		ТабличныйДокумент.Вывести(ОбластьМакета);
Показать
ошибка все равно есть. Переменная "СуммаОстаток" это я из запроса написал, по этому просил помощи, возможно у меня с самого начало в запросе что то не правильно идет?!
12. Kovekh 13.11.18 12:33 Сейчас в теме
(6)
Вы хотите в запрос передать этот параметр? Или из запроса получить "СуммаОстаток", чтобы заполнить макет. Потому что в коде вы делаете первое, а просите второе))
То есть по коду Вы в параметр запроса передаёте параметр СуммаОстаток, которого нет в контексте процедуры. Если вы хотите из запроса получить сумму остаток, то её надо не передавать в запрос, а получать из него.
Если я правильно понял, что Вам в итоге нужно сделать, то послушайте (9) . А вообще, как говорится: "учи матчасть")) Потому что в запросе нет условия на клиента, то есть он выведет Вам сумму остаток по всем клиентам, а не только по нужному
7. DenisCh 13.11.18 11:07 Сейчас в теме
А выборку из запроса дядя Александр Сергеевич будет делать?
В результатеЗапроса такого поля реально нет...
8. Shurik_M 2 13.11.18 11:14 Сейчас в теме
(7) :) Вот если бы знал бы дядю Александра Сергеевича, я бы не задавал такие вопросы, если сможете помогите пожалуйста как правильно написать весь этот код, пожалуйста!
10. DenisCh 13.11.18 11:48 Сейчас в теме
(8)
Вот если бы знал бы дядю Александра Сергеевича, я бы не задавал такие вопросы


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


Примечание: запрос выбирает общий долг по всем клиентам (и то не факт).
13. Shurik_M 2 13.11.18 20:42 Сейчас в теме
(9)
Примечание: запрос выбирает общий долг по всем клиентам (и то не факт).
Да, действительно выбирает общий долг, а мне надо выводить по заказу клиента именно этого контрагента, что надо делать, запрос поменять да?
14. Shurik_M 2 13.11.18 21:15 Сейчас в теме
(13) Даже не общий долг, а какая то не понятная сумма!
15. antz 14.11.18 11:04 Сейчас в теме
(13) Да, надо поменять запрос. Посмотреть на структуру регистра, на то, какой документ какие движения в нем делает и поменять.
16. Shurik_M 2 14.11.18 14:07 Сейчас в теме
(15) Вот по консоли запросов создал запрос (рис), в запросе внизу в таблице показывает сразу несколько Контрагентов по Заказу клиента и их долги. Мне надо выбрать того контрагента который печатается в моем макете т.е. по заказу клиента. Если сможете помогите пожалуйста.
Прикрепленные файлы:
17. antz 14.11.18 14:48 Сейчас в теме
(16) В конструкторе запроса нажать кнопку (скрин). В открывшейся форме в поле "Условие" написать

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

Нажать ок.

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

Запрос.УстановитьПараметр("Клиент", Клиент)
Прикрепленные файлы:
19. Shurik_M 2 14.11.18 15:10 Сейчас в теме
(17)
"ВЫБРАТЬ
		|	РасчетыСКлиентамиОстаткиИОбороты.КОплатеКонечныйОстаток КАК КОплатеКонечныйОстаток,
		|	РасчетыСКлиентамиОстаткиИОбороты.ЗаказКлиента КАК ЗаказКлиента,
		|	РасчетыСКлиентамиОстаткиИОбороты.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам
		|ИЗ
		|	РегистрНакопления.РасчетыСКлиентами.ОстаткиИОбороты(, , , , ЗаказКлиента.Партнер = &Клиент) КАК РасчетыСКлиентамиОстаткиИОбороты";
		Запрос.УстановитьПараметр("Клиент", Клиент);
		Выборка = Запрос.Выполнить().Выбрать();
        Выборка.Следующий();  
        ОбластьМакета = Макет.ПолучитьОбласть("Заказчик");
		
		УстановитьПараметр(ОбластьМакета, "ПредставлениеЗаказчика", ОписаниеОрганизации(ДанныеПечати, "Заказчик"));
        УстановитьПараметр(ОбластьМакета, "ДолгКлиента", Выборка.КОплатеКонечныйОстаток);
        ТабличныйДокумент.Вывести(ОбластьМакета);
Показать
Появилось ошибка: {Обработка.ПечатьЗаказовНаТоварыУслуги.МодульМенеджера(319,39)}: Переменная не определена (Клиент)
Запрос.УстановитьПараметр("Клиент", <<?>>Клиент); (Проверка: Сервер)
20. antz 14.11.18 15:19 Сейчас в теме
(19) Ну код у тебя где выполняется? В обработке? Воткни на форму реквизит, тип - справочник "Партнеры", имя - "Клиент", вытащи его на форму, выбирай там клиента и будет тебе счастье. Может, у тебя этот реквизит уже есть, тогда напиши

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


Код написан мной для примера, не надо его копировать и ждать, что он сразу заработает. В переменную "Клиент" надо передать значение клиента.
21. Shurik_M 2 15.11.18 10:56 Сейчас в теме
(20) Добрый день, я извиняюсь, но почему то не получается. Документ заказ клиента, а печатная форма это обработка ПечатьЗаказовНаТоварыУслуги. Все вышеуказанные запросы и коды написал в модуле обработки, на счет переменного "Клиент" написал вот так: ДанныеПечати.Заказчик. При сформировании печатной формы Заказ клиента параметр ДолгКлиента выходит пустым. Что делать?
Отладка вычислить выражение показывает Клиента если написать:
Запрос.УстановитьПараметр("Клиент", ДанныеПечати.Заказчик);
22. antz 15.11.18 11:03 Сейчас в теме
(21) Долг клиента нужен по тому заказу, который распечатывается? Тогда передавай не клиента, а ссылку на заказ - из данных печати ее тоже можно вытащить.

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

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


и в коде

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


Если же нужен общий долг клиента - посмотри в отладчике тип ДанныеПечати.Заказчик - может, это справочник "Контрагенты", а ты его пытаешься сравнить со справочником "Партнеры".
23. Shurik_M 2 15.11.18 11:39 Сейчас в теме
(22) Я хочу посмотреть общий долг клиента. Вот в отладчике что дает ДанныеПечати (скрин)
Прикрепленные файлы:
24. antz 15.11.18 11:50 Сейчас в теме
(23) В запросе:

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


В коде:

Запрос.УстановитьПараметр("Контрагент", ДанныеПечати.Контрагент);
25. Shurik_M 2 15.11.18 13:24 Сейчас в теме
26. Shurik_M 2 17.11.18 12:04 Сейчас в теме
(24) Добрый день! Можно еще один вопрос задавать? У контрагента долги в двух валютах, в консоли запросе (скрин) получаю вот такой ответ. Как можно их в макет вывести. Сейчас у меня берет только первую строку!
Прикрепленные файлы:
27. Shurik_M 2 18.11.18 07:58 Сейчас в теме
(26) Все уже решил! Всем спасибо за ответы!
18. antz 14.11.18 14:50 Сейчас в теме
(16) Если по заказу клиента - еще проще, условие будет

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

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

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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот