|
v7: Получение ID элемента справочника
| ☑ |
0
Hsals
11.04.12
✎
13:01
|
Всем привет
Возник вопрос, как можно достать ID элемент справочника из дбфки самой 1с (конкретно, файл SC84.dbf). Первая мысль была средствами ХBase выдернуть и всего делов... Но на практике оказалось, что ее нельзя открыть, т к сама 1С ее использует в данный момент(как это ни странно :) ). Попробовал скопировать эту дбфку - тоже не прокатило по той же причине. Вот дальше мысль не идет, подскажите, плз...
|
|
1
Hsals
11.04.12
✎
13:02
|
Речь идет о конфе Комплексная, а справочник Номенклатура
|
|
2
Ёпрст
11.04.12
✎
13:02
|
ЗначениеВСтрокуВнутр
или ИдОбъекта
|
|
3
Ёпрст
11.04.12
✎
13:03
|
но с такими знаниями, лучше не лазить туда ручонками
|
|
4
Kreont
11.04.12
✎
13:04
|
(0) Если 1С не монопольно то можно спокойно добраться до дбф той
|
|
5
Kreont
11.04.12
✎
13:08
|
DBF = СоздатьОбъект("XBase");
DBF.ПоказыватьУдаленные(0);
DBF.ОткрытьФайл(КаталогИБ() + "sc84.dbf", КаталогИБ() + "sc84.cdx", 1);
DBF.ТекущийИндекс("CODE");
DBF.Ключ.CODE = Прав(" " + СокрЛП(КодВ1ССправочника), 5);// вот тут надо под свое проверить, длину поля кода в 1С и как в дбф оно пишется
Если DBF.НайтиПоКлючу(0) = 0
Возврат;
КонецЕсли;
Id = DBF.ПолучитьЗначениеПоля("ID");
DBF.ЗакрытьФайл();
|
|
6
Kreont
11.04.12
✎
13:09
|
ну и проверку:
Если МонопольныйРежим() = 1 Тогда возврат ...
|
|
7
FN
11.04.12
✎
13:13
|
ОбъектСтр=ЗначениеВСтрокуВнутр(Объект);
СП=СоздатьОбъект("СписокЗначений");
СП.ИзСтрокиСРазделителями(Сред(ОбъектСтр,2,СтрДлина(ОбъектСтр)-2));
СтрокаДляРазбора=СП.ПолучитьЗначение(7);
КодУРБД=Прав(СтрокаДляРазбора,3);
КодОбъекта=СокрЛП(Сред(СтрокаДляРазбора,11,10));
ВидОбъекта=СокрЛП(Лев(СтрокаДляРазбора,10));
Ну и перевести в 36-ную систему:
_IdToStr()
Синтаксис: _IdToStr(<Ид>)
Назначение: Возвращает строку - результат преобразования 10-тичного значения в 36-ричное.
Параметры: <Ид> - выражение со значением типа число.
Пример: Зн36 = _IdToStr(371);
|
|