Есть справочник SC44.DBF , содержащий несколько полей неограниченной длины.
Значения этих полей хранятся в блоках 1SBLOB.DBF.
Поле OBJID 1SBLOB.DBF соответствует полю ID SC44.DBF и определяет запись справочника.
С ним мне все понятно.
Поле FIELDID, по-видимому, определяет одно из полей этой записи (в 1Cv7.DD их, естественно, нет).
Уважаемые гуру, подскажите пожалуйста, как определить программно,
какое из нескольких полей справочника SC44.DBF определяет поле FIELDID 1SBLOB.DBF?
#==TABLE no 7 : Длинные строки
# Name |Descr |Type[A/S/U]|DBTableName|ReUsable
T=1SBLOB |Длинные строки |A |1SBLOB |1
#-----Fields-------
# Name |Descr |Type|Length|Precision
F=FIELDID |Field Id |C |4 |0
F=OBJID |Obj Id |C |9 |0
F=BLOCKNO |Block Number |N |4 |0
F=BLOCK |Block |C |80 |0
#----Indexes------
# Name |Descr |Unique|Indexed fields |DBName
I=MAIN | |0 |FIELDID,OBJID,BLOCKNO |MAIN
#
#============================================================ ===================
#==TABLE no 8 : Справочник Разделы
# Name |Descr |Type[A/S/U]|DBTableName|ReUsable
T=SC44 |Справочник Разделы |A |SC44 |1
#-----Fields-------
# Name |Descr |Type|Length|Precision
F=ID |ID object |C |9 |0
F=PARENTID |ID parent obj |C |9 |0
F=CODE |object code |C |7 |0
F=DESCR |object description |C |98 |0
F=ISFOLDER |Flag - Is Line - Fol|N |1 |0
F=ISMARK |Flag Object is Marke|C |1 |0
F=VERSTAMP |Version stamp |C |6 |0
F=SP46 |(P)Key |C |3 |0
F=SP48 |(P)Image |N |6 |0
F=SP122 |(P)Категории |C |99 |0
Значения этих полей хранятся в блоках 1SBLOB.DBF.
Поле OBJID 1SBLOB.DBF соответствует полю ID SC44.DBF и определяет запись справочника.
С ним мне все понятно.
Поле FIELDID, по-видимому, определяет одно из полей этой записи (в 1Cv7.DD их, естественно, нет).
Уважаемые гуру, подскажите пожалуйста, как определить программно,
какое из нескольких полей справочника SC44.DBF определяет поле FIELDID 1SBLOB.DBF?
#==TABLE no 7 : Длинные строки
# Name |Descr |Type[A/S/U]|DBTableName|ReUsable
T=1SBLOB |Длинные строки |A |1SBLOB |1
#-----Fields-------
# Name |Descr |Type|Length|Precision
F=FIELDID |Field Id |C |4 |0
F=OBJID |Obj Id |C |9 |0
F=BLOCKNO |Block Number |N |4 |0
F=BLOCK |Block |C |80 |0
#----Indexes------
# Name |Descr |Unique|Indexed fields |DBName
I=MAIN | |0 |FIELDID,OBJID,BLOCKNO |MAIN
#
#============================================================
#==TABLE no 8 : Справочник Разделы
# Name |Descr |Type[A/S/U]|DBTableName|ReUsable
T=SC44 |Справочник Разделы |A |SC44 |1
#-----Fields-------
# Name |Descr |Type|Length|Precision
F=ID |ID object |C |9 |0
F=PARENTID |ID parent obj |C |9 |0
F=CODE |object code |C |7 |0
F=DESCR |object description |C |98 |0
F=ISFOLDER |Flag - Is Line - Fol|N |1 |0
F=ISMARK |Flag Object is Marke|C |1 |0
F=VERSTAMP |Version stamp |C |6 |0
F=SP46 |(P)Key |C |3 |0
F=SP48 |(P)Image |N |6 |0
F=SP122 |(P)Категории |C |99 |0
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Тупо обход по метаданным, смотришь, если реквизит справочника - строка неорг. длины, смотришь его унутренний ИД, как :
Попытка
глМД = СоздатьОбъект("MetaDataWork");
Исключение
Если ЗагрузитьВнешнююКомпоненту("1cpp.dll")=0 Тогда
Предупреждение("Пнх, Альфредо!");
глМД = СоздатьОбъект("MetaDataWork");
КонецЕсли;
КонецПопытки;
Для к = 1 По Метаданные.Справочник() Цикл
Для сч = 1 По Метаданные.Справочник(к).Реквизит() Цикл
Если (Метаданные.Справочник(к).Реквизит(сч).Тип = "Строка")
И (Метаданные.Справочник(к).Реквизит(сч).Длина = 0) Тогда
Ид = Прав(_IDToStr(глМД.ИДРеквизитаСправочника(Метаданные.Справочник(к).Идентификатор,Метаданные.Справочник(к).Реквизит(сч).Идентификатор),4);
Сообщить("Справочник."+Метаданные.Справочник(к).Идентификатор+" Реквизит: "+Метаданные.Справочник(к).Реквизит(сч).Идентификатор+" FIELDID "+Ид,"i");
КонецЕсли;
КонецЦикла;
КонецЦикла;
Показать
(10) Ёпрст, Большое спасибо за исчерпывающий ответ.
Я примерно так и хотел проверять.
Если что не получится, можно, я еще поспрашиваю?
Вот черт, только сейчас увидел, что это 1cpp и объект оттуда.
Я где-то уже читал про этот способ и забраковал его, т.к конфа не использует 1cpp.
А без 1cpp никак?
Я примерно так и хотел проверять.
Если что не получится, можно, я еще поспрашиваю?
Вот черт, только сейчас увидел, что это 1cpp и объект оттуда.
Я где-то уже читал про этот способ и забраковал его, т.к конфа не использует 1cpp.
А без 1cpp никак?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот