![]() |
![]() |
|
Перегрузка свойств объектов в УТ10 | ☑ | ||
---|---|---|---|---|
0
Мисти
14.01.18
✎
23:14
|
Если КорневойКаталог.Пустая() Тогда
Сообщить("Не выбран Корневой Каталог!"); Возврат; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗначенияСвойствОбъектов.Объект как Номенклатура, | ЗначенияСвойствОбъектов.Свойство, | ЗначенияСвойствОбъектов.Значение, | ЗначенияСвойствОбъектов.Свойство.НазначениеСвойства как НазначениеСвойства |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Объект В ИЕРАРХИИ(&ВыбКаталог)"; Запрос.УстановитьПараметр("ВыбКаталог",КорневойКаталог); СписокСвойств = Запрос.Выполнить().Выгрузить(); Для каждого СтрНомен из СписокСвойств Цикл УидВЭтойБазе =СтрНомен.Номенклатура.УникальныйИдентификатор(); УидВоВнешнейБазе = БазаОткрыта.newobject("УникальныйИдентификатор",Строка(УидВЭтойБазе)); //Сообщить(Строка(УидВЭтойБазе)); Справочник = БазаОткрыта.Справочники.Номенклатура; СправочникОбъект = Справочник.ПолучитьСсылку(УидВоВнешнейБазе).ПолучитьОбъект(); Если СправочникОбъект = Неопределено тогда Сообщить("Не нашли номен "+СтрНомен.Номенклатура); Продолжить; КонецЕсли; Свойство = БазаОткрыта.ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию(СокрЛП(СтрНомен.Свойство.Наименование)); Назн = БазаОткрыта.ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.НайтиПоНаименованию(СокрЛП(СтрНомен.НазначениеСвойства.Наименование)); Если Назн.Наименование = "" Тогда Сообщить("Не нашли назн. свойства "+СтрНомен.НазначениеСвойства.Наименование); Продолжить; КонецЕсли; Если Свойство.Наименование = "" Тогда СвойствоОб = БазаОткрыта.ПланыВидовХарактеристик.СвойстваОбъектов.СоздатьЭлемент(); СвойствоОб.НазначениеСвойства = Назн; СвойствоОб.Наименование = СтрНомен.Свойство.Наименование; СвойствоОб.Записать(); Свойство = СвойствоОб.Ссылка; КонецЕсли; Если ТипЗнч(СтрНомен.Значение) = Тип("Число") Тогда НовЗнач = СтрНомен.Значение; Иначе НовЗнач = БазаОткрыта.ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду(СтрНомен.Значение.Код); Если СокрЛП(НовЗнач.Код) = "" Тогда НовЗначОб = БазаОткрыта.ПланыВидовХарактеристик.СвойстваОбъектов.СоздатьЭлемент(); Иначе НовЗначОб = НовЗнач.ПолучитьОбъект(); КонецЕсли; НовЗначОб.Код = СтрНомен.Значение.Код; НовЗначОб.Наименование = СтрНомен.Значение.Наименование; НовЗначОб.НазначениеСвойства = Назн; НовЗначОб.Записать(); НовЗнач = НовЗначОб.Ссылка; КонецЕсли; МенеджерЗаписи = БазаОткрыта.РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); МенеджерЗаписи.Объект = СправочникОбъект.Ссылка; МенеджерЗаписи.Свойство = Свойство; МенеджерЗаписи.Значение = НовЗнач; МенеджерЗаписи.Записать(); Сообщить("Записано св. "+ СтрНомен.Свойство.Наименование); КонецЦикла; |
|||
1
Мисти
14.01.18
✎
23:15
|
Что у меня не так?
Перегружаются и свойства и значения - в смысле в список свойств попадает и "бумага" и "белая", при этом "белая" - не имеет типа, а "бумага" - не имеет значений! |
|||
2
Мисти
14.01.18
✎
23:19
|
НазначенияСвойствКатегорийОбъектов - ему надо как-то тип присвоить?
|
|||
3
Maniac
14.01.18
✎
23:20
|
О да ты научилась писать большие запросы!
Лайк |
|||
4
Мисти
14.01.18
✎
23:21
|
Я ваще написала отчет на скд с расшифровкой!!!
|
|||
5
Мисти
14.01.18
✎
23:36
|
Владельца забыла?
|
|||
6
Мисти
14.01.18
✎
23:42
|
И значение не того типа, а так всё отлично.
|
|||
7
Мисти
15.01.18
✎
00:17
|
Для каждого СтрНомен из СписокСвойств Цикл
УидВЭтойБазе =СтрНомен.Номенклатура.УникальныйИдентификатор(); УидВоВнешнейБазе = БазаОткрыта.newobject("УникальныйИдентификатор",Строка(УидВЭтойБазе)); //Сообщить(Строка(УидВЭтойБазе)); Справочник = БазаОткрыта.Справочники.Номенклатура; СправочникОбъект = Справочник.ПолучитьСсылку(УидВоВнешнейБазе).ПолучитьОбъект(); Если СправочникОбъект = Неопределено тогда Сообщить("Не нашли номен "+СтрНомен.Номенклатура); Продолжить; КонецЕсли; Свойство = БазаОткрыта.ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию(СокрЛП(СтрНомен.Свойство.Наименование)); Назн = БазаОткрыта.ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.НайтиПоНаименованию(СокрЛП(СтрНомен.НазначениеСвойства.Наименование)); Если Назн.Наименование = "" Тогда Сообщить("Не нашли назн. свойства "+СтрНомен.НазначениеСвойства.Наименование); Продолжить; КонецЕсли; Если Свойство.Наименование = "" Тогда СвойствоОб = БазаОткрыта.ПланыВидовХарактеристик.СвойстваОбъектов.СоздатьЭлемент(); СвойствоОб.НазначениеСвойства = Назн; СвойствоОб.Наименование = СтрНомен.Свойство.Наименование; СвойствоОб.Записать(); Свойство = СвойствоОб.Ссылка; КонецЕсли; Если ТипЗнч(СтрНомен.Значение) = Тип("Число") Тогда НовЗнач = СтрНомен.Значение; Иначе Если ТипЗнч(СтрНомен.Значение) = Тип("СправочникСсылка.ЗначенияСвойствОбъектов") Тогда Иначе Сообщить("Не тот тип "+ СтрНомен.Значение); Продолжить; КонецЕсли; Владелец = БазаОткрыта.ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду(СтрНомен.Значение.Владелец.Код); Если СокрЛП(Владелец.Код) = "" Тогда ВладелецОб = БазаОткрыта.ПланыВидовХарактеристик.СвойстваОбъектов.СоздатьЭлемент(); ВладелецОб.Код = СтрНомен.Значение.Владелец.Код; ВладелецОб.Наименование = СтрНомен.Значение.Владелец.Наименование; ВладелецОб.НазначениеСвойства = Назн; ВладелецОб.Записать(); Владелец = ВладелецОб.Ссылка; КонецЕсли; НовЗнач = БазаОткрыта.Справочники.ЗначенияСвойствОбъектов.НайтиПоКоду(СтрНомен.Значение.Код); Если СокрЛП(НовЗнач.Код) = "" Тогда НовЗначОб = БазаОткрыта.Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент(); Иначе НовЗначОб = НовЗнач.ПолучитьОбъект(); КонецЕсли; НовЗначОб.Код = СтрНомен.Значение.Код; НовЗначОб.Наименование = СтрНомен.Значение.Наименование; НовЗначОб.Владелец = Владелец; НовЗначОб.Записать(); НовЗнач = НовЗначОб.Ссылка; КонецЕсли; МенеджерЗаписи = БазаОткрыта.РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); МенеджерЗаписи.Объект = СправочникОбъект.Ссылка; МенеджерЗаписи.Свойство = Свойство; МенеджерЗаписи.Значение = НовЗнач; МенеджерЗаписи.Записать(); Сообщить("Записано св. "+ СтрНомен.Свойство.Наименование); КонецЦикла; Вот так получше, всё равно чего-то не хватает. |
|||
8
Мисти
15.01.18
✎
11:29
|
В перегруженной базе в элементе свойства объекта не стоит назначение свойства.
А я же, вроде, его записываю? Значения свойства все на месте! Причем интересно, что назначение - это не сам объект номенклатуры, а группа номенклатуры! |
|||
9
Мисти
15.01.18
✎
12:45
|
По сути, разница в том, что у меня используется свойство для всех объектов, а в исходной базе - для выбранных.
Пачиму?? И, кстати, когда я перегружала типовой обработкой, я получила такой же результат! |
|||
10
Мисти
15.01.18
✎
13:48
|
??
|
|||
11
Мисти
15.01.18
✎
15:33
|
Регистр НазначенияСвойствОбъектов надо еще заполнить!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |