Имя: Пароль:
1C
 
Реализация физического хранения периодических реквизитов
0 Udjin
 
09.12.03
10:30
All, поделителитесь, плиз...
Как реализовано физическое хранение периодических реквизитов в 1С 7.7 SQL версии?
1 Udjin
 
09.12.03
11:52
К примеру связываем таблицу справочника с таблицей  _1SCONST по справочник_ID = _1SCONST.OBJID, а само определение какой реквизит какому _1SCONST.ID принадлежит можно произвести только опытным путем?
2 skunk
 
09.12.03
12:11
Еслия правильно понял вопрос, то смотри в таблице справочника поле ID нужного элемента. а затем отбираешь все записи таблици 1SCONST с полем OBJID равный полученному ID.
3 Udjin
 
09.12.03
12:47
это понятно :)
Не понятно вот что: к примеру в справочнике_А есть периодический реквизит "Подразделение", опытным путем я определила, что для "Подразделениz" _1SCONST.ID=5895, где соответсвенно _1SCONST.OBJID=справочник_А_ID. У справочника_А есть еще 15 периодических реквизитов, определить все их _1SCONST.ID опытным путем можно, но может есть другой путь. Вот он как раз и интересует.
4 skunk
 
09.12.03
13:37
открываешь md и задаешь поиск строки параметром поиска указываешь искомый переодический реквизит.
Пример в ТиС ищем курс валюты.
Задаем поиск  -   ,"Валюты",       ," - указывается для уменьшения ложных срабатываний, а то там валют сам понимаешь.
Должен найти следующие:
{"14","Валюты","","","0","3","1","1","1","10","1","2","1","19","19","0","1","1",
{"Params",
{"17","Курс","","","N","10","4","0","1","1","1","1","0","0","1","0","0"}
Перед нужным реквизитом стоит цифра в кавычках это и есть идентификатор реквизита в БД. То бишь для нас это 17.
Далее переводишь ее 36-ую систему счисления, используя цифры 0..9 и латинские буквы A..Z. Получаешь "E".
При отборе 1SCONST смотришь в нем поле ID и отбираешь с нужным тебе реквизитом.
5 skunk
 
09.12.03
13:40
В скуле не знаю как сделать, но выылить базу в md всегда можно
6 Udjin
 
09.12.03
15:29
Спасибо, skunk!

Думаю примерно этом мне и надо. Жаль, что все равно автоматически это никак не увязать... Нужна работа ручками, нужна...
7 skunk
 
09.12.03
15:34
Почему есть проги котрые смотрят md. У меня есть пару сылок на эту имфу, волшебник подсказал, смотри тему Формат файла внешних отчетов.
Так что терпение и труд все перетрут.
Удачного поиска!
8 Udjin
 
09.12.03
16:30
to skunk:

Еще раз спасибо, тоже полезная инфа!

Жаль что поиска по форуму нет :(
9 Волшебник
 
09.12.03
19:53
(8) услышал, воспринял. Как немного освобожусь, займусь поиском.
10 Udjin
 
10.12.03
12:09
(9)
Будем ждать с нетерпением!
11 skunk
 
15.12.03
03:58
(10)Возвращаясь к теме. Сейчас могу сказать как это сделать программно.
12 Udjin
 
15.12.03
11:58
(11) Что для этого нужно, чтобы Вы сказали?
13 skunk
 
15.12.03
12:14
Да в принципе ничего. Если со внешними компонентами проблем нет, тогда ищите в интернете библиотеки ActiveMD.dll и Compound.dll и их используйте. По моему первая будет получше, больше возможностей.
У меня есть ActiveMD 0.4.1.00 и Compound.dll 4.5. Если надо могу скинуть мылом.
14 Udjin
 
15.12.03
15:59
с ActiveMD.dll разбираюсь, но пока как-то не очень успешно.
15 skunk
 
15.12.03
16:55
В чем проблема, сразу бы писанула
16 Udjin
 
15.12.03
18:41
Пробная работа с ActiveMD.
В 1С окрываю файл Конфигуратор.ert. Там все поля пустые, пробую указать в поле "путь" путь к 1Cv7.md - выдается ошибка:
"М.Д.Идентификатор=Идентификатор;
{путь к файлу конфигуратор.ERT(186): неизвестное имя".
Другие .ert файлы не открываются, ошибка:
"...
Значение не представляет агрегатный объект (...)"
17 skunk
 
15.12.03
20:10
А ты его dll в системе за регистрировал.
18 Udjin
 
15.12.03
20:11
да
19 skunk
 
15.12.03
20:29
Покажи текст обработки
20 skunk
 
15.12.03
21:05
регистриовать COM сервер надо командой
regsrv32 <полный путь до dll>\ActivateMD.dll

винда скажет там чего то success!
Проверка в реестре есть ключ
HKEY_CLASSES_ROOT\ActiveMD.MDFile

Дальше 1С. Пример получение всех справочников плюс все атрибуты справочников,  их ID в десятичной и шестнадцатиричной представлении:
//*******************************************
Процедура Сформировать()
 MD = СоздатьОбъект("ActiveMD.MDFile");
 MD.Open("c:\test\trade 2003\1cv7.md");
 Для x = 1 По MD.Reference() Цикл
   Spr = MD.Reference(x);
   Сообщить(Spr.Identifier);
   Для y = 1 По Spr.Attribute() Цикл
     Attr = Spr.Attribute(y);
     Сообщить("    " + Attr.Identifier + "; Десятичное представление:" + Attr.ID + "; Тридцатишестиричное представление:" + _IdToStr(Attr.ID));
   КонецЦикла
 КонецЦикла;    
 MD.Close();
КонецПроцедуры

Все ок.
21 Udjin
 
16.12.03
10:01
Спасибо, skunk, очередной раз выручаешь!

При регистрации dll я не указывала полный путь до нее :)
После того как указала, все стало на свои места.
22 skunk
 
16.12.03
10:58
Я первый раз вижу женщину программистку, которая знает, то что я незнаю. Виват! Удачи тебе в нашем не легком труде.
23 Udjin
 
16.12.03
11:50
к ветке по теме: "OFF: Счастье":
Счастье - это когда skunk ТАК ВОТ отвечает и желает удачи :)

P.S. Пишу здесь, потому как там боюсь, могут не понять...
24 skunk
 
16.12.03
16:38
А ты думаешь я один сюда заглядываю, не думаю, что мы в троем накрутили 263 просмотра.
P.S. А на самом деле я ужасно злой и страшный тип.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс