Добрый день!
Элементарная задача, УТ10.3, пользователь хочет из справочника номенклатуры по кнопке открывался отчет "ВедомостьТоварыНаСкладах" открыть отчет с параметрами этой номенклатуры и дополнительными полями: "Документ движения (регистратор)", "Период".
Добавил кнопку на панель, код:
До этого все идет, встает на первой строке отсюда:
Крашится с ошибкой:
Да я понимаю, что не верный тип значения, но не понимаю как конкретно нужно оформить. Заранее спасибо за помощь.
Элементарная задача, УТ10.3, пользователь хочет из справочника номенклатуры по кнопке открывался отчет "ВедомостьТоварыНаСкладах" открыть отчет с параметрами этой номенклатуры и дополнительными полями: "Документ движения (регистратор)", "Период".
Добавил кнопку на панель, код:
Процедура ОТЧЕТНажатие(Элемент)
ТекущаяСтрока = ЭлементыФормы.НаименованиеПолное.Значение;
ВедомостьТоваровНаСкладах = Отчеты.ВедомостьТоварыНаСкладах.Создать();
ВедомостьТоваровНаСкладах.УстановитьНачальныеНастройки();
ВедомостьТоваровНаСкладах.УниверсальныйОтчет.ПостроительОтчета.ИзмеренияСтроки.Очистить();
ВедомостьТоваровНаСкладах.УниверсальныйОтчет.ПостроительОтчета.ИзмеренияКолонки.Очистить();
ВедомостьТоваровНаСкладах.УниверсальныйОтчет.ПостроительОтчета.ВыбранныеПоля.Очистить();
ВедомостьТоваровНаСкладах.УниверсальныйОтчет.ПостроительОтчета.Порядок.Очистить();
ВедомостьТоваровНаСкладах.УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Номенклатура");
//номенклатура
ЭлементОтбора = ВедомостьТоваровНаСкладах.УниверсальныйОтчет.ПостроительОтчета.Отбор["Номенклатура"]; //номенклатура
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ВидСравнения = ВидСравнения.Равно;
ПоказатьДо этого все идет, встает на первой строке отсюда:
ЭлементОтбора.Значение = ЭлементыФормы.НаименованиеПолное.Значение;
ВедомостьТоваровНаСкладах.УниверсальныйОтчет.ДобавитьДополнительноеПоле("Период");
ВедомостьТоваровНаСкладах.УниверсальныйОтчет.ВыводитьДетальныеЗаписи = Истина;
ФормаОтчета = ВедомостьТоваровНаСкладах.ПолучитьФорму("Форма");
ФормаОтчета.Открыть();
ФормаОтчета.ОбновитьОтчет();
ПоказатьКрашится с ошибкой:
{Справочник.Номенклатура.Форма.ФормаЭлемента.Форма(2747)}: Ошибка при установке значения атрибута контекста (Значение)
ЭлементОтбора.Значение = ЭлементыФормы.НаименованиеПолное.Значение;
по причине:
Неверный тип значения
ЭлементОтбора.Значение = ЭлементыФормы.НаименованиеПолное.Значение;
по причине:
Неверный тип значения
Да я понимаю, что не верный тип значения, но не понимаю как конкретно нужно оформить. Заранее спасибо за помощь.
По теме из базы знаний
- Отчет по первым продажам (новые покупатели) для УТ 10.3
- Универсальный конструктор отчетов СКД (управляемые формы, тонкий клиент)
- Как программно открыть внешний отчет из "Дополнительных отчетов и обработок" и передать параметры (при помощи БСП)
- Формирование внешнего отчета в фоне
- Программное открытие отчета СКД с параметрами и отбором
Найденные решения
(1) Ниже кусок из типовой УТП, где открывается отчет с отбором по номенклатуре
Процедура ОткрытьОтчетПоТекущейНоменклатуре(НазваниеОтчета)
Если ЭлементыФормы.Список.ТекущиеДанные = Неопределено Тогда
// ничего нет
Возврат;
КонецЕсли;
// получаем форму для построения отчета по остатку товара
ТекущиеДанные = ЭлементыФормы.Список.ТекущиеДанные.Ссылка;
ОтчетОстатки = Отчеты[НазваниеОтчета].Создать();
ОтчетОстатки.УстановитьНачальныеНастройки();
ОтчетОстатки.УниверсальныйОтчет.мВосстанавливатьНастройкиПриОткрытии = Ложь;
ФормаОтчета = ОтчетОстатки.ПолучитьФорму(, ЭтаФорма, ЭтаФорма);
ФормаОтчета.Открыть();
ТекОтбор = ОтчетОстатки.УниверсальныйОтчет.ПостроительОтчета.Отбор.Номенклатура;
ТекОтбор.ВидСравнения = ?(ТекущиеДанные.ЭтоГруппа, ВидСравнения.ВИерархии, ВидСравнения.Равно);
ТекОтбор.Значение = ТекущиеДанные;
ТекОтбор.Использование = Истина;
ОтчетОстатки.УниверсальныйОтчет.ДатаКон = ТекущаяДата();
ОтчетОстатки.СформироватьОтчет(ФормаОтчета.ЭлементыФормы.ПолеТабличногоДокументаРезультат);
КонецПроцедуры
Показать
(1) опять 25
отбор по номенклатуре, а передаем наименование. Или мы что-то не так делаем, или нам удалось назвать наименованием ссылку на номенклатуру, в именах переменных мы запутались из-за этого и не можем решить "элементарную задачу" (с).
Никогда, друзья, НИКОГДА не называйте ссылки наименованиями. Никогда. Имя переменной должно однозначно говорить о ее содержании.
И никогда не называйте элементарными задачи, которые вы не можете решить. Это очень сильно роняет вашу ценность в глазах окружающих. Элементарные задачи любой дурак может решить. Кроме того, это мешает вам подойти к задаче всерьез, открыть отладчик, изучить свой код, переименовать правильно переменные, найти ошибку и разобраться самостоятельно. Т.к. что там копаться-то, задача ведь "элементарная".
отбор по номенклатуре, а передаем наименование. Или мы что-то не так делаем, или нам удалось назвать наименованием ссылку на номенклатуру, в именах переменных мы запутались из-за этого и не можем решить "элементарную задачу" (с).
Никогда, друзья, НИКОГДА не называйте ссылки наименованиями. Никогда. Имя переменной должно однозначно говорить о ее содержании.
И никогда не называйте элементарными задачи, которые вы не можете решить. Это очень сильно роняет вашу ценность в глазах окружающих. Элементарные задачи любой дурак может решить. Кроме того, это мешает вам подойти к задаче всерьез, открыть отладчик, изучить свой код, переименовать правильно переменные, найти ошибку и разобраться самостоятельно. Т.к. что там копаться-то, задача ведь "элементарная".
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Ниже кусок из типовой УТП, где открывается отчет с отбором по номенклатуре
Процедура ОткрытьОтчетПоТекущейНоменклатуре(НазваниеОтчета)
Если ЭлементыФормы.Список.ТекущиеДанные = Неопределено Тогда
// ничего нет
Возврат;
КонецЕсли;
// получаем форму для построения отчета по остатку товара
ТекущиеДанные = ЭлементыФормы.Список.ТекущиеДанные.Ссылка;
ОтчетОстатки = Отчеты[НазваниеОтчета].Создать();
ОтчетОстатки.УстановитьНачальныеНастройки();
ОтчетОстатки.УниверсальныйОтчет.мВосстанавливатьНастройкиПриОткрытии = Ложь;
ФормаОтчета = ОтчетОстатки.ПолучитьФорму(, ЭтаФорма, ЭтаФорма);
ФормаОтчета.Открыть();
ТекОтбор = ОтчетОстатки.УниверсальныйОтчет.ПостроительОтчета.Отбор.Номенклатура;
ТекОтбор.ВидСравнения = ?(ТекущиеДанные.ЭтоГруппа, ВидСравнения.ВИерархии, ВидСравнения.Равно);
ТекОтбор.Значение = ТекущиеДанные;
ТекОтбор.Использование = Истина;
ОтчетОстатки.УниверсальныйОтчет.ДатаКон = ТекущаяДата();
ОтчетОстатки.СформироватьОтчет(ФормаОтчета.ЭлементыФормы.ПолеТабличногоДокументаРезультат);
КонецПроцедуры
Показать
(1) опять 25
отбор по номенклатуре, а передаем наименование. Или мы что-то не так делаем, или нам удалось назвать наименованием ссылку на номенклатуру, в именах переменных мы запутались из-за этого и не можем решить "элементарную задачу" (с).
Никогда, друзья, НИКОГДА не называйте ссылки наименованиями. Никогда. Имя переменной должно однозначно говорить о ее содержании.
И никогда не называйте элементарными задачи, которые вы не можете решить. Это очень сильно роняет вашу ценность в глазах окружающих. Элементарные задачи любой дурак может решить. Кроме того, это мешает вам подойти к задаче всерьез, открыть отладчик, изучить свой код, переименовать правильно переменные, найти ошибку и разобраться самостоятельно. Т.к. что там копаться-то, задача ведь "элементарная".
отбор по номенклатуре, а передаем наименование. Или мы что-то не так делаем, или нам удалось назвать наименованием ссылку на номенклатуру, в именах переменных мы запутались из-за этого и не можем решить "элементарную задачу" (с).
Никогда, друзья, НИКОГДА не называйте ссылки наименованиями. Никогда. Имя переменной должно однозначно говорить о ее содержании.
И никогда не называйте элементарными задачи, которые вы не можете решить. Это очень сильно роняет вашу ценность в глазах окружающих. Элементарные задачи любой дурак может решить. Кроме того, это мешает вам подойти к задаче всерьез, открыть отладчик, изучить свой код, переименовать правильно переменные, найти ошибку и разобраться самостоятельно. Т.к. что там копаться-то, задача ведь "элементарная".
Татьяна Федорова и Д. Р. (starjevschik)
Спасибо что пояснили!
Д. Р. (starjevschik) - по поводу "элементарных вещей". Подразумевалось элементарные вещи для профессионалов, коим я не отношусь. Потому мое падение в глазах окружающих вполне приемлемо. Но замечание важное, спасибо!
Еще вопрос из этой темы, не получается выставить дополнительные поля: "Документ движения (регистратор)", "Период".
После формирования отчета в настройках, галка "Расширенная настройка" не установлена. После её установки во вкладе "Дополнительные поля" нет "Документ движения (регистратор)".
Спасибо что пояснили!
Д. Р. (starjevschik) - по поводу "элементарных вещей". Подразумевалось элементарные вещи для профессионалов, коим я не отношусь. Потому мое падение в глазах окружающих вполне приемлемо. Но замечание важное, спасибо!
Еще вопрос из этой темы, не получается выставить дополнительные поля: "Документ движения (регистратор)", "Период".
ВедомостьТоваровНаСкладах.УниверсальныйОтчет.РасширеннаяНастройка = Истина;
ВедомостьТоваровНаСкладах.УниверсальныйОтчет.ДобавитьДополнительноеПоле("Документ движения (регистратор)");
После формирования отчета в настройках, галка "Расширенная настройка" не установлена. После её установки во вкладе "Дополнительные поля" нет "Документ движения (регистратор)".
(5), надо добавлять имя доп.поля, а не его представление, и вместо
РасширеннаяНастройка попробуйте мРасширеннаяНастройка:
РасширеннаяНастройка попробуйте мРасширеннаяНастройка:
ВедомостьТоваровНаСкладах.УниверсальныйОтчет.мРасширеннаяНастройка = Истина;
ВедомостьТоваровНаСкладах.УниверсальныйОтчет.ДобавитьДополнительноеПоле("Регистратор");
Была похожая задача. Там, правда, задача была вывести команду открытия стандартного отчёта в документ, чтобы при его открытии подтягивался из реквизита документа параметр отчёта. Для этого во внешнюю обработку позаимствовал из отчёта все его макеты, реквизиты и форму. А далее определил внешнюю обработку в модуле объекта как печатную форму с вызовом клиентского метода. Там передавал в отчёт параметр из реквизита документа и открывал форму со стандартным заполнением параметра отчёта.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот