Открытие отчета с параметрами

1. user812298 19.08.17 18:35 Сейчас в теме
Добрый день!
Элементарная задача, УТ10.3, пользователь хочет из справочника номенклатуры по кнопке открывался отчет "ВедомостьТоварыНаСкладах" открыть отчет с параметрами этой номенклатуры и дополнительными полями: "Документ движения (регистратор)", "Период".

Добавил кнопку на панель, код:

Процедура ОТЧЕТНажатие(Элемент)

  
  ТекущаяСтрока = ЭлементыФормы.НаименованиеПолное.Значение; 
  
  
ВедомостьТоваровНаСкладах  = Отчеты.ВедомостьТоварыНаСкладах.Создать(); 
ВедомостьТоваровНаСкладах.УстановитьНачальныеНастройки();

ВедомостьТоваровНаСкладах.УниверсальныйОтчет.ПостроительОтчета.ИзмеренияСтроки.Очистить();
ВедомостьТоваровНаСкладах.УниверсальныйОтчет.ПостроительОтчета.ИзмеренияКолонки.Очистить();
ВедомостьТоваровНаСкладах.УниверсальныйОтчет.ПостроительОтчета.ВыбранныеПоля.Очистить();
ВедомостьТоваровНаСкладах.УниверсальныйОтчет.ПостроительОтчета.Порядок.Очистить();

ВедомостьТоваровНаСкладах.УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Номенклатура");


//номенклатура
	ЭлементОтбора = ВедомостьТоваровНаСкладах.УниверсальныйОтчет.ПостроительОтчета.Отбор["Номенклатура"];       //номенклатура
	ЭлементОтбора.Использование = Истина;
	ЭлементОтбора.ВидСравнения = ВидСравнения.Равно;
	
Показать


До этого все идет, встает на первой строке отсюда:
        ЭлементОтбора.Значение = ЭлементыФормы.НаименованиеПолное.Значение;
	
	
	ВедомостьТоваровНаСкладах.УниверсальныйОтчет.ДобавитьДополнительноеПоле("Период");
	ВедомостьТоваровНаСкладах.УниверсальныйОтчет.ВыводитьДетальныеЗаписи = Истина;

	
	ФормаОтчета = ВедомостьТоваровНаСкладах.ПолучитьФорму("Форма");
	ФормаОтчета.Открыть();
	ФормаОтчета.ОбновитьОтчет();
	
Показать



Крашится с ошибкой:

{Справочник.Номенклатура.Форма.ФормаЭлемента.Форма(2747)}: Ошибка при установке значения атрибута контекста (Значение)
ЭлементОтбора.Значение = ЭлементыФормы.НаименованиеПолное.Значение;
по причине:
Неверный тип значения


Да я понимаю, что не верный тип значения, но не понимаю как конкретно нужно оформить. Заранее спасибо за помощь.
По теме из базы знаний
Найденные решения
2. tata_1211 63 20.08.17 09:56 Сейчас в теме
(1) Думается, что ЭлементыФормы.НаименованиеПолное - это не ссылка на номенклатуру. А нужна именно ссылка.
3. tata_1211 63 20.08.17 09:58 Сейчас в теме
(1) Ниже кусок из типовой УТП, где открывается отчет с отбором по номенклатуре

Процедура ОткрытьОтчетПоТекущейНоменклатуре(НазваниеОтчета)
	
	Если ЭлементыФормы.Список.ТекущиеДанные = Неопределено Тогда
		// ничего нет
		Возврат;
	КонецЕсли;

	// получаем форму для построения отчета по остатку товара
	ТекущиеДанные = ЭлементыФормы.Список.ТекущиеДанные.Ссылка;
	ОтчетОстатки  = Отчеты[НазваниеОтчета].Создать();

	ОтчетОстатки.УстановитьНачальныеНастройки();

	ОтчетОстатки.УниверсальныйОтчет.мВосстанавливатьНастройкиПриОткрытии = Ложь;

	ФормаОтчета   = ОтчетОстатки.ПолучитьФорму(, ЭтаФорма, ЭтаФорма);
	ФормаОтчета.Открыть();

	ТекОтбор = ОтчетОстатки.УниверсальныйОтчет.ПостроительОтчета.Отбор.Номенклатура;
	ТекОтбор.ВидСравнения  = ?(ТекущиеДанные.ЭтоГруппа, ВидСравнения.ВИерархии, ВидСравнения.Равно);
	ТекОтбор.Значение      = ТекущиеДанные;
	ТекОтбор.Использование =  Истина;
	
	ОтчетОстатки.УниверсальныйОтчет.ДатаКон = ТекущаяДата();
	ОтчетОстатки.СформироватьОтчет(ФормаОтчета.ЭлементыФормы.ПолеТабличногоДокументаРезультат);
	
КонецПроцедуры
Показать
4. starjevschik 20.08.17 11:00 Сейчас в теме
(1) опять 25
отбор по номенклатуре, а передаем наименование. Или мы что-то не так делаем, или нам удалось назвать наименованием ссылку на номенклатуру, в именах переменных мы запутались из-за этого и не можем решить "элементарную задачу" (с).
Никогда, друзья, НИКОГДА не называйте ссылки наименованиями. Никогда. Имя переменной должно однозначно говорить о ее содержании.
И никогда не называйте элементарными задачи, которые вы не можете решить. Это очень сильно роняет вашу ценность в глазах окружающих. Элементарные задачи любой дурак может решить. Кроме того, это мешает вам подойти к задаче всерьез, открыть отладчик, изучить свой код, переименовать правильно переменные, найти ошибку и разобраться самостоятельно. Т.к. что там копаться-то, задача ведь "элементарная".
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. tata_1211 63 20.08.17 09:56 Сейчас в теме
(1) Думается, что ЭлементыФормы.НаименованиеПолное - это не ссылка на номенклатуру. А нужна именно ссылка.
3. tata_1211 63 20.08.17 09:58 Сейчас в теме
(1) Ниже кусок из типовой УТП, где открывается отчет с отбором по номенклатуре

Процедура ОткрытьОтчетПоТекущейНоменклатуре(НазваниеОтчета)
	
	Если ЭлементыФормы.Список.ТекущиеДанные = Неопределено Тогда
		// ничего нет
		Возврат;
	КонецЕсли;

	// получаем форму для построения отчета по остатку товара
	ТекущиеДанные = ЭлементыФормы.Список.ТекущиеДанные.Ссылка;
	ОтчетОстатки  = Отчеты[НазваниеОтчета].Создать();

	ОтчетОстатки.УстановитьНачальныеНастройки();

	ОтчетОстатки.УниверсальныйОтчет.мВосстанавливатьНастройкиПриОткрытии = Ложь;

	ФормаОтчета   = ОтчетОстатки.ПолучитьФорму(, ЭтаФорма, ЭтаФорма);
	ФормаОтчета.Открыть();

	ТекОтбор = ОтчетОстатки.УниверсальныйОтчет.ПостроительОтчета.Отбор.Номенклатура;
	ТекОтбор.ВидСравнения  = ?(ТекущиеДанные.ЭтоГруппа, ВидСравнения.ВИерархии, ВидСравнения.Равно);
	ТекОтбор.Значение      = ТекущиеДанные;
	ТекОтбор.Использование =  Истина;
	
	ОтчетОстатки.УниверсальныйОтчет.ДатаКон = ТекущаяДата();
	ОтчетОстатки.СформироватьОтчет(ФормаОтчета.ЭлементыФормы.ПолеТабличногоДокументаРезультат);
	
КонецПроцедуры
Показать
4. starjevschik 20.08.17 11:00 Сейчас в теме
(1) опять 25
отбор по номенклатуре, а передаем наименование. Или мы что-то не так делаем, или нам удалось назвать наименованием ссылку на номенклатуру, в именах переменных мы запутались из-за этого и не можем решить "элементарную задачу" (с).
Никогда, друзья, НИКОГДА не называйте ссылки наименованиями. Никогда. Имя переменной должно однозначно говорить о ее содержании.
И никогда не называйте элементарными задачи, которые вы не можете решить. Это очень сильно роняет вашу ценность в глазах окружающих. Элементарные задачи любой дурак может решить. Кроме того, это мешает вам подойти к задаче всерьез, открыть отладчик, изучить свой код, переименовать правильно переменные, найти ошибку и разобраться самостоятельно. Т.к. что там копаться-то, задача ведь "элементарная".
5. user812298 20.08.17 13:36 Сейчас в теме
Татьяна Федорова и Д. Р. (starjevschik)
Спасибо что пояснили!
Д. Р. (starjevschik) - по поводу "элементарных вещей". Подразумевалось элементарные вещи для профессионалов, коим я не отношусь. Потому мое падение в глазах окружающих вполне приемлемо. Но замечание важное, спасибо!
Еще вопрос из этой темы, не получается выставить дополнительные поля: "Документ движения (регистратор)", "Период".
ВедомостьТоваровНаСкладах.УниверсальныйОтчет.РасширеннаяНастройка = Истина;
ВедомостьТоваровНаСкладах.УниверсальныйОтчет.ДобавитьДополнительноеПоле("Документ движения (регистратор)");

После формирования отчета в настройках, галка "Расширенная настройка" не установлена. После её установки во вкладе "Дополнительные поля" нет "Документ движения (регистратор)".
6. YNik 20.08.17 15:56 Сейчас в теме
(5), надо добавлять имя доп.поля, а не его представление, и вместо
РасширеннаяНастройка попробуйте мРасширеннаяНастройка:
ВедомостьТоваровНаСкладах.УниверсальныйОтчет.мРасширеннаяНастройка = Истина;
ВедомостьТоваровНаСкладах.УниверсальныйОтчет.ДобавитьДополнительноеПоле("Регистратор");
7. Obertone 74 12.05.22 08:38 Сейчас в теме
Была похожая задача. Там, правда, задача была вывести команду открытия стандартного отчёта в документ, чтобы при его открытии подтягивался из реквизита документа параметр отчёта. Для этого во внешнюю обработку позаимствовал из отчёта все его макеты, реквизиты и форму. А далее определил внешнюю обработку в модуле объекта как печатную форму с вызовом клиентского метода. Там передавал в отчёт параметр из реквизита документа и открывал форму со стандартным заполнением параметра отчёта.
Оставьте свое сообщение

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