Подключение к SQL-серверу для управляемого приложения

Ответить
Администратор
Site Admin
Сообщения: 53
Зарегистрирован: Чт май 25, 2017 11:44 am

Подключение к SQL-серверу для управляемого приложения

Сообщение Администратор » Вт дек 11, 2018 7:18 pm

взято тут: http://tavalik.ru/podklyuchenie-k-sql-serveru-iz-1s/

Код: Выделить всё

&НаКлиенте
Процедура ВыполнитьОбработку(Команда)

    //Инициализация переменных
    ИмяСервераSQL = "WIN2012\TEST_SQL";
    ПользовательSQL = "UserDB";
    ПарольSQL = "Pass123456";
    БазаДанныхSQL = "TestDB";
    ТаблицаSQL = "Table_1";


    /////////////////////////////////////////
    //Подключение к SQL-серверу
    Попытка
        Соединение  = Новый COMОбъект("ADODB.Connection");
        Команда     = Новый COMОбъект("ADODB.Command");
        Выборка     = Новый COMОбъект("ADODB.RecordSet");
        Соединение.ConnectionString =
            "driver={SQL Server};" +
            "server="+ИмяСервераSQL+";"+
            "uid="+ПользовательSQL+";"+
            "pwd="+ПарольSQL+";"+
            "database="+БазаДанныхSQL+";";
        Соединение.ConnectionTimeout = 30;
        Соединение.CommandTimeout = 600;
        //Открытие соединение
        Соединение.Open();
        Команда.ActiveConnection   = Соединение;
        Сообщить("Успешное подключение!");
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;


    /////////////////////////////////////////
    //Добавляем запись в таблицу
    ТекДата = ТекущаяДата();
    ТекСтрока = "Запись строки";
    ТекЧисло = 123456;

    //Приобразуем данные
    Если НЕ ЗначениеЗаполнено(ТекДата) Тогда
        //Для пустой даты необходимо отправлять 01.01.1753
        ТекДата = Дата(1753,1,1);
    КонецЕсли;
    ТекЧисло = Формат(ТекЧисло,"ЧГ="); //Удаляем пробелы

    ТекстТекущейИнструкции =
        "INSERT INTO "+ТаблицаSQL+"
        |([C_DateTime], [C_Char], [C_Numeric])
        |VALUES ('"+ТекДата+"', N'"+ТекСтрока+"', '"+ТекЧисло+"')";
    Попытка
        Соединение.Execute(ТекстТекущейИнструкции,,128);
        Сообщить("Запись добавлена!");
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;


    /////////////////////////////////////////
    //Обновляем записи в таблице с C_Numeric = 123456
    ТекЧисло = 123456;
    ТекДатаНовая = Дата(1,1,1);
    ТекСтрокаНовая = "Обновленная запись строки";

    //Приобразуем данные
    Если НЕ ЗначениеЗаполнено(ТекДатаНовая) Тогда
        //Для пустой даты необходимо отправлять 01.01.1753
        ТекДатаНовая = Дата(1753,1,1);
    КонецЕсли;
    ТекЧисло = Формат(ТекЧисло,"ЧГ="); //Удаляем пробелы

    ТекстТекущейИнструкции =
        "UPDATE "+ТаблицаSQL+"
        |SET
        |   [C_Char] = N'"+ТекСтрокаНовая+"',
        |   [C_DateTime] = '"+ТекДатаНовая+"'
        |WHERE [C_Numeric]='"+ТекЧисло+"'";
    Попытка
        Соединение.Execute(ТекстТекущейИнструкции,,128);
        Сообщить("Запись обновлена!");
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;

    /////////////////////////////////////////
    //Читаем записи
    ТекстИнструкции =
        "SELECT
        |   [C_DateTime], [C_Char], [C_Numeric]
        |FROM "+ТаблицаSQL;
    Попытка
        Команда.CommandText = ТекстИнструкции;
        Выборка = Команда.Execute();
        Если Выборка.BOF = Ложь Тогда
            Выборка.MoveFirst();
            Пока Выборка.EOF = Ложь Цикл
                Сообщить("[C_DateTime]="+Дата(Выборка.Fields("C_DateTime").Value)
                    +", [C_Char]="+СокрЛП(Выборка.Fields("C_Char").Value)
                    +", [C_Numeric]="+Число(Выборка.Fields("C_Numeric").Value));
                Выборка.MoveNext();
            КонецЦикла;
        КонецЕсли;
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;

    /////////////////////////////////////////
    //Удаляем записи в таблице с C_Numeric = 123456
    ТекЧисло = 123456;
    ТекЧисло = Формат(ТекЧисло,"ЧГ="); //Удаляем пробелы

    ТекстТекущейИнструкции =
        "DELETE FROM "+ТаблицаSQL+"
        |WHERE [C_Numeric]='"+ТекЧисло+"'";
    Попытка
        Соединение.Execute(ТекстТекущейИнструкции,,128);
        Сообщить("Запись удалена!");
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;


    /////////////////////////////////////////
    //Закрытия соединения
    Попытка
        Соединение.Close();
        Сообщить("Соединение закрыто!");
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;

КонецПроцедуры
Результат работы в 1С:Предприятии:
1.png
1.png (12.71 КБ) 739 просмотров

KirillEE
Сообщения: 1
Зарегистрирован: Пт фев 22, 2019 1:05 pm

Подключение к SQL серверу для управляемого приложения

Сообщение KirillEE » Вт окт 08, 2019 11:44 am

Вопрос к сисадминам.
Нужно подключить SQL Server Management Studio с домашнего компьютера к SQL серверу в локальной сети организации. Проблема в том, что IP у организации "серый". Подскажите варианты.

Администратор
Site Admin
Сообщения: 53
Зарегистрирован: Чт май 25, 2017 11:44 am

Re: Подключение к SQL-серверу для управляемого приложения

Сообщение Администратор » Вт окт 08, 2019 5:41 pm

поднимите VPN соединение с компом с SQL-сервером или компом находящимся с ним в одной локалке
или RDP -соединение с компом в локалке на стороне SQL сервера

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость