v7: Не работает метапарсер имен в прямых запросах #486064


#0 by DCKiller
Предыдущая ветка утопла, поэтому создаю новую тему. Итак, проблема: почему-то при объявлении пути к базе в виде \serverC$Base_1C est, если подключаешься к файловой БД, то не работает в запросах метапарсер имен (в скулевой все в порядке). В чем причина, как решается?
#1 by Кириллка
Тыб добавлял к теме, что проблема эпического характера "у тебя", а не вообще :)
#2 by DCKiller
Да я и не претендую на эпичность. Я ж просто пытаюсь освоить эту штуку, разве неясно :) По теме что-нибудь можешь посоветовать? Пытался перехитрить эту хрень, пробовал преобразовать в случае с файловой версией текст запроса в SQL посредством ОбрМетаСКЛ, но и объект MetaDataWork тоже не может :(
#3 by Кириллка
"при объявлении пути к базе" - объявление где? "не работает в запросах метапарсер имен" - как это выглядет? хочешь разобраться, так и пиши подробнее.
#4 by DCKiller
Адрес пути к базе, к котрой нужно подключиться, задается юзером в диалоге обработки. Подключение происходит нормально, потом сразу после подключения делается прямой запрос к справочнику фирм той базы. Таблица справочника объявлена в запросе как "$Справочник.Фирмы". Если запрос идет к таблице скулевой базы, то все выполняется без ошибок. Когда же делается запрос в файловой БД, вываливается сообщение "Meta name parser error: объект не найден "$Справочник.Фирмы". При том, если задавать имя таблицы напрямую, т.е. не как "$Справочник.Фирмы", а в виде "SC4014", то ошибки нет. Но последний вариант, как понятно, не очень удобный...
#5 by Кириллка
код давай. Метод ПодключитьИБ??
#6 by DCKiller
Вот код подключения к файловой ИБ:
#7 by Кириллка
Из текущей базы устанавливаешь соединение через vfpoledb к самой же этой базе? Или к другой dbf-базе?
#8 by DCKiller
К другой
#9 by Кириллка
а, удивительно, а почему это не работает метапасер??
#10 by Кириллка
+9 может быть что-то случилось? может быть тебе нужно сделать ТИИ?
#11 by DCKiller
Это ты меня спрашиваешь? :) Почему тогда при прямом объявлении имени таблицы все проходит без косяков? При этом ошибка вываливается, повторяю, ТОЛЬКО когда объявляешь путь к базе как указано в . Если база на этом же компьютере, то там с парсером все ОК.
#12 by Кириллка
сделай ТИИ или еще чего-нибудь.. а пока будет делаться почитай мануалы.
#13 by DCKiller
"а пока будет делаться почитай мануалы" Там про эту проблему написано?
#14 by Кириллка
+12 давай я тебе подсказку сделаю: у тебя в базе, из которой ты выполняешь код ведь нету справочника Фирмы?
#15 by DCKiller
В той базе нету
#16 by Кириллка
в мануалах написано о многих проблемах, а главное там написано, как эти проблемы не создавать.
#17 by DCKiller
В смысле в той базе, из которой подключаюсь, нету, а в той, к которой подключаюсь, есть
#19 by DCKiller
Как это связано с проблемой в ?
#20 by Кириллка
а давай поиграем в игру под названием "научи друга думать"?
#21 by DCKiller
Видишь в переменную такую "ПутьКФайлу"? Она содержит адрес базы, к котрой я подключаюсь. Так что думать тут и не надо, он эту базу должен увидеть. Или?..
#22 by Sadovnikov
База и MD-ник - немного разные вещи, верно?
#23 by DCKiller
Разумеется. Как его ткнуть носом, чтобы он увидел?
#24 by Sadovnikov
Доку почитать? На предмет ПрисоединитьМД
#25 by Кириллка
ну раз запрос выполнился, при подстановке реальных названий, то значит базу он увидел.
#26 by DCKiller
Это метод объекта MetaDataWork? Уже пробовал, результат нулевой :(
#27 by Кириллка
слеш на конце?
#28 by DCKiller
Вот так: МенеджерМД.ПрисоединитьМД(ПутьКФайлу+"1Cv7.MD");
#29 by Кириллка
ага вот так: МенеджерМД.ПрисоединитьМД(ПутьКФайлу+"");
#30 by Кириллка
+29 а ты молодец, заботливый.
#31 by DrZombi
Засвети свой запросик :)
#32 by DCKiller
Все очень просто:
#33 by Sadovnikov
Зачем ID получаешь?
#34 by DrZombi
Где там такой текст!!!!
#35 by DrZombi
+Сори попутал :) Ты сам понимаешь, что хочешь получить :) ? Ты могешь из другой базы выципить только строку или число :) А ужо через оле получить сам объект, если надо :)
#36 by DCKiller
Понимаю прекрасно. Все эти вопросы уже перетерли тут: А сейчас встала уже другая проблема. Так что там с МД?
#37 by Sadovnikov
И что там с MD?
#38 by DCKiller
Ну так как сделать-то, чтобы сторонняя база увидела МДшник чужой базы? Если вся проблема в этом...
#39 by Sadovnikov
Ты, блин, доку читать будешь или нет??? Открой для себя еще один метод - ОбрМетаСКЛ
#40 by DCKiller
Ты, блин, ветку читать будешь или нет??? Например,
#41 by Sadovnikov
А ты 1 и 1 сложить можешь?? Читай, блин, доку.
#42 by DCKiller
Утомил, остань. Заладил как попугай одно да потому... ЧИТАЛ Я ЕЕ!!!!!
#43 by Sadovnikov
Ну удачи тебе.
#44 by Кириллка
быстро ты :)
#45 by Кириллка
+44 но я тебя понимаю
#46 by Sadovnikov
:)
#47 by 1Сергей
МенеджерМД.ПрисоединитьМД(СокрЛП(ПутьКФайлу)+"");
#48 by DCKiller
Повторяю еще раз: объект MetaDataWork при вызове метода ОбрМетаСКЛ в этом случае возвращает ту же ошибку, что и метод выполнения запроса: Meta name parser error: объект не найден "$Справочник.Фирмы" то же самое...
#49 by 1Сергей
в порядке бреда. В подключаемой базе точно есть Справочник.Фирмы?
#50 by Кириллка
покажи код.
#51 by Sadovnikov
Утомленный, весь код покажи. В том числе, и как объекты создавал.
#52 by Sadovnikov
:)
#53 by DCKiller
, Да на здоровье. Только я и так уже все написал.    Если ЗагрузитьВнешнююКомпоненту("1CPP.dll") = 0 Тогда        Предупреждение("Не удалось загрузить внешнюю компоненту 1с++.
#54 by DCKiller
+ Переменная МенеджерМД объявлена в модуле так, что ее видят все процедуры, если что...
#55 by Sadovnikov
И ты еще чего-то пытаешься спорить???
#56 by DCKiller
Ну и гед что не так???
#57 by Sadovnikov
Результат = Запрос.ВыполнитьИнструкцию(МенеджерМД.ОбрМетаСКЛ(ТекстЗапроса));
#58 by Кириллка
аxуеть
#59 by 1Сергей
гы :)
#60 by Кириллка
+58 ларчик-то просто открывался.
#61 by Кириллка
а кто тебя надоумил назвать переменную экземпляра класс MetaDataWork таким названием "МенеджерМД"?
#62 by Sadovnikov
Ну не позволяет ему религия аж 2-мя методами класса сразу пользоваться. Только по очереди...
#63 by DCKiller
хорошо, был еще такой вариант:    Если ЗагрузитьВнешнююКомпоненту("1CPP.dll") = 0 Тогда        Предупреждение("Не удалось загрузить внешнюю компоненту 1с++. И ни хрена это не помогло!
#64 by Кириллка
погоди, еще не все. Сейчас будут вопросы насчет того, почему с sql-базой все работает как надо. Готовимся отбивать атаку..
#65 by DCKiller
а чем не нравится?
#66 by Кириллка
а попробуй в своем варианте применить . есть мнение, что не до конца понимаешь.
#67 by Кириллка
+66 и еще, а зачем тебе МенеджерМД? Предвижу ответ, чтобы парсить текст запроса, да?
#68 by Sadovnikov
"И ни хрена это не помогло!" - супер! Что есть "не помогло"?
#69 by DCKiller
Блин, заработало!!! Тупнул я малость, извините, ребят :) Ищо названия ставок НДС хотел получить с его помощью (людские)
#70 by DCKiller
+ Кстати, со ставками вот что-то не очень получается :( Они там из перечисления берутся, мож кто подскажет, как их названия выдрать, если имеешь только их ИД в 36-ричном виде?
#71 by Кириллка
а че было-то? Не томи, нам интересно, чтобы на грабли не наступать самим :)
#72 by ДенисЧ
Идентификатор вида перечисления ${ВидПеречисления36|EnumKind36}.<ВидПеречисления> char: = 'ZZZZ'
#73 by Sadovnikov
Не забываем, что база - другая, не текущая.
#74 by DCKiller
Ну, в-общем, получилось почти как в :) Сначала использовал отдельно преобразование запроса в SQL, потом отдельно ПрисоединитьМД... почему-то недоглядел...
#75 by DCKiller
мне вообще-то надо идентификатор значения перечисления, а не его самого :)
#76 by Кириллка
про IIF почитай.
#77 by Ёпрст
не догонит.. :)ъ
#78 by DCKiller
, Это вроде ICASE или CASE WHEN?
#79 by Ёпрст
да.
#80 by DCKiller
'Без НДС' WHEN... END ?
#81 by Ёпрст
да.. либо сделать временную табличку с соответствиями.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С