Имя: Пароль:
1C
 
Доп. реквизит принудительно изменить тип
0 Олдж
 
02.09.25
21:39
Конфигурация УНФ, типовая. Справочник "Характеристики номенклатуры", создали и завели некую кучку доп.реквизитов для интернет-магазина на Битриксе (вес, цвет, форма, производитель и т.п.) и заполнили.

Позже выяснилось, что завели тип доп. реквизита "Строка", а для Битрикса чтобы все красиво и корректно работало нужен тип "Дополнительное значение"

Есть идея принудительно изменить тип на "Дополнительный реквизит", ну и соответственно завести доп значения из строковых и все присвоить обработкой.

Чую есть подводные камни, но пока их не вижу. Кто-нибудь так делал ?
1 Timon1405
 
02.09.25
22:00
из очевидного: в момент после обновления они будут пустые, может уехать куда-то обменом. по-хорошему, надо писать обработчик обновления, можно в расширении
https://its.1c.ru/db/v8std/content/690/hdoc
2 Asmody
 
02.09.25
22:11
(0) только ни в коем случае не делай копию! Режь по живой!
3 Олдж
 
02.09.25
22:20
(2) 🔥
4 Олдж
 
02.09.25
22:34
Итого (тренировка на кошках):

Завел доп реквизит "Проверка" с типом "Строка" и заполнил строковыми значениями.

Изменение типа реквизита со "Строки" на "Дополнительное значение", само значение не очищает и оставляет нетронутым.
При этом код:

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

отрабатывает нормально и возвращает старое строковое значение.

Далее заносим это строковое значение в дополнительное значение

ЗначениеВВидеСправочника  = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(СокрЛП(ТекущееЗначениеВВидеСтроки),Истина,,Проверка).Ссылка;
		
		
		Если ЗначениеВВидеСправочника.Пустая() Тогда 
			НовоеЗначение = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
		//	
			НовоеЗначение.Владелец     = Проверка.Ссылка;
			НовоеЗначение.Наименование = ТекущееЗначениеВвидеСтроки;
			НовоеЗначение.Записать();   
		//	
			ЗначениеВВидеСправочника = НовоеЗначение.Ссылка; 
		КонецЕсли; 


и обновляем запись этого доп. значение у характеристики. Вроде всё. Запросил копию базы. Запущу обработку, отпишусь о результате