Изменил представление номенклатуры - отказал отчет

1. serg138 22.02.17 14:35 Сейчас в теме
Добрый день. УНФ 1.5. Платформа (8.3.9.1850.

Изменил представление справочника Номенклатуры с краткого наименование на полное.Вот так.
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
		СтандартнаяОбработка = Ложь;
		Поля.Добавить("НаименованиеПолное");
		Поля.Добавить("Наименование");
	КонецПроцедуры

	Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
		СтандартнаяОбработка = Ложь;
		
		Если  Данные.НаименованиеПолное = Null или Данные.НаименованиеПолное = "" Тогда
			
			Представление = Данные.Наименование;
		Иначе
			Представление = Данные.НаименованиеПолное;
			КонецЕсли;
			
	КонецПроцедуры

Показать


И вроде все нормально, но с отчетом Сдельные Наряды проблема.При попытке формирования выходит ошибка:
Ошибка исполнения отчета
по причине:
Ошибка при выполнении обработчика - 'ПриКомпоновкеРезультата'
по причине:
{Отчет.СдельныеНарядыВРубляхНовый.МодульОбъекта(18)}: Ошибка при вызове метода контекста (Инициализировать)
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
по причине:
Ошибка компоновки данных
по причине:
Ошибка инициализации
по причине:
Ошибка создания набора данных "НаборДанных1"
по причине:
Ошибка при исполнении запроса набора данных
по причине:
{(14, 2)}: В запросе, содержащем предложение СГРУППИРОВАТЬ ПО, в списке выборки не могут участвовать поля неограниченной длины "ОперацияПредставление"
<<?>>ПРЕДСТАВЛЕНИЕССЫЛКИ(СдельныеНарядыВРубляхОбороты.Операция) КАК ОперацияПредставление,
Показать


Операция это номенклатура.То есть ошибка при попытке получить представление номенклатуры.Если отключить поле ОПЕРАЦИЯ в отчете, то он работает, но соответственно нет номенклатуры. Если вернуть представление справочника по умолчанию, то также все работает.
Вот запрос , который описан в основной схеме:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ВЫБОР
		КОГДА СдельныеНарядыВРубляхОбороты.Регистратор = НЕОПРЕДЕЛЕНО
			ТОГДА NULL
		ИНАЧЕ СдельныеНарядыВРубляхОбороты.Регистратор
	КОНЕЦ КАК Регистратор,
	СдельныеНарядыВРубляхОбороты.ПериодСекунда,
	СдельныеНарядыВРубляхОбороты.ПериодМинута,
	СдельныеНарядыВРубляхОбороты.ПериодЧас,
	СдельныеНарядыВРубляхОбороты.ПериодДень,
	СдельныеНарядыВРубляхОбороты.ПериодНеделя,
	СдельныеНарядыВРубляхОбороты.ПериодДекада,
	СдельныеНарядыВРубляхОбороты.ПериодМесяц,
	СдельныеНарядыВРубляхОбороты.ПериодКвартал,
	СдельныеНарядыВРубляхОбороты.ПериодПолугодие,
	СдельныеНарядыВРубляхОбороты.ПериодГод,
	СдельныеНарядыВРубляхОбороты.Исполнитель,
	СдельныеНарядыВРубляхОбороты.Операция,
	СдельныеНарядыВРубляхОбороты.Номенклатура,
	СдельныеНарядыВРубляхОбороты.Характеристика,
	СдельныеНарядыВРубляхОбороты.ЗаказПокупателя,
	СУММА(0) КАК Отклонение,
	СУММА(0) КАК ПроцентВыполненияПлана,
	СУММА(СдельныеНарядыВРубляхОбороты.НормоЧасыОборот) КАК НормоЧасы,
	СУММА(СдельныеНарядыВРубляхОбороты.КоличествоПланОборот) КАК КоличествоПлан,
	СУММА(СдельныеНарядыВРубляхОбороты.КоличествоФактОборот) КАК КоличествоФакт,
	СдельныеНарядыВРубляхОбороты.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	СдельныеНарядыВРубляхОбороты.СтоимостьФактОборот КАК СтоимостьФакт,
	СдельныеНарядыВРубляхОбороты.Расценка,
	СдельныеНарядыВРубляхОбороты.Регистратор.Ссылка
ИЗ
	РегистрНакопления.СдельныеНарядыВРублях.Обороты(, , Авто, ) КАК СдельныеНарядыВРубляхОбороты

СГРУППИРОВАТЬ ПО
	СдельныеНарядыВРубляхОбороты.Регистратор,
	СдельныеНарядыВРубляхОбороты.ПериодСекунда,
	СдельныеНарядыВРубляхОбороты.ПериодМинута,
	СдельныеНарядыВРубляхОбороты.ПериодЧас,
	СдельныеНарядыВРубляхОбороты.ПериодДень,
	СдельныеНарядыВРубляхОбороты.ПериодНеделя,
	СдельныеНарядыВРубляхОбороты.ПериодДекада,
	СдельныеНарядыВРубляхОбороты.ПериодМесяц,
	СдельныеНарядыВРубляхОбороты.ПериодКвартал,
	СдельныеНарядыВРубляхОбороты.ПериодПолугодие,
	СдельныеНарядыВРубляхОбороты.ПериодГод,
	СдельныеНарядыВРубляхОбороты.Исполнитель,
	СдельныеНарядыВРубляхОбороты.Характеристика,
	СдельныеНарядыВРубляхОбороты.ЗаказПокупателя,
	СдельныеНарядыВРубляхОбороты.СтоимостьФактОборот,
	СдельныеНарядыВРубляхОбороты.Расценка,
	СдельныеНарядыВРубляхОбороты.Регистратор.Ссылка,
	СдельныеНарядыВРубляхОбороты.Операция,
	СдельныеНарядыВРубляхОбороты.Номенклатура,
	СдельныеНарядыВРубляхОбороты.Номенклатура.ЕдиницаИзмерения
Показать


А вот запрос , который формирует СКД:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	СдельныеНарядыВРубляхОбороты.Исполнитель КАК Исполнитель,
	СдельныеНарядыВРубляхОбороты.Операция КАК Операция,
	СУММА(СдельныеНарядыВРубляхОбороты.НормоЧасыОборот) КАК НормоЧасы,
	СУММА(СдельныеНарядыВРубляхОбороты.КоличествоПланОборот) КАК КоличествоПлан,
	СУММА(СдельныеНарядыВРубляхОбороты.КоличествоФактОборот) КАК КоличествоФакт,
	СдельныеНарядыВРубляхОбороты.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	СдельныеНарядыВРубляхОбороты.СтоимостьФактОборот КАК СтоимостьФакт,
	СдельныеНарядыВРубляхОбороты.Расценка КАК Расценка,
	СдельныеНарядыВРубляхОбороты.Регистратор.Ссылка КАК РегистраторСсылка,
	ПРЕДСТАВЛЕНИЕССЫЛКИ(СдельныеНарядыВРубляхОбороты.Номенклатура.ЕдиницаИзмерения) КАК ЕдиницаИзмеренияПредставление,
	СдельныеНарядыВРубляхОбороты.Номенклатура.ЕдиницаИзмерения.Наименование КАК НоменклатураЕдиницаИзмеренияНаименование,
	ПРЕДСТАВЛЕНИЕССЫЛКИ(СдельныеНарядыВРубляхОбороты.Исполнитель) КАК ИсполнительПредставление,
	ПРЕДСТАВЛЕНИЕССЫЛКИ(СдельныеНарядыВРубляхОбороты.Операция) КАК ОперацияПредставление,
	СдельныеНарядыВРубляхОбороты.Операция.Наименование КАК ОперацияНаименование,
	СдельныеНарядыВРубляхОбороты.Регистратор.Представление КАК РегистраторСсылкаПредставление,
	СдельныеНарядыВРубляхОбороты.Регистратор.Ссылка.Дата КАК РегистраторСсылкаДата
ИЗ
	РегистрНакопления.СдельныеНарядыВРублях.Обороты(&П, &П2, Авто, Исполнитель = &П3) КАК СдельныеНарядыВРубляхОбороты

СГРУППИРОВАТЬ ПО
	СдельныеНарядыВРубляхОбороты.Регистратор,
	СдельныеНарядыВРубляхОбороты.Исполнитель,
	СдельныеНарядыВРубляхОбороты.СтоимостьФактОборот,
	СдельныеНарядыВРубляхОбороты.Расценка,
	СдельныеНарядыВРубляхОбороты.Регистратор.Ссылка,
	СдельныеНарядыВРубляхОбороты.Операция,
	СдельныеНарядыВРубляхОбороты.Номенклатура.ЕдиницаИзмерения,
	ПРЕДСТАВЛЕНИЕССЫЛКИ(СдельныеНарядыВРубляхОбороты.Номенклатура.ЕдиницаИзмерения),
	СдельныеНарядыВРубляхОбороты.Номенклатура.ЕдиницаИзмерения.Наименование
Показать


Причем запрос самой СКД точно такой же как и с отключенным представлением номенклатуры. Но тем не менее - не работает.
В чем может быть дело? Отладиком попадаю в модуль менеджера Номенклатуры, но только в процедуру ОбработкаПолученияПолейПредставленияОбработкаПолученияПолейП­редставления.

Спасибо.
По теме из базы знаний
Найденные решения
7. Fragster 1139 22.02.17 15:58 Сейчас в теме
Убрать запрос с группировкой в первый запрос пакета, вторым запросом сделать Выбрать * из ВремТаблПервогоЗапроса, либо не пользоваться группировкой запроса, а пользоваться группировкой настройками СКД. Видно же, что ругается на единицу, а не на операцию
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. serg138 22.02.17 14:55 Сейчас в теме
Если в модуле отчета написать код ниже, то все работает.
МакетКомпоновки.НаборыДанных.НаборДанных1.Запрос = СтрЗаменить(МакетКомпоновки.НаборыДанных.НаборДанных1.Запрос,"ПРЕДСТАВЛЕНИЕССЫЛКИ(СдельныеНарядыВРубляхОбороты.Операция) КАК ОперацияПредставление,","СдельныеНарядыВРубляхОбороты.Операция КАК ОперацияПредставление,");


Но оно и понятно мы отключили представление ссылки. Причем эту выборку формирует сама СКД в целях оптимизации. Хотелось бы конечно понять почему выражение ПРЕДСТАВЛЕНИЕССЫЛКИ не может получить измененное представление справочника Номенклатура.
3. ditp 91 22.02.17 14:59 Сейчас в теме
ПРЕДСТАВЛЕНИЕССЫЛКИ(СдельныеНарядыВРубляхОбороты.Операция) КАК ОперацияПредставление возвращает строку неограниченной длины, по таким строкам группировать нельзя.

Попробуйте в получении представления обрезать полное наименование:
Если Данные.НаименованиеПолное = Null или Данные.НаименованиеПолное = "" Тогда
Представление = Данные.Наименование;
Иначе
Представление = Лев(Данные.НаименованиеПолное, 1000);
КонецЕсли;
4. serg138 22.02.17 15:31 Сейчас в теме
(3) "Лев" ничем не помог. В секции группировки нет поля представление номенклатуры.
5. antz 22.02.17 15:41 Сейчас в теме
ВЫРАЗИТЬ(ПРЕДСТАВЛЕНИЕССЫЛКИ(СдельныеНарядыВРубляхОбороты.Операция) КАК СТРОКА(1000)) КАК ОперацияПредставление,
6. serg138 22.02.17 15:47 Сейчас в теме
(5) Уже пробовал так и просто ПРЕДСТАВЛЕНИЕ подставлял, а также пытался извлечь ПОДСТРОКА из представления, но конструктору запроса не нравятся такие выражения - ошибки.
7. Fragster 1139 22.02.17 15:58 Сейчас в теме
Убрать запрос с группировкой в первый запрос пакета, вторым запросом сделать Выбрать * из ВремТаблПервогоЗапроса, либо не пользоваться группировкой запроса, а пользоваться группировкой настройками СКД. Видно же, что ругается на единицу, а не на операцию
8. serg138 22.02.17 16:21 Сейчас в теме
(7) С временной таблицей пробовал -все тоже самое. Убирал из группировки единицу, но всеравно были ошибки.
А вот решение убрать из запроса секцию СГРУППИРОВАТЬ помогло. Отчет всеравно с группировками. Так что это вполне сойдет на решение.
9. Fragster 1139 22.02.17 17:32 Сейчас в теме
(8) еще можно у поля единицы в выражении представления напрямую написать Единица.Наименование
Оставьте свое сообщение

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