Программно создаю характеристику. Не заполняются значения свойства.
Всем добра.
УПП 1.3.162.2
Стоит задача загрузить из файла 1. Номенклатуру 2. Характеристики номенклатуры.
Свойства для характеристик заданы в базе заранее. Значений этих свойств может не быть.
Код следующий:
Что получаю на выходе:
Отрабатывает вот этот кусок кода
Т.е. характеристика создается.
Дальше Должен найти значение свойства "Класс безопасности". Значение, на котором тестирую - "Класс безопасности 4" . Оно в базе существует. Но не подставляется в характеристику.
Значение свойства "Код ККС" в базе отсутствует. Предполагаю, что мой код должен его создать, но не создает.
В чем моя ошибка, подскажите, люди добрые.
УПП 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" . Оно в базе существует. Но не подставляется в характеристику.
Значение свойства "Код ККС" в базе отсутствует. Предполагаю, что мой код должен его создать, но не создает.
В чем моя ошибка, подскажите, люди добрые.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) потом убедиться, что владелец существующего - тот же
короче, найти по наименованию - наше все :))
(я бы сделал эти элементами предопределенными, чтобы по коду не искать
а таблицу запихонил бы в запрос, нашел что надо, потом результат запроса уже обработал)
короче, найти по наименованию - наше все :))
(я бы сделал эти элементами предопределенными, чтобы по коду не искать
а таблицу запихонил бы в запрос, нашел что надо, потом результат запроса уже обработал)
(4)
Каждый раз могут быть разными, обработка при каждой загрузке будет подпиливаться, поэтому нет смысла делать предопределенные
Возьму на заметку этот инструмент, спасибо
я бы сделал эти элементами предопределенными, чтобы по коду не искать
Каждый раз могут быть разными, обработка при каждой загрузке будет подпиливаться, поэтому нет смысла делать предопределенные
Для начала обрамите процедуры записи в базу конструкцией Попытка / Исключение. Это позволит увидеть ошибки, возникающие при невозможности записи по каким-либо причинам.
Возьму на заметку этот инструмент, спасибо
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот