Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Преобразования типа данных – Ссылка (число прочтений - 3603 )
Маевский А.В.
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 23. Февраля 2012
Преобразования типа данных – Ссылка
24. Февраля 2012 :: 08:38
Печать  
Добрый день, уважаемые Знатоки! Надеюсь на вашу помощь!
Передо мной поставили задачу связать две базы данных через ADO. Первая база это родная 1С 8.1 а вторая «самописная» MS SQL.  Я в 1С создал справочник Номенклатуры, посмотрел через  SQL Server Management Studio на создавшуюся таблицу, с полями:
Ссылки (_IDRRef) типа binary(16)
_Code типа nchar(9)
_Description типа nvarchar(25)
Создал в сторонней базе данных MS SQL  таблицу с теми же полями. Хочу разобраться как мне записать в стороннюю базу ссылку на объект справочника, а затем чтобы ее можно было обратно считать.
Код
Выбрать все
	Запрос = Новый Запрос();
Запрос.Текст="ВЫБРАТЬ
		 |	Номенклатура.Ссылка,
		 |	Номенклатура.Код
		 |ИЗ
		 |	Справочник.Номенклатура КАК Номенклатура";
ЗапросТекущий=Запрос.Выполнить();
ВыбТек = ЗапросТекущий.Выбрать();
ВыбТек.Следующий();

	Connection = Новый COMОбъект("ADODB.Connection");
Connection.ConnectionTimeOut =600;
Connection.CursorLocation = 3;
  Connection.Open("Provider=SQLOLEDB;Password=955938;Data Source=andrey;Persist Security Info=True;User ID=user_1c;Initial Catalog=sait");
Command = Новый COMОбъект("ADODB.Command");
Command.ActiveConnection = Connection;

Command.CommandText ="INSERT INTO	Table_1 (Code) VALUES	('" + ВыбТек.Ссылка + "')";
Command.CommandType = 1;
RecordSet = Новый ComОбъект("ADODB.RecordSet");
RecordSet.CursorType = 3;
RecordSet.LockType = 2;
RecordSet = Command.Execute();
 


При запуске выдается ошибка.
Код
Выбрать все
 Implicit conversion from data type varchar to binary is not allowed. Use the CONVERT function to run this query. 


Понятно, что тип ссылки нужно преобразовать,. Но не понятно как его нужно преобразовать и при обратном считывании в 1с его снова сделать ссылкой.
Конечно, можно обойтись другими реквизитами: Номером, Наименованием и уже потом по ним искать в справочнике ссылку. Но хотелось, бы научиться преобразовывать саму ссылку.
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Преобразования типа данных – Ссылка
Ответ #1 - 24. Февраля 2012 :: 08:49
Печать  
Т.е. ты не посмотрев, что запихал в Command.CommandText пытаешься у нас что-то выпытать?

Для начала определись, зачем тебе туда данные, и по каким критериям будешь связывать.
Только после этого начинай думать о запросах ... но сначала советую почитать хоть азы теории БД.

P.S.: Это раздел по запросам семерки, для восьмерки существует отдельный раздел.
  
Наверх
 
IP записан
 
Маевский А.В.
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 23. Февраля 2012
Re: Преобразования типа данных – Ссылка
Ответ #2 - 24. Февраля 2012 :: 09:03
Печать  
Раздел для 8 я не нашел. Извиняюсь.
Я понимаю,  вашу критику. И хотел бы изменить вопрос.
В сторонней базе данных мне ссылку использовать не надо, мне нужно ее только сохранить в таблице. А лишь после возвращения в базу 1с, мне нужно будет использовать эту ссылку. Поэтому, если это легче, то в качестве ключевого поля таблицы можно сделать поле номер справочника, а ссылку хранить в любом виде (в этой таблице).
На счет ошибки в запросе, вы правы. Я пробовал изменять различные типы данных для хранения ссылки. Но не разобрался, в каком типе данных я могу сохранить ссылку ?
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Преобразования типа данных – Ссылка
Ответ #3 - 24. Февраля 2012 :: 09:19
Печать  
Ссылку нельзя сохранить. Но есть другие варианты:
  • Код
  • Полный код
  • Уникальный идентификатор
  • Еще чего
Выбор явно не за нами...
Все зависит от того, как она потом планирует использоваться...
  
Наверх
 
IP записан
 
Маевский А.В.
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 23. Февраля 2012
Re: Преобразования типа данных – Ссылка
Ответ #4 - 24. Февраля 2012 :: 09:43
Печать  
Спасибо за ответ!
Я планирую следующую систему. Переношу методом ADO данные из справочника Номенклатура, в стороннюю базу. Затем программно С# обращаюсь к этой таблице, добавляю в имеющийся целочисленный столбец числовые данные по этой номенклатуре. В 1с запускаю обработку и посредством ADO считываю данные этой таблицы обратно в 1С. Используя их, создаю документ, в котором мне нужно вписать ссылку хранившуюся в таблицы и числовые данные .
Мне понятно, как по коду найти сам объект Справочника. Я надеялся, что можно просто сохранить ссылку (в любом виде), а затем преобразовать ее обратно.
Если, я не ошибаюсь, я читал как преобразовать ссылку в текст, а затем его преобразовать обратно. Но не могу вспомнить как?
  
Наверх
 
IP записан
 
Маевский А.В.
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 23. Февраля 2012
Re: Преобразования типа данных – Ссылка
Ответ #5 - 24. Февраля 2012 :: 10:48
Печать  
Спасибо, всем откликнувшимся. Подведем итог.
Сохранить ссылку в сторонней базе невозможно, да и не надо. Лучше идентифицировать элементы справочников  по коду, наименованию.
Желаю Удачи!!! Спасибо форуму.
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Преобразования типа данных – Ссылка
Ответ #6 - 24. Февраля 2012 :: 14:05
Печать  
Слыш дружище!
А в 8.2 уже есть отдельно Внешние источники данных.
Че ты паришся?
Туда могеш подключать любоую базу хоть твою хоть 1С 7.7 хоть вааше какую хош!
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Преобразования типа данных – Ссылка
Ответ #7 - 27. Февраля 2012 :: 13:58
Печать  
А чем уникальныйИдентификатор не устраивает?
Это фактически и есть ссылка, и не зависит от кода/наименования и т.п.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Преобразования типа данных – Ссылка
Ответ #8 - 03. Марта 2012 :: 09:26
Печать  
А почему бы в 8-ке в таблице не создать дополнительное поле и туда пихать что надо? (или в 8-ке нет механизма обхода верификации как в 7.7 методом подмены DD?)
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать