Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) $ и внешняя база (число прочтений - 6746 )
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
$ и внешняя база
09. Июля 2010 :: 09:08
Печать  
Подключаюсь к удаленной базе 1С sql таким образом:
Код
Выбрать все
db = СоздатьОбъект("ODBCDatabase");
Если db.Соединение("DRIVER=SQL Server;SERVER=192.168.*.*;UID=***;PWD=***;DATABASE=***;") = 0 Тогда
	Предупреждение("Connection error");
	Возврат;                  
КонецЕсли;        
rs = СоздатьОбъект("AccountsRecordset");
rs.SetDatabase(db);
 


Далее в запросе при использовании символа $ 1CPP пытается парсить имена используя имена таблиц локальной базы, т.е. если в запросе использую $Справочник.Номенклатура, то 1CPP подставит имя таблицы справочника номенклатуры из локальной базы (напр., sc245), чему в большинстве случаев будет соответствовать другая таблица в удаленной базе. Можно обойти это, использовав настоящие имена таблиц (или view) удаленной базы.
Подскажите,  как быть с такими таблицами, как $БИОстатки.Основной?
Прямой запрос к БИ без AccountsRecordset использовать как-то лень)
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: $ и внешняя база
Ответ #1 - 09. Июля 2010 :: 09:13
Печать  
  
Наверх
 
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: $ и внешняя база
Ответ #2 - 09. Июля 2010 :: 09:37
Печать  
ПрисоединитьИБ(КаталогИБ, [ИмяПользователя], [Пароль], [СтрокаСоединения])

База находится не в локальной сети. Доступ через vpn, посему каталог указать не могу.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: $ и внешняя база
Ответ #3 - 09. Июля 2010 :: 10:58
Печать  
почему не можешь ?
Ты же в соединении тоже каталог ИБ указываешь, тут - по аналогии.
  
Наверх
 
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: $ и внешняя база
Ответ #4 - 09. Июля 2010 :: 11:44
Печать  
Да, получилось, только проблема новая: при подключении нужно ждать пока закачается md-шник 4.5мб
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: $ и внешняя база
Ответ #5 - 09. Июля 2010 :: 11:45
Печать  
vinogradoff писал(а) 09. Июля 2010 :: 11:44:
Да, получилось, только проблема новая: при подключении нужно ждать пока закачается md-шник 4.5мб

А ты хотел динамическое чтение? Стандартная 1С-ка тоже затаскивает MD.
Если надо тянуть - тяни параметризированными запросами чтобы 1 раз подключаться.э
Или храни глобальную переменную с подключением.
  
Наверх
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: $ и внешняя база
Ответ #6 - 09. Июля 2010 :: 12:51
Печать  
Спасибо, запросы к обычным таблицам парсятся (скопировал MD той базы себе на жесткий и путь к нему указал), а вот в $БИ... ошибки выдает все-равно.
Код
Выбрать все
|select
|	Ост.КоличествоОстаток
|from
|	$БИОстатки.Основной() as Ост 



AccountsRecordset::СформироватьОшибку(Строка Ошибка=State 42S22, native 207, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'PLANID'.)
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: $ и внешняя база
Ответ #7 - 09. Июля 2010 :: 13:36
Печать  
Понимаешь в чем дело - в бухучете используется кроме плана счетов еще таблица 1saccs - план счетов. И вот без неё - никак.
  
Наверх
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: $ и внешняя база
Ответ #8 - 12. Июля 2010 :: 06:20
Печать  
Народ, помогите: взял кусок по $БИОстатки из описания AccountsRecordset.ert
Код
Выбрать все
sql = "
	|select ОсновнойОстатки.Счет [Счет $Счет.Основной]
	|	, ОсновнойОстатки.Валюта [Валюта $Справочник.Валюты]
	|	, ОсновнойОстатки.Субконто1 [Субконто1 $Субконто]
	|	, ОсновнойОстатки.Субконто1_вид
	|	, ОсновнойОстатки.Субконто2 [Субконто2 $Субконто]
	|	, ОсновнойОстатки.Субконто2_вид
	|	, ОсновнойОстатки.СуммаОстатокДт
	|	, ОсновнойОстатки.СуммаОстатокКт
	|	, ОсновнойОстатки.ВалютнаяСуммаОстатокДт
	|	, ОсновнойОстатки.ВалютнаяСуммаОстатокКт
	|	, ОсновнойОстатки.КоличествоОстатокДт
	|	, ОсновнойОстатки.КоличествоОстатокКт
	|from $БИОстатки.Основной(:ВыбДата~,,
	|		(Счет = " + ТС.СчетИД + "),
	|		(Номенклатура, МестаХранения),
	|		) as ОсновнойОстатки
	|inner join _1saccs as ПланСчетов (nolock) on ОсновнойОстатки.Счет = ПланСчетов.id
	|";                                
	rs.SetTextParam("ВыбДата", ТекущаяДата());	  
	ТЗ = rs.ВыполнитьИнструкцию(sql); 


в ТС.СчетИД id нужного мне счета
Получаю все ту же AccountsRecordset::СформироватьОшибку(Строка Ошибка=State 42S22, native 207, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'PLANID'.)

Добавлю, что подключение идет все к той же внешней базе, а чтобы не ждать выкачивания md-шника скопировал его себе на комп и в AttachIB указываю к нему путь.
  
Наверх
 
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: $ и внешняя база
Ответ #9 - 12. Июля 2010 :: 08:15
Печать  
Вопрос пока снят: в базе из которой делал запрос было 2 плана счетов, а в базе к которой - 1.
  
Наверх
 
IP записан
 
leov-001
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Зарегистрирован: 05. Марта 2009
Re: $ и внешняя база
Ответ #10 - 12. Июля 2010 :: 09:58
Печать  
vinogradoff писал(а) 09. Июля 2010 :: 11:44:
Да, получилось, только проблема новая: при подключении нужно ждать пока закачается md-шник 4.5мб

Скачай мд-шник на комп с которого отправляешь запрос. При подключении укажи папку куда положил мд-шник. Этот способ годится только для SQL.
  
Наверх
 
IP записан
 
Boog
Junior Member
**
Отсутствует



Сообщений: 95
Местоположение: Винница
Зарегистрирован: 23. Февраля 2009
Пол: Мужской
Re: $ и внешняя база
Ответ #11 - 15. Июля 2010 :: 11:17
Печать  
Есть вопрос на эту же тему ($ и удаленная БД):
понятно, что когда я обращаюсь к другой БД, то рассчитывать на типизацию метаобъектов не стоит. Каким способом я могу получить строковое представление объекта, например справочника неизвестного вида? Понятно, что присоединить таблицу справочника придется, но как мне в запросе получить представление вида справочника, чтобы передать в рабочую базу нормальное строковое представление?


P.S. to vinogradoff:
если канал очень узкий, то можно на удаленной стороне склепать bat-ничек, который будет налету архивировать md-ник и передавать тебе архив, ну а на приемной стороне аналогично разархивировать.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: $ и внешняя база
Ответ #12 - 15. Июля 2010 :: 11:23
Печать  
Типизируй к  $ВидСправочника в тексте запроса - будешь видеть текстовое представление вида справочника.
Ежели хочешь посмотреть вид справочника у реквизита неопределенного вида, то первые 4 символа этого реквизита типизируй.
Если я правильно тебя понял, что ты хочешь.
  
Наверх
 
IP записан
 
Boog
Junior Member
**
Отсутствует



Сообщений: 95
Местоположение: Винница
Зарегистрирован: 23. Февраля 2009
Пол: Мужской
Re: $ и внешняя база
Ответ #13 - 15. Июля 2010 :: 11:56
Печать  
Спасибо, правильно.
  
Наверх
 
IP записан
 
Boog
Junior Member
**
Отсутствует



Сообщений: 95
Местоположение: Винница
Зарегистрирован: 23. Февраля 2009
Пол: Мужской
Re: $ и внешняя база
Ответ #14 - 15. Июля 2010 :: 12:16
Печать  
Все же не совсем: ВидСправочника даст мне идентификатор вида справочника, а не его представление на стороне 1С.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: $ и внешняя база
Ответ #15 - 15. Июля 2010 :: 12:24
Печать  
$ВидСправочникаПредставление
  

1&&2&&3
Наверх
 
IP записан
 
Boog
Junior Member
**
Отсутствует



Сообщений: 95
Местоположение: Винница
Зарегистрирован: 23. Февраля 2009
Пол: Мужской
Re: $ и внешняя база
Ответ #16 - 15. Июля 2010 :: 12:48
Печать  
trad писал(а) 15. Июля 2010 :: 12:24:
$ВидСправочникаПредставление

А что именно нужно так типизировать: ИД13, ИД9, left(ИД13,4)?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: $ и внешняя база
Ответ #17 - 15. Июля 2010 :: 13:11
Печать  
left(ИД13,4)

ну или, если мне не изменяет склероз, можно ИД13 - "типизатор" сам отрежет слева 4 символа
  

1&&2&&3
Наверх
 
IP записан
 
Boog
Junior Member
**
Отсутствует



Сообщений: 95
Местоположение: Винница
Зарегистрирован: 23. Февраля 2009
Пол: Мужской
Re: $ и внешняя база
Ответ #18 - 15. Июля 2010 :: 13:41
Печать  
Почему-то не работает ни один из вариантов. Печаль Какие могут быть причины?
  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: $ и внешняя база
Ответ #19 - 15. Июля 2010 :: 15:06
Печать  
а по-моему нет $ВидСправочника, у меня по-крайней мере тоже не работает 1cpp 3.0.1.23. Наверно, trad с $ВидДокумента перепутал.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: $ и внешняя база
Ответ #20 - 15. Июля 2010 :: 18:23
Печать  
alexdd писал(а) 15. Июля 2010 :: 15:06:
а по-моему нет $ВидСправочника, у меня по-крайней мере тоже не работает 1cpp 3.0.1.23. Наверно, trad с $ВидДокумента перепутал.

хм Озадачен странно...
неужели не перенес Нерешительный
  

1&&2&&3
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: $ и внешняя база
Ответ #21 - 19. Июля 2010 :: 18:01
Печать  
vinogradoff писал(а) 09. Июля 2010 :: 09:08:
Подключаюсь к удаленной базе 1С sql таким образом:
Код
Выбрать все
rs = СоздатьОбъект("AccountsRecordset"); 


Если чё, AccountsRecordset с присоединёнными базами не работает. Подробно использование класса в этом сценарии рассмотрено в топике http://www.1cpp.ru/forum/YaBB.pl?num=1274374385/all.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Boog
Junior Member
**
Отсутствует



Сообщений: 95
Местоположение: Винница
Зарегистрирован: 23. Февраля 2009
Пол: Мужской
Re: $ и внешняя база
Ответ #22 - 20. Июля 2010 :: 06:33
Печать  
trad, так как, будет работать $ВидСправочникаПредставление или нет?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: $ и внешняя база
Ответ #23 - 20. Июля 2010 :: 06:43
Печать  
Boog писал(а) 20. Июля 2010 :: 06:33:
trad, так как, будет работать $ВидСправочникаПредставление или нет?

думаю что да.
на днях.
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: $ и внешняя база
Ответ #24 - 20. Июля 2010 :: 10:41
Печать  
trad писал(а) 20. Июля 2010 :: 06:43:
Boog писал(а) 20. Июля 2010 :: 06:33:
trad, так как, будет работать $ВидСправочникаПредставление или нет?

думаю что да.
на днях.

готово
http://trad.citykirov.ru/icpp3218_20100720.rar
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: $ и внешняя база
Ответ #25 - 20. Июля 2010 :: 11:09
Печать  
проверка:

|select
|  $ВидСправочника.Новый2   [а $ВидСправочника],
|  $ВидСправочника36.Новый2 [б $ВидСправочника],
|  $ВидСправочника.Новый2   [в $ВидСправочникаПредставление],
|  $ВидСправочника36.Новый2 [г $ВидСправочникаПредставление]
  

1&&2&&3
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: $ и внешняя база
Ответ #26 - 20. Июля 2010 :: 12:59
Печать  
Дим, слушай, а можно добавить "ИмяВида" и "ИмяВидаПредставление" как в 1sqlite у Саши Орефкова сделано?
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: $ и внешняя база
Ответ #27 - 20. Июля 2010 :: 13:45
Печать  
vandalsvq писал(а) 20. Июля 2010 :: 12:59:
Дим, слушай, а можно добавить "ИмяВида" и "ИмяВидаПредставление" как в 1sqlite у Саши Орефкова сделано?

запиши в багзиллу
  

1&&2&&3
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать