Программно создаю характеристику. Не заполняются значения свойства.

1. SheremetevaValentina 17.08.21 10:15 Сейчас в теме
Всем добра.

УПП 1.3.162.2

Стоит задача загрузить из файла 1. Номенклатуру 2. Характеристики номенклатуры.
Свойства для характеристик заданы в базе заранее. Значений этих свойств может не быть.
Код следующий:
	Таблица.Колонки.Добавить("ХарактеристикаСсылка", Новый ОписаниеТипов("Справочникссылка.ХарактеристикиНоменклатуры"), "ХарактеристикаНоменклатуры");
	ПланВидовХарактеристикКлассБезопасности =  ПланыВидовХарактеристик.СвойстваОбъектов.НайтипоКоду("00000000284");
	ПланВидовХарактеристикКодККС =  ПланыВидовХарактеристик.СвойстваОбъектов.НайтипоКоду("00000000378");
	Для Каждого Стр из Таблица Цикл
		//Стр[1] Код ККС
		//Стр[3] Класс безопасности
		//Стр[4] Номенклатура-владелец
		//Стр[5] Наименование характеристики, в т.ч. для поиска
		ХарактеристикаНоменклатуры = Справочники.ХарактеристикиНоменклатуры.НайтиПоНаименованию(Стр[5],,,Стр[4]);
		Если ХарактеристикаНоменклатуры = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка() Тогда
			//Создать новую характеристику
			ХарактеристикаНоменклатуры = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент();
			ХарактеристикаНоменклатуры.Владелец = Стр[4];
			ХарактеристикаНоменклатуры.Наименование = Стр[5];
			ХарактеристикаНоменклатуры.Записать();
			
 			КлассБезопасности = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Класс безопасности " + Стр[3],,,ПланВидовХарактеристикКлассБезопасности);
			Если КлассБезопасности = Справочники.ЗначенияСвойствОбъектов.ПустаяСсылка() Тогда
				КлассБезопасности = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
				КлассБезопасности.Наименование = "Класс безопасности " + Стр[3];
				КлассБезопасности.Владелец = ПланВидовХарактеристикКлассБезопасности;
				КлассБезопасности.Записать();
			КонецЕсли;	
    		КодККС = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Код KKS " + Стр[1],,,ПланВидовХарактеристикКодККС);	
			Если КодККС = Справочники.ЗначенияСвойствОбъектов.ПустаяСсылка() Тогда
				КодККС = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
				КодККС.Наименование = "Код KKS " + Стр[1];
				КодККС.Владелец = ПланВидовХарактеристикКодККС;
				КодККС.Записать();
			КонецЕсли;	
			
		    Запись = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
		    //КодККС
		    Запись.Объект = ХарактеристикаНоменклатуры.Ссылка;
		    Запись.Свойство = ПланВидовХарактеристикКодККС;
		    Запись.Значение = КодККС;
		    Запись.Записать();
		    
		   //КлассБезопасности
		 
		    ЗаписьКласс = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
		    ЗаписьКласс.Объект = ХарактеристикаНоменклатуры.Ссылка;
		    ЗаписьКласс.Свойство = ПланВидовХарактеристикКлассБезопасности;
		    ЗаписьКласс.Значение = КлассБезопасности;
		    ЗаписьКласс.Записать();
			
			//СвойстваХарактеристики = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
			//СвойстваХарактеристики.Отбор.Объект.Значение = ХарактеристикаНоменклатуры.Ссылка;
			//СвойстваХарактеристики.Отбор.Объект.Использование = Истина;
			//ХарактеристикаНоменклатуры.СформироватьНаименование(СвойстваХарактеристики.Выгрузить());
			//ХарактеристикаНоменклатуры.Записать();
			//
			//
		КонецЕсли;	
		Стр.ХарактеристикаСсылка = ХарактеристикаНоменклатуры;
	КонецЦикла;
	ЭлементыФормы.Таблица.СоздатьКолонки();
Показать


Что получаю на выходе:
Отрабатывает вот этот кусок кода

Если ХарактеристикаНоменклатуры = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка() Тогда
			//Создать новую характеристику
			ХарактеристикаНоменклатуры = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент();
			ХарактеристикаНоменклатуры.Владелец = Стр[4];
			ХарактеристикаНоменклатуры.Наименование = Стр[5];
			ХарактеристикаНоменклатуры.Записать();
			


Т.е. характеристика создается.

Дальше Должен найти значение свойства "Класс безопасности". Значение, на котором тестирую - "Класс безопасности 4" . Оно в базе существует. Но не подставляется в характеристику.
Значение свойства "Код ККС" в базе отсутствует. Предполагаю, что мой код должен его создать, но не создает.
В чем моя ошибка, подскажите, люди добрые.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user925427 126 17.08.21 12:38 Сейчас в теме
Для начала обрамите процедуры записи в базу конструкцией Попытка / Исключение. Это позволит увидеть ошибки, возникающие при невозможности записи по каким-либо причинам.
3. user1461477 17.08.21 12:41 Сейчас в теме
"Класс безопасности " + Стр[3]
сравнить с наименованием существующего
4. user1461477 17.08.21 12:44 Сейчас в теме
(3) потом убедиться, что владелец существующего - тот же
короче, найти по наименованию - наше все :))

(я бы сделал эти элементами предопределенными, чтобы по коду не искать

а таблицу запихонил бы в запрос, нашел что надо, потом результат запроса уже обработал)
6. SheremetevaValentina 18.08.21 14:51 Сейчас в теме
(4)
я бы сделал эти элементами предопределенными, чтобы по коду не искать

Каждый раз могут быть разными, обработка при каждой загрузке будет подпиливаться, поэтому нет смысла делать предопределенные
Для начала обрамите процедуры записи в базу конструкцией Попытка / Исключение. Это позволит увидеть ошибки, возникающие при невозможности записи по каким-либо причинам.

Возьму на заметку этот инструмент, спасибо
5. user1461477 17.08.21 12:49 Сейчас в теме
Справочники.ЗначенияСвойствОбъектов
и
РегистрыСведений.ЗначенияСвойствОбъектов

точно так в вашей конфе?
Оставьте свое сообщение

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