Почему не удаляются из объектов каталога свойства?
Столкнулся со странным моментом и не могу понять, то ли я неправильно что-то делаю, то ли это дырка в cms... Допустим добавляю в "объект каталога" свойство какое-нибудь. Проверяем - да, оно подхватилось всеми объектами, всех категорий... но если я хочу потом оттуда же его удалить.... свойство удаляется из "объект каталога" , но в самих объектах остаётся! Что может быть не так.. ? Подумал, что кэш, но он выключен..
Так может быть. Типы в модуле Шаблоны данных могут быть вложенными, если мы добавляем атрибут в тип то этот же атрибут будет добавлен ко всем "детям", а удаление не наследуется т.е. атрибут может остаться в одном из типов. Посмотрите внимательно к какому типу относится объект и проверти атрибуты типа.
Благодарю за совет.. Может быть я запутался, но тип "объект каталога" уже не содержит поле, ведь я его удалил. Или надо пройтись по всем-всем "дочерним" объектам, которые наследовали это свойство и ручками его удалить? Просто сейчас из-за этого не срабатывает выгрузка из 1С, насколько я подозреваю. Там одноимённое поле.. такое ведь может быть или я мыслю не в ту степь?
Чтобы быть уверенным, надо пройтись по всем объектам, как вариант можно удалить именно поле через API umiFieldsCollection(через интерфейс пользователя это не реализовано). Есть особенность, при добавлении поля (атрибут) в тип создается в базе одни раз, далее оно присоединяется к типу данных его потомкам, так же если руками добавить аналогичное поле в другой тип то новое поле создано не будет, просто присоединяется уже созданное. Это можно заметить если обратить внимание на идентификатор поля.
Почему может не срабатывает выгрузка из 1С, надо смотреть индивидуально, причины могут быть разные.
Всё верно ... При добавлении свойства в РОДИТЕЛЬСКИЙ тип шаблона данных, оно автоматически наследуется у всех его дочерних объектов. Но при удалении, оно не удаляется в дочерних объектах.
Это не дырка, это такая система наследования свойств. Ведь дочерние объекты могут содержать поля отличные от родителя.