1С++ Как подключиться из одной базы 1С к другой? #485559


#0 by DCKiller
Возможно такое? У объекта "ODBCDatabase" есть метод УстБД, насколько я понял, он позволяет подключиться из текущей БД к любой другой, помимо родной, БД 1С. Вопрос только, как именно это сделать? Предположительно, подключение возможно как к файловой, так и к SQL-базе.
#0 by DCKiller
Возможно такое? У объекта "ODBCDatabase" есть метод УстБД, насколько я понял, он позволяет подключиться из текущей БД к любой другой, помимо родной, БД 1С. Вопрос только, как именно это сделать? Предположительно, подключение возможно как к файловой, так и к SQL-базе.
#1 by VoditelKobyly
#2 by VoditelKobyly
#3 by VoditelKobyly
#4 by VoditelKobyly
Естественно должно быть раньше чем
#5 by DCKiller
Спс Для баз обоих типов способ подключения один?
#6 by VoditelKobyly
Для ДБФ:
#7 by DCKiller
Не вижу, где в примере используется переменная "Соединение"
#8 by DCKiller
+ Пробовал в метод ПрисоединитьИБ в качестве параметра передать строку соединения, выдается ошибка: Ошибка загрузки метаданных
#9 by VoditelKobyly
Пробуй так:
#10 by DCKiller
Такой вариант вроде пашет. А вот для скульной базы почему-то , и - не работают. Когда использовал "ПрисоединитьИБ", ругался "Общая файловая ошибка при доступе к файлу users.usr". Поменял "ПрисоединитьИБ" на "Открыть" - соединение все равно не устанавливается. Какие еще м.б. варианты?
#11 by DCKiller
Блин, я тормоз! Слэш пропустил :) сорри
#12 by DCKiller
Делаю запрос к той базе, к котрой подключился. "SELECT        |    Жур.IDDoc As [Док $Документ.ПоступлениеТМЦ] В результирующей таблице выводится колонка с документами, но там многие строки имеют вид: <Объект не найден (....)> В чем причина этого?
#13 by also
битые ссылки вестимо
#14 by also
Сделай ТИИ
#15 by DCKiller
Странно. Когда делал тот же самый запрос непосредственно в родной скулевой базе, то никаких битых ссылок в результат не попадало...
#16 by orefkov
А ты думал? Ты же тянешь данные из ЧУЖОЙ базы, и пытаешься, чтобы 1С их типизировала в значения РОДНОЙ базы. Так не получиться, тащить из чужой базы можно только "сырые" данные, строки, числа, даты. Типизация не сработает.
#17 by also
не подумал..что то не прочитал что это запрос к другой базе
#18 by DCKiller
Так это битые ссылки или что? Я же говорю, некоторые доки имеют нормальный вид, некоторые - см.
#19 by trad
"некоторые доки имеют нормальный вид" не верь глазам своим. типизация "чужих" ссылок невозможна.
#20 by DCKiller
Хм... А что же тогда это такое?
#21 by VoditelKobyly
Это случайное совпадение.
#22 by DCKiller
С данными родной базы? Интересно, как она то определяет, по номеру дока? Или по ИД?
#23 by DCKiller
Если все так, то и задача идет ф топку :( Но за информацию - все равно спасибо, думаю, в дальнейшем пригодится.
#24 by VoditelKobyly
По ИДД.
#25 by VoditelKobyly
Смотря какая задача. Ты же не объяснил. Объекты в понимании 1с ты не получишь, а вот всю информацию о них - легко. В чем состоит задача? Спроси может найдутся знающие люди.
#26 by DCKiller
Задача в том, чтобы юзеру вывалить на экран все документы из базы, к которой подключаемся, за заданный период в виде списка. Из них юзер отберет те, которые нужно загрузить в текущую ИБ, и вот с ними уже будет дальнейшая работа.
#27 by VoditelKobyly
Ну и зачем тебе тогда нужны ссылки? Бери даты, названия документов и номера , показывай и пусть ставит галки. По выбранным формируй список ИДД и по ним таким же запросом делай выборку. Обрабатывая таблицы выборки создавай в своей базе нужные документы. Тебе эта самая тема! Всё будет очень быстро делаться.
#28 by DCKiller
Сделал. В список СпДокументы поместил ИД отобранных доков. Сейчас выполняю второй запрос к базе, где в качестве условия выборки устанавливаю только эти, отобранные пользователем документы: В результате возвращается пустая таблица, хотя в списке отобранных документов данные точно есть. В чем причина?
#29 by antoneus
Опять объекты укладываешь в родной базе?
#30 by antoneus
передавай строку с iddoc'ами, которую сформируешь из таблицы
#31 by VoditelKobyly
Вот так дает таблицу? "SELECT        |    ДокСтр.IDDoc As [ИддДок],
#32 by VoditelKobyly
Что то я сомневаюсь, что у тебя Запрос.УложитьСписокОбъектов(СпДокументы, "#TmpDocs"); сработает как надо. Ты отрабатываешь версию в ДБФ?
#33 by VoditelKobyly
Временная таблица точно создается не пустая? Посмотрел?
#34 by DCKiller
да, но пустую Из файловой подключаюсь к скуль-версии.
#35 by VoditelKobyly
Можешь для отладки убрать решетку с таблички "#TmpDocs" и через QA в SQL глянуть на эту табличку. Потом её там же прибьешь. Таблица должна быть не пустая.
#36 by DCKiller
Простите мое невежество, но что такое QA и как с ним работать? Просто раньше этой темы особо касаться не приходилось.
#37 by VoditelKobyly
QA - QueryAnalazer программная среда для работы с базами данных SQL. Поставляется вместе с самой субд SQL SQL надо расшифровать?
#38 by DCKiller
SQL расшифровывать не надо :)
#39 by VoditelKobyly
На SQL у тебя доступ есть?
#40 by VoditelKobyly
1с же ты както там запускаешь.
#41 by DCKiller
Через ярлык :)))
#42 by VoditelKobyly
А в конфигураторе в парметрах базы данных SQL можешь глянуть? Ты там вообще местный или пришлый?
#43 by los_hooliganos
Он её не увидит, т.к. локальная временная таблица видна только в рамках одного @@SPID, а QA будет с @@SPID отличным от 1совского.
#44 by VoditelKobyly
Значит надо её делать самому без метода УложитьСписокОбъектов
#45 by DCKiller
Что именно там смотреть? "Сервер", "База данных", "Пользователь", "Пароль" - все, что там есть.
#46 by los_hooliganos
ну её можно сделать глобальной)))
#47 by VoditelKobyly
А ешё лучше изучать постепенно и на каждый выбранный документ посылать свой запрос. Тогда можно будет обойтись без временных таблиц. Скорость всё равно будет достаточной, а основные тормоза будут на проведении вновь созданных документов в своей базе.
#48 by jj_mail
а не проще ли просто написать "ВыполнитьИнструкцию(ТекстЗапроса,ТЗ,1)", где ТЗ- таблица значений ?
#49 by VoditelKobyly
На сервер где установлен SQL у тебя есть доступ? Надо будет запустить там QA и посмотреть таблички базы данных
#50 by VoditelKobyly
Смотри , тебе это будет проще реализовать. Потом будешь оптимизировать (если захочешь)
#51 by DCKiller
Доступ есть. Как QA там запустить?
#52 by VoditelKobyly
Тогда будет твой запрос типа этого: |"; Ставишь его в цикл по списку выбранных документов и не надо лазить в QA
#53 by DCKiller
так не работает, сейчас проверил...
#54 by VoditelKobyly
Понятно. Надо же все остальное добавить.
#55 by VoditelKobyly
Приведи в соответствие со своей программой
#56 by DCKiller
Что остальное? Да приведен он и так. Таблица все равно пустая.
#57 by VoditelKobyly
Покажи весь код. Как получаешь ИдДок из соседней базы? Как накидываешь список? Как даешь пользователю на отметку? Как потом катишься по этому списку и берешь ИдДок в запрос? Чё мы тут должны гадать-то?
#58 by DCKiller
Поправочка: по одному доку все-таки работает, так что вариант в в принципе применим. Хотелось бы, правда, красивее сделать...
#59 by VoditelKobyly
Ну вот, а то всё мама, да мама... Красивее уже и сам сможешь. Ещё раз учти, что основные потери времени будут не на запросы к соседней базе, а на проведение вновь создаваемых документов в своей. Поэтому: а надо ли оно красивее конкретно тебе?
#60 by VoditelKobyly
, QA запускается через кнопку ПускПрограммыMicrosoft SQL ServerQueryAnalazer
#61 by VoditelKobyly
У меня рабочий день заканчивается дальше пытай других.
#62 by DCKiller
спасибо за помощь! :) Да у меня, собственно, тоже :)
#63 by VoditelKobyly
А у тебя какой город? В личке нет.
#64 by DCKiller
Столица Мира :)
#65 by VoditelKobyly
Сиб?
#66 by VoditelKobyly
Стесняешься название произносить? Или не выговариваешь всех букв?
#67 by DCKiller
Да нет, почему, просто многие знают уже, что такое "Столица мира". Собственно, Барнаул :)
#68 by VoditelKobyly
А-а. Я не знал, что она теперь туда переехала. Буду знать. У меня там однокласник есть.
#69 by DCKiller
Она никуда не переезжала. Она всегда тут была :)
#70 by VoditelKobyly
Ну была и пусть дальше стоит. Мне и в моей деревне хорошо.
#71 by DCKiller
Нашел решение, как вытащить из соседней БД только выбранные юзером доки ОДНИМ запросом. Вместо "УложитьСписокОбъектов" здесь нужно использовать предв. создание врем. таблицы. Запрос.Выполнить("create table #TmpDocs(iddoc char primary key)");
#72 by VoditelKobyly
Ну и молодец. Я тебе про это же и говорил.
#73 by VoditelKobyly
Утро вечера мудреннее.
#74 by DCKiller
:)
#75 by VoditelKobyly
Перегружаешь в бухгалтерию со свёрткой по ставкам НДС? А в бухгалтерии формируешь документы или операции?
#76 by DCKiller
Документы
#77 by VoditelKobyly
Следующий шаг реализация. Тока не понятно почему у вас торговля SQL, а бухгалтерия ДБФ.
#78 by DCKiller
А что не так?
#79 by VoditelKobyly
Имея SQL и соответственно всё администрирование по нему работаете с менее надежной системой хранения на ДБФ.
#80 by Кириллка
триллер какой-то
#81 by DCKiller
Сейчас будет 2-я часть :)
#82 by DCKiller
Теперь нужно бы проделать то же самое, но уже для базы ДБФ. Тоже интересно, каким образом передать сторонней базе список ИД доков, полученных тем же образом, что было описано ранее.
#83 by Кириллка
тыб матчасть подтянул на досуге, будет легче.
#84 by VoditelKobyly
Точно также. Фомируй временную таблицу и в запросе присоединяй условие
#85 by DCKiller
дык мало у меня его... досуга-то :) создание ВТ для файловой БД? Прокатит? Вроде был случай, что матюгалась 1с...
#86 by VoditelKobyly
Можешь использовать: RS.УстановитьКаталогВремТаблиц(КаталогВремФайлов); И даже сможешь глянуть его.
#87 by VoditelKobyly
Не сможешь у тебя есть объект XBASE. Сделай времянку через него.
#88 by VoditelKobyly
+ Если не сможешь, то ...
#89 by DCKiller
ОК, сейчас проверим
#90 by VoditelKobyly
Вот нашел тебе кусок кода, где врем. таблица делается через XBASE:
#91 by Ёпрст
делай времянку через сам фокс.. Хотя, можно просто заполненый список уложить и всё.. ЗЫ: или лучше 1qlite используй - там есть временные таблички  и всё такое + супер метод УложитьТЗ
#92 by DCKiller
"делай времянку через сам фокс.. " А примерчик можно?
#93 by Ёпрст
#94 by orefkov
1sqlite работает только в родной базе.
#95 by Ёпрст
ну..можне же напрямую указать что за файлик используем ? + все поля с него "руками", без метапарсера.
#96 by Это_mike
Александр, а исходниками на Status1C не поделишься? А то с итланда не скачать, он еле шевелится и регистрация там похоже слетела...
#97 by DCKiller
Вот эта вещь рулит: Только нельзя ли вместо имени файла использовать метаимя?
#98 by Ёпрст
ну там же есть пример - там во всю используется метапарсер
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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