Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Загрузка в 1С из SQL 2000
|
|||
|---|---|---|---|
|
#18+
Добрый день!Стоит такая задача: Подключится к SQL 2000, взять с таблицы данные. В 1С есть табличка, сравнить эти таблицы. Показать те данные которых нет либо в первой таблице, либо во второй. У меня не получается на начальном этапе, не могу подключиться к SQL, в VB обычно указывалось в Password='';User ID=''; пустые значения, а тут так не проходит, пробовал подставлять свои данные, тоже ругается. Как подключиться правильно, подключение можно совершать с windows аутентификацией. вот листинг: Процедура Сформировать() стрПодключения = "Provider=SQLOLEDB;Data Source=SQL_Pro2;Password=' ';User ID=' ';Initial Catalog=Sbyt"; Connection = Новый COMОбъект("ADODB.Connection"); Connection.OpenServer=стрПодключения; RS=Новый ComОбъект("ADODB.Recordset"); RS.Open("SELECT NomDok FROM dbo.tblPltreb2"); пока RS.EOF()=0 Цикл номер=Rs.fields("NomDok").Value; RS.MoveNext(); КонецЦикла; RS.Close(); Connection.close(); КонецПроцедуры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 15:15 |
|
||
|
Загрузка в 1С из SQL 2000
|
|||
|---|---|---|---|
|
#18+
Александр Великий, если на скуль есть пароль то нужно его указывать и пользователя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 15:57 |
|
||
|
Загрузка в 1С из SQL 2000
|
|||
|---|---|---|---|
|
#18+
Zerro, Так в том то и фишка, когда на прямую в SQL я подключаюсь, то там виндовс аутентификация стоит, ничего вводит не нужно, тут я пробовал и с пустым и с вводом данных, не пускает \ Процедура Сформировать() стрПодключения = "Provider=SQLOLEDB;Data Source=SQL_Pro2;Password='';User ID='';Initial Catalog=Sbyt;"; Connection = Новый ComОбъект("ADODB.Connection"); Connection.ConnectionString = "Provider=SQLOLEDB.1;Password=D606;Persist Security Info=True;User ID=u27;Initial Catalog=SBYT;Data Source=SQL_Pro2"; Connection.Open(); //Connection.Open(стрПодключения); RS=Новый ComОбъект("ADODB.Recordset"); RS.ActiveConnection = Connection; RS.CursorType = 3; RS.LockType = 1; RS.Open("SELECT NomDok FROM dbo.tblPltreb2"); пока RS.EOF()=0 Цикл номер=Rs.fields("NomDok").Value; RS.MoveNext(); КонецЦикла; RS.Close(); Connection.close(); Она при запуске ругается на Connection.Open();, я его пробовал как Connection.OpenServer();-так же ругается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 16:21 |
|
||
|
Загрузка в 1С из SQL 2000
|
|||
|---|---|---|---|
|
#18+
ИмяСервера = "XXX"; ИмяБазы = "infanalit"; ИмяПользователя = "sa"; Пароль = ""; стрПодключения = "Provider=SQLOLEDB.1; |Pwd="+Пароль+"; |User ID="+ИмяПользователя+"; |Data Source=" + ИмяСервера + "; |Initial Catalog=" + ИмяБазы + ""; АДОДБКоннект = Новый COMОбъект("ADODB.Connection"); АДОДБКоннект.ConnectionTimeOut =300; АДОДБКоннект.CommandTimeOut =300; АДОДБКоннект.CursorLocation = 2; //adUseServer Попытка //!!!!!!!!!!!!!!!!!!!!!!!!!!!!! АДОДБКоннект.Open(стрПодключения); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Исключение АДОДБКоннект.Close(); Сообщить("Невозможно установить соединение с SQL-сервером " + ИмяСервера); Возврат; КонецПопытки; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 19:08 |
|
||
|
Загрузка в 1С из SQL 2000
|
|||
|---|---|---|---|
|
#18+
Александр ВеликийZerro, Так в том то и фишка, когда на прямую в SQL я подключаюсь, то там виндовс аутентификация стоит, ничего вводит не нужно Ну так и используйте виндовс аутентификацию... стрПодключения = "Provider=SQLOLEDB;Data Source=SQL_Pro2;Initial Catalog=Sbyt; Integrated Security=True "; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2011, 02:57 |
|
||
|
Загрузка в 1С из SQL 2000
|
|||
|---|---|---|---|
|
#18+
Во первых, на VB или 1C разницы нет. Во вторых - из какой ОСи подключаетесь? Если из Win2k8 то там просто нет драйверов на MS SQL 2000 - ситуация не раз описанная на форумах по 1С. В третьих - ну посмотри те же вы наконец код ошибки который возвращает ADO. Коллекция Errors у ADODB.Connection. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2011, 08:57 |
|
||
|
Загрузка в 1С из SQL 2000
|
|||
|---|---|---|---|
|
#18+
пишет ошибку {Форма.Форма1.Форма(26)}: Ошибка при вызове метода контекста (Open) Connection.Open(); по причине: Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Login failed for user 'u274274'. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2011, 09:03 |
|
||
|
Загрузка в 1С из SQL 2000
|
|||
|---|---|---|---|
|
#18+
Александр Великий, Значит пользователь 'u274274' не имеет соответствующего имени входа на SQL server. Доверительный вход вовсе не означает, что на сервер можно войти под любой учеткой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2011, 16:41 |
|
||
|
Загрузка в 1С из SQL 2000
|
|||
|---|---|---|---|
|
#18+
VladimirKr, нужно было вот так указать на самом деле стрПодключения = "driver={SQL Server};server=Sql_Pro2;uid='';pwd='';database=Sbyt;trusted_connection=yes"; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2011, 09:19 |
|
||
|
Загрузка в 1С из SQL 2000
|
|||
|---|---|---|---|
|
#18+
Вопрос стоит про вариант решения: Нужно из SQL 2000 взять данные, с определенными столбцами и условием и сравнить с данными с 1C базы. Как лучше это сделать? Ну в том плане, что нужно сделать чтоб их сравнить? Нужно ли загонять таблицу с SQL во временную? Как лучше это сделать с максимальным быстродействием? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2011, 09:23 |
|
||
|
Загрузка в 1С из SQL 2000
|
|||
|---|---|---|---|
|
#18+
Александр ВеликийВопрос стоит про вариант решения: Нужно из SQL 2000 взять данные, с определенными столбцами и условием и сравнить с данными с 1C базы. Как лучше это сделать? Ну в том плане, что нужно сделать чтоб их сравнить? Нужно ли загонять таблицу с SQL во временную? Как лучше это сделать с максимальным быстродействием? Если данные есть в таблице то не нужно временную.если нет - делай запрос. Как писали так и делать. вариантов не много ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2011, 09:54 |
|
||
|
Загрузка в 1С из SQL 2000
|
|||
|---|---|---|---|
|
#18+
Александр ВеликийВопрос стоит про вариант решения: Нужно из SQL 2000 взять данные, с определенными столбцами и условием и сравнить с данными с 1C базы. Как лучше это сделать? Ну в том плане, что нужно сделать чтоб их сравнить? Нужно ли загонять таблицу с SQL во временную? Как лучше это сделать с максимальным быстродействием? Я делал подобные отчеты. Можно использовать систему компоновки данных (это если у вас 1С 8.1 и выше) данные из внешнего источника загоняете в таблицу значений и используете ее в качестве источника данных для СКД. А уже в СКД можете соединять со своими данными как угодно. Пример использования ТЗ для СКД можно найти в демо конфигурации для платформы 8.1 (может и в демо для 8.2 есть, не смотрел). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2011, 09:55 |
|
||
|
Загрузка в 1С из SQL 2000
|
|||
|---|---|---|---|
|
#18+
DmitriyZ, Скинуть пример можешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2011, 08:30 |
|
||
|
Загрузка в 1С из SQL 2000
|
|||
|---|---|---|---|
|
#18+
У меня получается получить данные с SQL вот как теперь их сравнить в СКД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2011, 08:31 |
|
||
|
Загрузка в 1С из SQL 2000
|
|||
|---|---|---|---|
|
#18+
Александр ВеликийУ меня получается получить данные с SQL вот как теперь их сравнить в СКД? Пример есть в демо конфигурации для платформы 8.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2011, 11:11 |
|
||
|
Загрузка в 1С из SQL 2000
|
|||
|---|---|---|---|
|
#18+
RS=Новый ComОбъект("ADODB.Recordset"); RS.ActiveConnection = АДОДБКоннект; RS.CursorType = 3; RS.LockType = 1; Запрос = Новый Запрос; Запрос.УстановитьПараметр("ДатаВыбора",ДатаВыбора); Запрос.Текст = "SELECT tblPltreb2.DataOtg, tblPltreb2.RegNWN, Sum(tblPltreb2.Summa) AS Sum_Summa |FROM tblPltreb2 |WHERE ( |((Substring(lTrim(Str([RegNWN])),3,1))=5 |Or (Substring(lTrim(Str([RegNWN])),3,1))=7) |AND ((tblPltreb2.SZ)=0) |AND ((tblPltreb2.SD)<>9)) |GROUP BY tblPltreb2.DataOtg, tblPltreb2.RegNWN, tblPltreb2.GodMes | HAVING (DataOtg = &ДатаВыбора |ORDER BY tblPltreb2.DataOtg" ; RS.Open(Запрос.Текст); Имеется листинг, как туда загнать дату для отбора - ДатаВыбора Не получается что то в запрос его загнать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2011, 15:35 |
|
||
|
Загрузка в 1С из SQL 2000
|
|||
|---|---|---|---|
|
#18+
Ну сделай чтото типа ДатаВФорматеSQL = ФОРМАТ(ДатаВыбора,"гггг-ММ-дд"); | HAVING (DataOtg ='"+ДатаВФорматеSQL+"') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2011, 16:11 |
|
||
|
Загрузка в 1С из SQL 2000
|
|||
|---|---|---|---|
|
#18+
rigusНу сделай чтото типа ДатаВФорматеSQL = ФОРМАТ(ДатаВыбора,"гггг-ММ-дд"); | HAVING (DataOtg ='"+ДатаВФорматеSQL+"') ДатаВФорматеSQL =" " С формы ДатаВыбора называется поле ввода, оно не присваивается дата ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2011, 16:30 |
|
||
|
Загрузка в 1С из SQL 2000
|
|||
|---|---|---|---|
|
#18+
Тебе нужно чтобы SQL запрос выглядел Так "HAVING (DataOtg ='2011-07-22' |ORDER BY tblPltreb2.DataOtg" или так "HAVING (DataOtg >='2011-07-22' and DataOtg <'2011-07-23' |ORDER BY tblPltreb2.DataOtg" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2011, 16:53 |
|
||
|
Загрузка в 1С из SQL 2000
|
|||
|---|---|---|---|
|
#18+
rigusТебе нужно чтобы SQL запрос выглядел Так "HAVING (DataOtg ='2011-07-22' |ORDER BY tblPltreb2.DataOtg" или так "HAVING (DataOtg >='2011-07-22' and DataOtg <'2011-07-23' |ORDER BY tblPltreb2.DataOtg" Вот так "HAVING (DataOtg ='2011-07-22' |ORDER BY tblPltreb2.DataOtg" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2011, 07:50 |
|
||
|
Загрузка в 1С из SQL 2000
|
|||
|---|---|---|---|
|
#18+
Александр ВеликийrigusТебе нужно чтобы SQL запрос выглядел Так "HAVING (DataOtg ='2011-07-22' |ORDER BY tblPltreb2.DataOtg" или так "HAVING (DataOtg >='2011-07-22' and DataOtg <'2011-07-23' |ORDER BY tblPltreb2.DataOtg" Вот так "HAVING (DataOtg ='2011-07-22' |ORDER BY tblPltreb2.DataOtg" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2011, 07:52 |
|
||
|
Загрузка в 1С из SQL 2000
|
|||
|---|---|---|---|
|
#18+
Александр ВеликийАлександр Великийпропущено... Вот так "HAVING (DataOtg ='2011-07-22' |ORDER BY tblPltreb2.DataOtg" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2011, 07:54 |
|
||
|
Загрузка в 1С из SQL 2000
|
|||
|---|---|---|---|
|
#18+
Александр Великий, Все нормально только вот "16.07.2011 0:00:00", оно должно в SQL входить "07.16.2011 0:00:00", тогда работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2011, 10:03 |
|
||
|
Загрузка в 1С из SQL 2000
|
|||
|---|---|---|---|
|
#18+
Александр ВеликийАлександр Великий, Все нормально только вот "16.07.2011 0:00:00", оно должно в SQL входить "07.16.2011 0:00:00", тогда работает вопрос решается | HAVING (DataOtg =CONVERT(DATETIME,'"+ДатаВФорматеSQL+"',104)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2011, 10:37 |
|
||
|
|

start [/forum/topic.php?fid=28&msg=37363489&tid=1521159]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
17ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 332ms |

| 0 / 0 |
