Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема какой-то баг... (число прочтений - 1335 )
BuZZZard
Full Member
***
Отсутствует



Сообщений: 112
Местоположение: Калининград
Зарегистрирован: 15. Октября 2007
Пол: Мужской
какой-то баг...
04. Мая 2008 :: 14:12
Печать  
Есть база 1С, в ней справочник Номенклатура(SC206).
И есть другая SQL-база, в ней таблица sprNomenclature.

Из 1С список элементов справочника Номенклатура выгружается в SQL-базу с использованием MetaDataWork.ЗначениеВСтрокуБД(СпрН.ТекущийЭлемент())

Далее....
Если попытаться получить список элементов из sql-базы таким образом:

DB = СоздатьОбъект("ODBCDatabase");
Если DB.Соединение("Driver={SQL Server}; Server=xxx; Database=xxx; uid=xxx; pwd=xxx;") = 0 Тогда
Сообщить(DB.ПолучитьОписаниеОшибки());
КонецЕсли;
RS = СоздатьОбъект("ODBCRecordset");
RS.УстБД(DB);
     
ТекстЗапроса = "select id_1c as [Элемент $Справочник.Номенклатура] from sprNomenclature";
ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса);

То некоторые элементы определяются, а некоторые нет Печаль
Единственная закономерность тут - определяются элементы с длиной ID менее 4 знака.
Пример:  21Z определяется, а 224A - не определяется и возвращается пустое значение.

Если выполнить запрос к текущей базе 1С то все работает пучком!

RS = СоздатьОбъект("ODBCRecordset");
ТекстЗапроса = "select ID as [Элемент $Справочник.Номенклатура] from SC206";
ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса);

В какую сторону копать? С чем это есть? И как дальше жить?
  
Наверх
ICQ  
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: какой-то баг...
Ответ #1 - 04. Мая 2008 :: 16:54
Печать  
Такое подозрение, что и те что определяются определяются неправильно Улыбка
Просто эти ИД задействованы в базе из которой выполняется запрос
Если хочется увидеть объекты ЭТОЙ базы делая запрос к ЧУЖОЙ надо делать левое соединение с родными справочниками по какому-то синхронизирующему полю (код, свой реквизит)
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: какой-то баг...
Ответ #2 - 05. Мая 2008 :: 01:09
Печать  
У меня вообще то такая конструкция работает. Только я не иду таким долгим путем:
SQL1 - > 1c - > SQL2

Просто с помощью линкованных серверов пишу из одной бвзы в другую:

Код
Выбрать все
	сТекстЗапроса = "
	|INSERT INTO
	| [dbo].Warehouse
	|(
	|	id1s,
	|	Descr,
	|	Code
	|)
	|(
	|SELECT
	|	  ID,
	|	Descr,
	|	Code
	|FROM [" + сИмяСервера1с + "].[" + сИмяБазы1с + "].[dbo].$Справочник.Склады
	|)";
 

  
Наверх
ICQ  
IP записан
 
BuZZZard
Full Member
***
Отсутствует



Сообщений: 112
Местоположение: Калининград
Зарегистрирован: 15. Октября 2007
Пол: Мужской
Re: какой-то баг...
Ответ #3 - 05. Мая 2008 :: 08:01
Печать  
Спасибо, братья!

Ответа я тут не нашел, но вы натолкнули на размышление.....
После чего тип поля ID_1C в SQL-базе был изменен с nvarchar на char.
И все! Все заработало!
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать