8.х программная перегрузка данных из базы SQL в базу 1с

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Александр 1906, 12 окт 2016.

  1. TopicStarter Overlay
    Александр 1906
    Offline

    Александр 1906 Опытный в 1С

    Регистрация:
    25 июн 2015
    Сообщения:
    351
    Симпатии:
    3
    Баллы:
    29
    Добрый день !!! есть таблица в базе данных Web-сервера в которую каждый час будут приходить данные, мне нужно раз в сутки грубо говоря переносить эту таблицу базу 1с по локальной сети, как это можно реализовать программно?
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Видимо нужно напрямую к скулю обращаться, использовать SQL-язык и дергать данные, потом их уже обрабатывать.
  3. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.580
    Симпатии:
    717
    Баллы:
    204
    Создать обработку, которая будет подключатся к базе SQL и запросом получать нужные данные, затем транслировать эти данные в объекты 1С.
  4. TopicStarter Overlay
    Александр 1906
    Offline

    Александр 1906 Опытный в 1С

    Регистрация:
    25 июн 2015
    Сообщения:
    351
    Симпатии:
    3
    Баллы:
    29
    Ребят но подскажите вот таким образом нужно подключатся к базе на SQL-сервере?
    Код:
    &НаКлиенте
    Процедура ВыполнитьОбработку(Команда)
    
        //Инициализация переменных
        ИмяСервера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   = Соединение;
            Сообщить("Успешное подключение!");
        Исключение
            Сообщить(ОписаниеОшибки());
            Возврат;
        КонецПопытки;
    
    КонецПроцедуры
    
  5. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.580
    Симпатии:
    717
    Баллы:
    204
    В первом приближении - верно.
  6. TopicStarter Overlay
    Александр 1906
    Offline

    Александр 1906 Опытный в 1С

    Регистрация:
    25 июн 2015
    Сообщения:
    351
    Симпатии:
    3
    Баллы:
    29
    может быть есть другие способы, если есть укажите их хотелось бы подробно разобраться с этим делом))
  7. TopicStarter Overlay
    Александр 1906
    Offline

    Александр 1906 Опытный в 1С

    Регистрация:
    25 июн 2015
    Сообщения:
    351
    Симпатии:
    3
    Баллы:
    29
    У меня установлен Denwer, я так понимаю на нем есть SQL сервер, вот я не пойму какое у него имя, по идеи должно быть 127.0.0.1, но 1с не находит его
  8. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    localhost у него имя
  9. TopicStarter Overlay
    Александр 1906
    Offline

    Александр 1906 Опытный в 1С

    Регистрация:
    25 июн 2015
    Сообщения:
    351
    Симпатии:
    3
    Баллы:
    29
    Пробовал и localhost и localhost\SQLEXPRESS пишет одну и туже ошибку Server не существует или доступ запрещен
  10. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.580
    Симпатии:
    717
    Баллы:
    204
    Что есть Denwer?
  11. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Денвер - это набор инструментов, обычно для отладки веб-сайтов
  12. TopicStarter Overlay
    Александр 1906
    Offline

    Александр 1906 Опытный в 1С

    Регистрация:
    25 июн 2015
    Сообщения:
    351
    Симпатии:
    3
    Баллы:
    29
    В нем есть MYSQL сервер
  13. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Имя SQL-сервера - localhost (это если по дефолту все ставили)
  14. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.580
    Симпатии:
    717
    Баллы:
    204
    Как бы MySQL и MSSQL - это абсолютно разные SQL сервера и строки подключения к ним абсолютно разные.

    Строки подклюения ODBC: www . connectionstrings . com
  15. TopicStarter Overlay
    Александр 1906
    Offline

    Александр 1906 Опытный в 1С

    Регистрация:
    25 июн 2015
    Сообщения:
    351
    Симпатии:
    3
    Баллы:
    29
    вот это я уже понял , для начала устанавливаю драйвер ODBC
  16. TopicStarter Overlay
    Александр 1906
    Offline

    Александр 1906 Опытный в 1С

    Регистрация:
    25 июн 2015
    Сообщения:
    351
    Симпатии:
    3
    Баллы:
    29
    Если долго мучится то что нибудь получится )))
    Код:
    Соединение = Новый COMОбъект("ADODB.Connection");
    
    СтрокаСоединения = "DRIVER=MySQL ODBC 5.3 Unicode Driver;SERVER=localhost;DataBase=sava;UID=sava;PWD=1980937";
    
    
    Сообщить(СтрокаСоединения);
    Соединение.ConnectionString = (СтрокаСоединения);
    
    //Далее открываем соединение
    Попытка
    Соединение.Open();
    Сообщить("MySQL база подключена!!!");
    Исключение
    Сообщить("Не могу подключиться к базе!!!");
    КонецПопытки;
    
    alexburn нравится это.
  17. KurganPX
    Offline

    KurganPX Новичок в 1С

    Регистрация:
    6 сен 2010
    Сообщения:
    24
    Симпатии:
    1
    Баллы:
    4
    Как предлагает делать 1с: Внешние источники данных http://v8.1c.ru/overview/Term_000000795.htm
    реализовано в : https://1c.ru/news/info.jsp?id=15064
    А как надо по уму: обращаться к сторонней СУБД за данными - всегда плохой тон. У вас же есть ВЭБ-сервер, что мешает рест сервис организовать или просто выдачу данных скриптом с использованием в 1с httpсоединения? WEB-скриптов конвертящих таблицы СУБД в xml или JSON -миллион в свободном доступе.
  18. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.580
    Симпатии:
    717
    Баллы:
    204
    Внешние источники данных - это полный фуфел, в них нельзя делать ни соединение, ни объединение, годятся только для простейшего запроса.

    По какой причине хождение за данными напрямую в БД является плохим тоном? Преобразование значений из xml/json да еще и через http - это имхо более плохой тон, чем напрямую ходить за данными в БД.
  19. KurganPX
    Offline

    KurganPX Новичок в 1С

    Регистрация:
    6 сен 2010
    Сообщения:
    24
    Симпатии:
    1
    Баллы:
    4
    По условиям задачи - таблица одна, что с чем вы объединять хотите?
    Сколько решений по соединению баз фронтенда и 1с на прямую через СУБД вы видели? Сколько из них являются тиражируемыми? Вариант без COM соединений, пусть даже в виде ADO предложите, ведь обратиться к MySQL или PostgreSQL через ADO можно только в теории.
    Причин не обращаться к СУБД напрямую, на самом деле, много, но самая очевидная, что вы обращаетесь не к метаданным и верификация любой операции со стороны 1с произойдет не в момент внесения изменений в структуру исходной таблицы или базы данных целиком , а в момент попытки чтения данных из базы.
    По той же самой причине - верификации ПО, проще использовать коннектор в виде элементарного API, о ошибке вы узнаете на уровне коннектора а не на уровне платформы, где её выявить будет гораздо сложнее и дольше.
  20. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.580
    Симпатии:
    717
    Баллы:
    204
    Таблица-то одна, но не известен запрос к этой таблице.

    Что значит "только в теории"? Работал с БД на PostgreSQL через ADO из 1С.

    Хорошо. Какая разница кто именно соообщить о том, что таблицы или поля таблицы не существует: API или сама СУБД, результат - один: придется выяснить новую структуру таблицы/БД.
    Или я что-то не допонимаю?

Поделиться этой страницей