Значение не является значением объектного типа (Метаданные)

1. Svet_Serg 29.04.19 13:17 Сейчас в теме
1С:Предприятие 8.3 (8.3.13.1690)
Документооборот 8 КОРП, редакция 2.1 (2.1.12.2)
--
Если создавать процесс и прикреплять к нему файл, то у исполнителя задачи появляется ошибка:
{ОбщийМодуль.ОбщегоНазначения.Модуль(86)}: Значение не является значением объектного типа (Метаданные)
	Запрос.Текст =

Если прикреплять предмет - всё норм.

Код функции в общем модуле такой:

// Возвращает структуру, содержащую значения реквизитов прочитанные из информационной базы
// по ссылке на объект.
// 
//  Если доступа к одному из реквизитов нет, возникнет исключение прав доступа.
//  Если необходимо зачитать реквизит независимо от прав текущего пользователя,
//  то следует использовать предварительный переход в привилегированный режим.
// 
// Функция не предназначена для получения значений реквизитов пустых ссылок.
//
// Параметры:
//  Ссылка    - ЛюбаяСсылка - объект, значения реквизитов которого необходимо получить.
//
//  Реквизиты - Строка - имена реквизитов, перечисленные через запятую, в формате
//              требований к свойствам структуры.
//              Например, "Код, Наименование, Родитель".
//            - Структура, ФиксированнаяСтруктура - в качестве ключа передается
//              псевдоним поля для возвращаемой структуры с результатом, а в качестве
//              значения (опционально) фактическое имя поля в таблице.
//              Если значение не определено, то имя поля берется из ключа.
//            - Массив, ФиксированныйМассив - имена реквизитов в формате требований
//              к свойствам структуры.
//
// Возвращаемое значение:
//  Структура - содержит имена (ключи) и значения затребованных реквизитов.
//              Если строка затребованных реквизитов пуста, то возвращается пустая структура.
//              Если в качестве объекта передана пустая ссылка, то все реквизиты вернутся со значением Неопределено.
//
Функция ЗначенияРеквизитовОбъекта(Ссылка, Знач Реквизиты) Экспорт
	
	Если ТипЗнч(Реквизиты) = Тип("Строка") Тогда
		Если ПустаяСтрока(Реквизиты) Тогда
			Возврат Новый Структура;
		КонецЕсли;
		Реквизиты = СтрРазделить(Реквизиты, ",", Ложь);
	КонецЕсли;
	
	СтруктураРеквизитов = Новый Структура;
	Если ТипЗнч(Реквизиты) = Тип("Структура") Или ТипЗнч(Реквизиты) = Тип("ФиксированнаяСтруктура") Тогда
		СтруктураРеквизитов = Реквизиты;
	ИначеЕсли ТипЗнч(Реквизиты) = Тип("Массив") Или ТипЗнч(Реквизиты) = Тип("ФиксированныйМассив") Тогда
		Для Каждого Реквизит Из Реквизиты Цикл
			СтруктураРеквизитов.Вставить(СтрЗаменить(Реквизит, ".", ""), Реквизит);
		КонецЦикла;
	Иначе
		ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Неверный тип второго параметра Реквизиты: %1'"), Строка(ТипЗнч(Реквизиты)));
	КонецЕсли;
	
	ТекстПолей = "";
	Для Каждого КлючИЗначение Из СтруктураРеквизитов Цикл
		ИмяПоля   = ?(ЗначениеЗаполнено(КлючИЗначение.Значение),
		              СокрЛП(КлючИЗначение.Значение),
		              СокрЛП(КлючИЗначение.Ключ));
		
		Псевдоним = СокрЛП(КлючИЗначение.Ключ);
		
		ТекстПолей  = ТекстПолей + ?(ПустаяСтрока(ТекстПолей), "", ",") + "
		|	" + ИмяПоля + " КАК " + Псевдоним;
	КонецЦикла;
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("Ссылка", Ссылка);
	Запрос.Текст = //86 строка
	"ВЫБРАТЬ
	|" + ТекстПолей + "
	|ИЗ
	|	" + Ссылка.Метаданные().ПолноеИмя() + " КАК ПсевдонимЗаданнойТаблицы
	|ГДЕ
	|	ПсевдонимЗаданнойТаблицы.Ссылка = &Ссылка
	|";
	Выборка = Запрос.Выполнить().Выбрать();
	Выборка.Следующий();
	
	Результат = Новый Структура;
	Для Каждого КлючИЗначение Из СтруктураРеквизитов Цикл
		Результат.Вставить(КлючИЗначение.Ключ);
	КонецЦикла;
	ЗаполнитьЗначенияСвойств(Результат, Выборка);
	
	Возврат Результат;
	
КонецФункции
Показать
По теме из базы знаний
Найденные решения
4. melenaspb 208 29.04.19 17:13 Сейчас в теме
(3)Перед строкой
ВидДокумента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Документ , "ВидДокумента");

попробуйте добавить проверку

ПредметыВыборка = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Ссылка, "Предметы"); 
Предметы = ПредметыВыборка.Выгрузить(); 

Документ = ОбзорЗадачВызовСервера.ПолучитьОсновнойПредметДокумент(Предметы); 
Если ЗначениеЗаполнено(Документ ) и ТипЗнч(Документ) = Тип("СправочникСсылка.ВнутренниеДокументы") тогда 
ВидМойДокумент = Справочники.ВидыВнутреннихДокументов.НайтиПонаименованию("Мой Документ"); 
ВидДокумента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Документ , "ВидДокумента"); 
...........
КонецЕсли;
Показать
Svet_Serg; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user623969_dusa 29.04.19 13:26 Сейчас в теме
а вы попробуйте не прикреплять файл к незаписанному процессу
3. Svet_Serg 29.04.19 14:06 Сейчас в теме
(2) а как без файла-то? Нужен)

Нашлась причина ошибки.

Есть самописный код на форме бизнес-процессов (код подсказали здесь на форуме) - в зависимости от типа документа нужно было прятать некоторые элементы.

ПредметыВыборка = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Ссылка, "Предметы"); 
Предметы = ПредметыВыборка.Выгрузить(); 

Документ = ОбзорЗадачВызовСервера.ПолучитьОсновнойПредметДокумент(Предметы); 
ВидМойДокумент = Справочники.ВидыВнутреннихДокументов.НайтиПонаименованию("Мой Документ");
ВидДокумента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Документ, "ВидДокумента");


Теперь без него, как без рук(((
4. melenaspb 208 29.04.19 17:13 Сейчас в теме
(3)Перед строкой
ВидДокумента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Документ , "ВидДокумента");

попробуйте добавить проверку

ПредметыВыборка = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Ссылка, "Предметы"); 
Предметы = ПредметыВыборка.Выгрузить(); 

Документ = ОбзорЗадачВызовСервера.ПолучитьОсновнойПредметДокумент(Предметы); 
Если ЗначениеЗаполнено(Документ ) и ТипЗнч(Документ) = Тип("СправочникСсылка.ВнутренниеДокументы") тогда 
ВидМойДокумент = Справочники.ВидыВнутреннихДокументов.НайтиПонаименованию("Мой Документ"); 
ВидДокумента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Документ , "ВидДокумента"); 
...........
КонецЕсли;
Показать
Svet_Serg; +1 Ответить
5. Svet_Serg 30.04.19 09:05 Сейчас в теме
(4) Спасибо! Ошибка ушла!
Оставьте свое сообщение

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