Имя: Пароль:
1C
1C 7.7
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);