Часто в процессе написания обработок обмена данными между разнородными системами, для анализа дополнительных реквизитов и свойств объектов в процессе выполнения множества операций обработки данных желательно наличие сервисных функций по чтению (установке) Категорий и Свойств. Для подобных нужд встроил в конфигурацию собственный модуль с подобными Функциями.
Функции работы с категориями работают на типовых УТ (вероятно, должны работать в УПП и др.).
Мои Функции работы со свойствами рассчитаны на модифицированный механизм Свойств и нет смысла выкладывать. В Свойства добавлены новые виды Объектов (в частности ДоговорыКонтрагентов) и новые виды Значений (Сертификаты, ДоговорыКонтрагента и др.). Переделывать под Типовую или делать полностью Универсальной пока руки не дошли...
P.S. В коде использована глобальная функция, присутствующая не во всех конфигурациях "ЗначениеНеЗаполнено(Значение)", соответственно её надо будет воссоздать или заменить на аналог в тексте.
По просьбам публики... сам текст Функций
Для справки во вложении Функции работы со Свойствами (Свойства в моей УТ расширены, добавлены носители свойств и виды значений)
//НВЮ/ Получает заказанную Категорю Объекта
//
// Параметры
// Эл – СправочникСсылка/ДокументСсылка – для получения Категории
// НаименованиеСвойства – Строка_50 – Наименование получаемой Категории
// Предопределённый или ссылка Спр.Категории
// Возвращаемое значение:
// Значение заказанной Категории (Булево или Неопределено-если ошибка)
//
Функция ПолучитьКатегориюОбъекта(Эл, НаименованиеКатегории) Экспорт
Если Эл = Неопределено Тогда// Объект не указан
Возврат Неопределено;
ИначеЕсли ЗначениеНеЗаполнено(Эл) Тогда // Объект не указан
Возврат Неопределено;
КонецЕсли;
Если ТипЗнч(НаименованиеКатегории) = Тип("СправочникСсылка.КатегорииОбъектов") Тогда
ТребСвойство = НаименованиеКатегории;
Иначе
ТребСвойство = Справочники.КатегорииОбъектов.НайтиПоНаименованию(НаименованиеКатегории);
ЕслиНе ЗначениеЗаполнено(ТребСвойство) Тогда
Возврат Неопределено;
КонецЕсли;
КонецЕсли;
КатОбъ=РегистрыСведений.КатегорииОбъектов.СоздатьНаборЗаписей();
КатОбъ.Отбор.Объект.Значение=Эл;
КатОбъ.Отбор.Объект.Использование = Истина;
КатОбъ.Отбор.Категория.Значение=ТребСвойство;
КатОбъ.Отбор.Категория.Использование = Истина;
КатОбъ.Прочитать();
Возврат КатОбъ.Количество()=1; // Истина=Категория имелось, Ложь=Категории нет
КонецФункции// ПолучитьКатегориюОбъекта()
//НВЮ/ Устанавливает Категорию Номенклатуры/Контрагента/Документа
//
// Параметры
// НазвКат – – Наименование устанавливаемой Категории
// Предопределенная или Ссылка Спр.Категории
// ТекЗнКат – – Значение устанавливаемой Категории
// Эл – – Носитель Категории
// или – Носитель Категории
//
Процедура УстановитьКатегориюОбъекта(НазвКат, ТекЗнКат=Истина, Эл) Экспорт
Если ТипЗнч(НазвКат) = Тип("СправочникСсылка.КатегорииОбъектов") Тогда
ТекСвойство = НазвКат;
Иначе
ТекСвойство = Справочники.КатегорииОбъектов.НайтиПоНаименованию(НазвКат);
ЕслиНе ЗначениеЗаполнено(ТекСвойство) Тогда
Возврат;
КонецЕсли;
КонецЕсли;
КатОбъ=РегистрыСведений.КатегорииОбъектов.СоздатьНаборЗаписей();
КатОбъ.Отбор.Объект.Значение=Эл.Ссылка;
КатОбъ.Отбор.Объект.Использование = Истина;
КатОбъ.Отбор.Категория.Значение=ТекСвойство;
КатОбъ.Отбор.Категория.Использование = Истина;
КатОбъ.Прочитать();
ЗнСвва=Неопределено;
Если КатОбъ.Количество()>0 И Не ТекЗнКат Тогда// Категория Установлена, надо удалить
КатОбъ.Очистить();
КатОбъ.Записать();
ИначеЕсли КатОбъ.Количество()=0 И ТекЗнКат Тогда // Категория отсутствует, надо создать
НовЗапись=КатОбъ.Добавить();
НовЗапись.Объект=Эл.Ссылка;
НовЗапись.Категория=ТекСвойство;
КатОбъ.Записать();
Иначе// Категория актуальна
//Ничего не меняем
КонецЕсли;
КонецПроцедуры// Установка Категории
// 14.10.2015/ Функции Чтения и Установки Свойств переписаны и оптимизированы на случай произвольного расширения допустимых типов Свойств и их Значений. Для функции "УстановитьСвойствоОбъекта()" допавлена Опция "АвтоСоздание"... Тестировалась и отлаживалась в основном на УТ_10.3, но механизм свойств однотипен практически во всех конфигурациях 1С8 - следовательно применим к большинству конфигураций.