Имя: Пароль:
1C
1С v8
БСП. Функция "СвойстваОбъекта" из подсистемы "Свойства".
,
0 Lama12
 
13.07.18
15:49
Вот тут описан один из элементов интерфейса подсистемы "Свойства" - https://its.1c.ru/db/bsp246doc#content:1635:hdoc
Не могу понять какой смысл от этой функции если она возвращает не все дополнительные реквизиты и свойства?
Объясню на примере.
ERP.
У справочника "Номенклатура" добавлен дополнительный реквизит "Реквизит 1". Имеется Вид номенклатуры "Первый вид". К номенклатуре с видом номенклатуры "Первый вид" добавлен дополнительный реквизит "Реквизит 2".

Почему указанная выше функция возвращает массив только со значением "Реквизит 1"?  Интересует не программная реализация, код посмотреть можно, а именно логика. Может я не понимаю какой-то сакральный смысл данной функции? И в документации к БСП написано что она возвращает все дополнительные реквизиты и свойства, и в комментарии в коде тоже самое написано.
Может "Реквизит 2" это не дополнительный реквизит справочника "Номенклатура"? Тогда дополнительным реквизитом чего он является? Или это так криво функция реализована (под себя переделать не сложно)?
1 YaFedor
 
13.07.18
15:59
А что в ЕРП можно добавлять реквизит условно? Я писал самописку на БСП так я эту возможность допиливал самостоятельно
2 Lama12
 
13.07.18
16:00
(1) Да. К некоторым видам объектов.
3 Вафель
 
13.07.18
16:09
(0) вроде только установленные получает
4 Вафель
 
13.07.18
16:10

    ТекстЗапросаДопРеквизиты =
        "ВЫБРАТЬ [РАЗРЕШЕННЫЕ]
        |    ТаблицаСвойств.Свойство КАК Свойство,
        |    ТаблицаСвойств.Значение КАК Значение,
        |    ТаблицаСвойств.ТекстоваяСтрока,
        |    ТаблицаСвойств.Ссылка КАК ВладелецСвойств
        |ИЗ
        |    [ИмяОбъектаСоСвойствами].ДополнительныеРеквизиты КАК ТаблицаСвойств
        |        ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения
        |        ПО ДополнительныеРеквизитыИСведения.Ссылка = ТаблицаСвойств.Свойство
        |ГДЕ
        |    ТаблицаСвойств.Ссылка В (&ОбъектыСоСвойствами)
        |    И (ДополнительныеРеквизитыИСведения.Ссылка В (&Свойства)
        |        ИЛИ ДополнительныеРеквизитыИСведения.Имя В (&Свойства))";
5 Lama12
 
13.07.18
16:15
(4) Но про эту особенность "только установленные" в документации не сказано. Т.е. когда передаешь в качестве параметра пустую ссылку на объект нужного типа, то результат как в (0). Конечно если все реквизиты будут заполнены у объекта и он будет в базе, то все будет нормально.
Я рассчитывал на эту функцию, передавая в нее пустую ссылку нужного типа, а как до отладки дошло стало печально.

Видимо придется свое наваять.
6 Вафель
 
13.07.18
16:20
есть же функия
СвойстваОбъекта
7 Вафель
 
13.07.18
16:21
в ней как раз и можно получить список доступных свойств
8 Вафель
 
13.07.18
16:21
хот это она и есть
9 Вафель
 
13.07.18
16:22
Но туда не пустую ссылку нужно передавать, а владельца свойств
10 Lama12
 
13.07.18
16:22
(7) Неее она возвращает то что в базе по объекту. Т.е. код из (4) как раз из нее выдернут.
11 Вафель
 
13.07.18
16:23
(10) нет не из нее
12 Lama12
 
13.07.18
16:23
(9) Вот именно. А мне нужно все доступные свойства типа объекта. Ладно. Сделаю себе свою функцию :-) Вроде не сложно.
13 Вафель
 
13.07.18
16:23
то было из ЗначенияСвойств
14 Вафель
 
13.07.18
16:23
(12) Предлагаю все-таки разобраться что такое владелецц свойств
15 Lama12
 
13.07.18
16:25
(14) Похоже в этом и логика. Как бы у каждого элемента справочника свой набор. Спасибо за наводку. Как-то сразу в голове такая схема не складывалась.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший