Поле FIELDID 1SBLOB.DBF

1. mai 110 09.07.13 14:03 Сейчас в теме
Есть справочник 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
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. mai 110 09.07.13 17:20 Сейчас в теме
(2) Ёпрст, видел я эту статью, нет там ответа на вопрос
4. Ёпрст 1063 09.07.13 17:39 Сейчас в теме
:))))))))
Мот ты плохо читал ?
5. Ёпрст 1063 09.07.13 17:40 Сейчас в теме
FIELDID [int] – ID объекта метаданных, который должен храниться. Тип – Char(4).
7. mai 110 09.07.13 17:47 Сейчас в теме
(5) Ёпрст, вся проблема у меня в том, что я не могу определить программно хотя бы название этого объекта.
Этот ID объекта метаданных - внутренний идентификатор, а мне нужен обычный.
Может, я туплю?
6. Ёпрст 1063 09.07.13 17:43 Сейчас в теме
8. Ёпрст 1063 09.07.13 17:56 Сейчас в теме
Что такое "обычный" идентификатор ?
9. mai 110 09.07.13 18:08 Сейчас в теме
Метаданные.Справочник(х).Реквизит(ж).Идентификатор
Спасибо, похоже, действительно туплю:(

глМД = СоздатьОбъект("MetaDataWork");
Я не знал, что есть такой объект.
Буду пробовать
10. Ёпрст 1063 09.07.13 18:09 Сейчас в теме
Тупо обход по метаданным, смотришь, если реквизит справочника - строка неорг. длины, смотришь его унутренний ИД, как :
	Попытка
		глМД = СоздатьОбъект("MetaDataWork");
	Исключение
		Если ЗагрузитьВнешнююКомпоненту("1cpp.dll")=0 Тогда
			Предупреждение("Пнх, Альфредо!");
			глМД = СоздатьОбъект("MetaDataWork");
		КонецЕсли;
	КонецПопытки;
	Для к  = 1 По Метаданные.Справочник() Цикл
		Для сч = 1 По Метаданные.Справочник(к).Реквизит() Цикл
			Если (Метаданные.Справочник(к).Реквизит(сч).Тип = "Строка") 
			    И (Метаданные.Справочник(к).Реквизит(сч).Длина = 0)   Тогда
				Ид = Прав(_IDToStr(глМД.ИДРеквизитаСправочника(Метаданные.Справочник(к).Идентификатор,Метаданные.Справочник(к).Реквизит(сч).Идентификатор),4); 	
				Сообщить("Справочник."+Метаданные.Справочник(к).Идентификатор+" Реквизит: "+Метаданные.Справочник(к).Реквизит(сч).Идентификатор+" FIELDID "+Ид,"i");					
			КонецЕсли;
		КонецЦикла;
	КонецЦикла;
Показать
11. mai 110 09.07.13 18:23 Сейчас в теме
(10) Ёпрст, Большое спасибо за исчерпывающий ответ.
Я примерно так и хотел проверять.
Если что не получится, можно, я еще поспрашиваю?
Вот черт, только сейчас увидел, что это 1cpp и объект оттуда.
Я где-то уже читал про этот способ и забраковал его, т.к конфа не использует 1cpp.
А без 1cpp никак?
12. Ёпрст 1063 09.07.13 18:37 Сейчас в теме
(11) разве что каким-нить стримом читать сам компаунд.
13. Ёпрст 1063 09.07.13 18:40 Сейчас в теме
Ну или, способ для извращенцев - заводим константу неопределенного типа и в неё пихаем значение нужного реквизита, узнаём его ИД.
14. Ёпрст 1063 09.07.13 18:41 Сейчас в теме
15. Ёпрст 1063 09.07.13 18:42 Сейчас в теме
Только, не ясно, нахрена оно надо всё ?
Прямой запрос через ado нормальный не слепить, а без 1cpp так вообще геммор один
16. mai 110 09.07.13 19:05 Сейчас в теме
Пытаюсь работать с dbf-ками из Дельфи.
Дельфи только начал осваивать, поэтому плаваю.
А вопрос сложный, по крайней мере в Инете у дельфийцев
я ответа тоже не нашел.
Еще раз спасибо Вам.
Удивляюсь Вашим познаниям. Честно.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот