Не получается вывести значение параметра макета по запросу. 1С 8.3 УТ11.3
Есть Обработка ПечатьЗаказовНаТоварыУслуги, в нем есть макет, в макете в области "Заказчик" создал параметр "ДолгКлиента" (рис1). В модуле объекта создал запрос Но выдает ошибку, что Помогите пожалуйста. Может запрос не правильно пишу?
// ШАПКА - ЗАКАЗЧИК
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РасчетыСКлиентамиОстатки.СуммаОстаток КАК СуммаОстаток
|ИЗ
| РегистрНакопления.РасчетыСКлиентами.Остатки КАК РасчетыСКлиентамиОстатки" ;
РезультатЗапроса = Запрос.Выполнить();
Запрос.УстановитьПараметр("ДолгКлиента", СуммаОстаток);
ОбластьМакета = Макет.ПолучитьОбласть("Заказчик");
УстановитьПараметр(ОбластьМакета, "ПредставлениеЗаказчика", ОписаниеОрганизации(ДанныеПечати, "Заказчик"));
ТабличныйДокумент.Вывести(ОбластьМакета);
ПоказатьПеременная не определена (СуммаОстаток)
Запрос.УстановитьПараметр("ДолгКлиента", <<?>>СуммаОстаток); (Проверка: Сервер)
Прикрепленные файлы:
![](/upload/forum/upload/915/9155450ab8f7b612452b3d10e178e3d4.png)
Найденные решения
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РасчетыСКлиентамиОстатки.СуммаОстаток КАК СуммаОстаток
|ИЗ
| РегистрНакопления.РасчетыСКлиентами.Остатки КАК РасчетыСКлиентамиОстатки" ;
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
ОбластьМакета = Макет.ПолучитьОбласть("Заказчик");
УстановитьПараметр(ОбластьМакета, "ПредставлениеЗаказчика", ОписаниеОрганизации(ДанныеПечати, "Заказчик"));
УстановитьПараметр(ОбластьМакета, "ДолгКлиента", Выборка.СуммаОстаток));
ТабличныйДокумент.Вывести(ОбластьМакета);
ПоказатьПримечание: запрос выбирает общий долг по всем клиентам (и то не факт).
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)
Теперь таких ошибок стали 2:
{Обработка.ПечатьЗаказовНаТоварыУслуги.МодульМенеджера(311,52)}: Переменная не определена (СуммаОстаток)
УстановитьПараметр(ОбластьМакета, "ДолгКлиента", <<?>>СуммаОстаток); (Проверка: Сервер)
{Обработка.ПечатьЗаказовНаТоварыУслуги.МодульМенеджера(312,44)}: Переменная не определена (СуммаОстаток)
Запрос.УстановитьПараметр("ДолгКлиента", <<?>>СуммаОстаток); (Проверка: Сервер)
УстановитьПараметр(ОбластьМакета, "ДолгКлиента", СуммаОстаток);
Теперь таких ошибок стали 2:
{Обработка.ПечатьЗаказовНаТоварыУслуги.МодульМенеджера(311,52)}: Переменная не определена (СуммаОстаток)
УстановитьПараметр(ОбластьМакета, "ДолгКлиента", <<?>>СуммаОстаток); (Проверка: Сервер)
{Обработка.ПечатьЗаказовНаТоварыУслуги.МодульМенеджера(312,44)}: Переменная не определена (СуммаОстаток)
Запрос.УстановитьПараметр("ДолгКлиента", <<?>>СуммаОстаток); (Проверка: Сервер)
(5) Написал вот так: ошибка все равно есть. Переменная "СуммаОстаток" это я из запроса написал, по этому просил помощи, возможно у меня с самого начало в запросе что то не правильно идет?!
// ШАПКА - ЗАКАЗЧИК
ОбластьМакета = Макет.ПолучитьОбласть("Заказчик");
УстановитьПараметр(ОбластьМакета, "ПредставлениеЗаказчика", ОписаниеОрганизации(ДанныеПечати, "Заказчик"));
УстановитьПараметр(ОбластьМакета, "ДолгКлиента", СуммаОстаток);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РасчетыСКлиентамиОстатки.СуммаОстаток КАК СуммаОстаток
|ИЗ
| РегистрНакопления.РасчетыСКлиентами.Остатки КАК РасчетыСКлиентамиОстатки" ;
РезультатЗапроса = Запрос.Выполнить();
Запрос.УстановитьПараметр("ДолгКлиента", СуммаОстаток);
ТабличныйДокумент.Вывести(ОбластьМакета);
Показать
(6)
Вы хотите в запрос передать этот параметр? Или из запроса получить "СуммаОстаток", чтобы заполнить макет. Потому что в коде вы делаете первое, а просите второе))
То есть по коду Вы в параметр запроса передаёте параметр СуммаОстаток, которого нет в контексте процедуры. Если вы хотите из запроса получить сумму остаток, то её надо не передавать в запрос, а получать из него.
Если я правильно понял, что Вам в итоге нужно сделать, то послушайте (9) . А вообще, как говорится: "учи матчасть")) Потому что в запросе нет условия на клиента, то есть он выведет Вам сумму остаток по всем клиентам, а не только по нужному
Вы хотите в запрос передать этот параметр? Или из запроса получить "СуммаОстаток", чтобы заполнить макет. Потому что в коде вы делаете первое, а просите второе))
То есть по коду Вы в параметр запроса передаёте параметр СуммаОстаток, которого нет в контексте процедуры. Если вы хотите из запроса получить сумму остаток, то её надо не передавать в запрос, а получать из него.
Если я правильно понял, что Вам в итоге нужно сделать, то послушайте (9) . А вообще, как говорится: "учи матчасть")) Потому что в запросе нет условия на клиента, то есть он выведет Вам сумму остаток по всем клиентам, а не только по нужному
(8)
РезультатЗапроса = Запрос.Выполнить();
Запрос.УстановитьПараметр("ДолгКлиента", СуммаОстаток);
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
Запрос.УстановитьПараметр("ДолгКлиента", Выборка.СуммаОстаток);
ТабличныйДокумент.Вывести(ОбластьМакета);
Иначе
собощить("Запрос не дал результатов");
КонецЕсли
РезультатЗапроса = Запрос.Выполнить();
Запрос.УстановитьПараметр("ДолгКлиента", СуммаОстаток);
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
Запрос.УстановитьПараметр("ДолгКлиента", Выборка.СуммаОстаток);
ТабличныйДокумент.Вывести(ОбластьМакета);
Иначе
собощить("Запрос не дал результатов");
КонецЕсли
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РасчетыСКлиентамиОстатки.СуммаОстаток КАК СуммаОстаток
|ИЗ
| РегистрНакопления.РасчетыСКлиентами.Остатки КАК РасчетыСКлиентамиОстатки" ;
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
ОбластьМакета = Макет.ПолучитьОбласть("Заказчик");
УстановитьПараметр(ОбластьМакета, "ПредставлениеЗаказчика", ОписаниеОрганизации(ДанныеПечати, "Заказчик"));
УстановитьПараметр(ОбластьМакета, "ДолгКлиента", Выборка.СуммаОстаток));
ТабличныйДокумент.Вывести(ОбластьМакета);
ПоказатьПримечание: запрос выбирает общий долг по всем клиентам (и то не факт).
(15) Вот по консоли запросов создал запрос (рис), в запросе внизу в таблице показывает сразу несколько Контрагентов по Заказу клиента и их долги. Мне надо выбрать того контрагента который печатается в моем макете т.е. по заказу клиента. Если сможете помогите пожалуйста.
Прикрепленные файлы:
![](/upload/forum/upload/1ef/1efcb5e63fd7b8b4711e8490f69104d7.png)
(16) В конструкторе запроса нажать кнопку (скрин). В открывшейся форме в поле "Условие" написать
ЗаказКлиента.Партнер = &Клиент
Нажать ок.
Потом перед строчкой, в которой Запрос.Выполнить() написать
ЗаказКлиента.Партнер = &Клиент
Нажать ок.
Потом перед строчкой, в которой Запрос.Выполнить() написать
Запрос.УстановитьПараметр("Клиент", Клиент)
Прикрепленные файлы:
![](/upload/forum/upload/1cb/1cbf9a8f92ce4f8f0adbe0e670c2ded5.jpg)
(17) Появилось ошибка: {Обработка.ПечатьЗаказовНаТоварыУслуги.МодульМенеджера(319,39)}: Переменная не определена (Клиент)
Запрос.УстановитьПараметр("Клиент", <<?>>Клиент); (Проверка: Сервер)
"ВЫБРАТЬ
| РасчетыСКлиентамиОстаткиИОбороты.КОплатеКонечныйОстаток КАК КОплатеКонечныйОстаток,
| РасчетыСКлиентамиОстаткиИОбороты.ЗаказКлиента КАК ЗаказКлиента,
| РасчетыСКлиентамиОстаткиИОбороты.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам
|ИЗ
| РегистрНакопления.РасчетыСКлиентами.ОстаткиИОбороты(, , , , ЗаказКлиента.Партнер = &Клиент) КАК РасчетыСКлиентамиОстаткиИОбороты";
Запрос.УстановитьПараметр("Клиент", Клиент);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
ОбластьМакета = Макет.ПолучитьОбласть("Заказчик");
УстановитьПараметр(ОбластьМакета, "ПредставлениеЗаказчика", ОписаниеОрганизации(ДанныеПечати, "Заказчик"));
УстановитьПараметр(ОбластьМакета, "ДолгКлиента", Выборка.КОплатеКонечныйОстаток);
ТабличныйДокумент.Вывести(ОбластьМакета);
ПоказатьЗапрос.УстановитьПараметр("Клиент", <<?>>Клиент); (Проверка: Сервер)
(19) Ну код у тебя где выполняется? В обработке? Воткни на форму реквизит, тип - справочник "Партнеры", имя - "Клиент", вытащи его на форму, выбирай там клиента и будет тебе счастье. Может, у тебя этот реквизит уже есть, тогда напиши
Код написан мной для примера, не надо его копировать и ждать, что он сразу заработает. В переменную "Клиент" надо передать значение клиента.
Запрос.УстановитьПараметр("Клиент", ИмяМоегоРеквизитаВКоторомЯВыбираюКлиентаЧтобыПосмотретьПоНемуДолг)
Код написан мной для примера, не надо его копировать и ждать, что он сразу заработает. В переменную "Клиент" надо передать значение клиента.
(20) Добрый день, я извиняюсь, но почему то не получается. Документ заказ клиента, а печатная форма это обработка ПечатьЗаказовНаТоварыУслуги. Все вышеуказанные запросы и коды написал в модуле обработки, на счет переменного "Клиент" написал вот так: ДанныеПечати.Заказчик. При сформировании печатной формы Заказ клиента параметр ДолгКлиента выходит пустым. Что делать?
Отладка вычислить выражение показывает Клиента если написать:
Отладка вычислить выражение показывает Клиента если написать:
Запрос.УстановитьПараметр("Клиент", ДанныеПечати.Заказчик);
(21) Долг клиента нужен по тому заказу, который распечатывается? Тогда передавай не клиента, а ссылку на заказ - из данных печати ее тоже можно вытащить.
Тогда в запросе будет
и в коде
Если же нужен общий долг клиента - посмотри в отладчике тип ДанныеПечати.Заказчик - может, это справочник "Контрагенты", а ты его пытаешься сравнить со справочником "Партнеры".
Тогда в запросе будет
|ИЗ
| РегистрНакопления.РасчетыСКлиентами.ОстаткиИОбороты(, , , , ЗаказКлиента = &Заказ) КАК РасчетыСКлиентамиОстаткиИОбороты
и в коде
Запрос.УстановитьПараметр("Заказ", ДанныеПечати.Ссылка);//или как там в данных печати называется свойство, в котором хранится ссылка
Если же нужен общий долг клиента - посмотри в отладчике тип ДанныеПечати.Заказчик - может, это справочник "Контрагенты", а ты его пытаешься сравнить со справочником "Партнеры".
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот