Версия для печати темы (https://pro1c.org.ua/index.php?s=0686a2390d291dc4ec30c506bc599181&showtopic=46995)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Конвертация SQL запроса на язык 1С

Автор: xtd 02.08.18, 12:27

Есть такой SQL запрос:

SQL
"SELECT DISTINCT s.description, c.PartsDataSupplierArticleNumber FROM article_oe a
JOIN manufacturers m ON m.id=a.manufacturerId
JOIN article_cross c ON c.OENbr=a.OENbr
JOIN suppliers s ON s.id=c.SupplierId
WHERE a.datasupplierarticlenumber='". $number ."' AND a.supplierid='" . $brand_id . "'


Как это написать на языке запросов 1С?

Автор: Vofka 02.08.18, 12:39

xtd, прямые запросы к СУБД делаются с использованием языка запросов СУБД. Т.е. запрос как есть, так и должен остаться.

Автор: xtd 02.08.18, 13:15

Vofka @ Сегодня, 13:39 * ,

Подключаю таблицы через ODBC и строю запрос через Внешние источники данных.

Автор: Vofka 02.08.18, 13:23

Что означает эта фраза:

Цитата(xtd @ 02.08.18, 14:15) *
Подключаю таблицы через ODBC

?

Автор: xtd 02.08.18, 13:42

Vofka @ Сегодня, 14:23 * ,

Есть БД MySQL, устанавливаем http://pro1c.org.ua/redirect.php?https://dev.mysql.com/downloads/connector/odbc/3.51.html, в 1С добавляем Внешний источник данных, в нем добавляем таблицы БД MySQL с помощью строки подключения к ODBC.

Автор: sava1 02.08.18, 14:31

для примера через одбц

    ПутьКБД ="169.254.176.133:mDb";
    СтрокаСоединения = "Driver=Firebird/InterBase(r) driver;Uid=SYSDBA;Pwd=masterkey; DbName=" + СокрП(ПутьКБД) + ";Charset=WIN1251; Autoquoted=1";
    Соединение = Новый COMОбъект("ADODB.Connection");
    Соединение.ConnectionString = СтрокаСоединения;
    //Соединение.ConnectionTimeOut = 1200;
    //Соединение.CursorLocation = 3;
    Попытка
        Соединение.Open(Соединение.ConnectionString);        
    Исключение
        Сообщить("Невозможно установить соединение с Firebird:
        | "+ОписаниеОшибки());
        Возврат;
    КонецПопытки;
    //
    //Команда = Новый COMОбъект("ADODB.Command");
    //НаборЗаписей = Новый COMОбъект("ADODB.RecordSet");
    ТекстЗапроса = "select * from ""getShiftSalesByOrder""";    
    Попытка
        ВыборкаСтрокС = Соединение.Execute(ТекстЗапроса);
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;        
    КонецПопытки;
    //
    тз = ТабличнаяЧасть1.Выгрузить();
    тз.Очистить();
    Пока ВыборкаСтрокС.EOF=0 Цикл //Цикл по записям
        нс = тз.Добавить();
        нс.Топливо_ГСМ = СокрЛП(ВыборкаСтрокС.Fields("FuelName").value);
        нс.Топливо_ИД = СокрЛП(Строка(Формат(ВыборкаСтрокС.Fields("FuelID").value,"ЧГ=")));
        нс.нпп =1;
        ВыборкаСтрокС.MoveNext(); //Переходим к след. записи
    КонецЦикла;



Автор: Vofka 02.08.18, 14:31

SELECT DISTINCT
    s.description,
    c.PartsDataSupplierArticleNumber
FROM
    ВнешнийИсточникДанных.ИМЯ_МОЕГО_ИСТОЧНИКА.Таблица.article_oe a
    JOIN ВнешнийИсточникДанных.ИМЯ_МОЕГО_ИСТОЧНИКА.Таблица.manufacturers m ON m.id=a.manufacturerId
    JOIN ВнешнийИсточникДанных.ИМЯ_МОЕГО_ИСТОЧНИКА.Таблица.article_cross c ON c.OENbr=a.OENbr
    JOIN ВнешнийИсточникДанных.ИМЯ_МОЕГО_ИСТОЧНИКА.Таблица.suppliers s ON s.id=c.SupplierId
WHERE
    a.datasupplierarticlenumber=&number AND a.supplierid=&brand_id

Автор: xtd 02.08.18, 15:44

Vofka @ Сегодня, 15:31 * ,

Всем спасибо!

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua