Запуск скрипта SQL #626728


#0 by ВежливаяТварь
Добрый день. Столкнулся с весьма интересной проблемой. Есть сторонняя программа (SalesWork) данные она тянет из Microsoft SQL 2005 Express. В этой программе есть один отчет. Причем сам текст запроса с помощью которого формируется отчет хранится в таблице в этой же Sql-базе. Вопрос: я же могу точно так же использовать этот запрос, но из 1с? И если могу то, пожалуйста, опишите основные шаги.
#1 by Rie
ADODB.Recordset - не подойдёт?
#2 by shuhard
[опишите основные шаги] - извлечь текст запроса - выполнить на стороне сервера - убедиться в абсурдности данных - перейти к пункту 1
#3 by ВежливаяТварь
Я не знаю что это, но спасибо за подсказку, сейчас поищу в гугле.
#4 by ВежливаяТварь
А почему данные будут абсурдны?
#5 by shuhard
получишь - узнаешь
#6 by ВежливаяТварь
то есть я не смогу вытянуть адекватные данные из Sql?
#7 by Rie
Можешь. Но надо будет преобразовать их в достойный 1С вид.
#8 by shuhard
бессодержательный вопрос мы не видели ни текста запроса, ни структуры данных, ни передаваемых параметров в общем случае - да, не сможешь
#9 by ВежливаяТварь
CREATE PROCEDURE swra_Sales_Desktop    SET @l = (SELECT CONVERT(INT, PrefValue) FROM tblGlobalSettings WHERE Pref_id = 52)    DECLARE @Products TABLE (Product_id INT)    JOIN tblProductTypes ON tblProductTypes.ProductType_Id = tblProducts.ProductType_Id    JOIN tblProductGroups ON tblProductGroups.ProdGroup_ID = tblProductTypes.ProdGroup_Id    JOIN tblProductCategory ON tblProductCategory.ProdCategory_ID = tblProductGroups.ProdCategory_ID SET DATEFORMAT DMY SET QUOTED_IDENTIFIER OFF    Sales.Price + Sales.Price/100*Sales.VAT [Накл, прод. цена с НДС],    Sales.Price * Sales.Product_Qty [Накл, сумма без НДС],    LEFT JOIN tblSalOutD ON tblSaloutH.Invoice_id = tblSaloutD.Invoice_id AND @l = 0    LEFT JOIN tblSalOutLocalD ON tblSaloutH.Invoice_id = tblSalOutLocalD.Invoice_id AND @l = 1    WHERE    (tblSalOutD.Invoice_id IS NOT NULL AND @l = 0)    OR (tblSalOutLocalD.Invoice_id IS NOT NULL AND @l = 1) ) Sales CROSS JOIN tblCustomers LEFT JOIN tblDistributors ON tblDistributors.Distr_id = tblCustomers.Cust_id LEFT JOIN tblWarehouses ON tblWarehouses.w_id = Sales.W_id LEFT JOIN tblDocTypes ON tblDocTypes.Doc_Type = Sales.Doc_Type LEFT JOIN tblGlobalLookup ON TableName='tblSaloutH' AND FieldName='Status' AND tblGlobalLookup.Status=2 AND tblGlobalLookup.LKey = Sales.status LEFT JOIN tblOutlets ON tblOutlets.Ol_id = Sales.Ol_id LEFT JOIN tblMerchandisers ON Sales.Merch_id = tblMerchandisers.Merch_id LEFT JOIN tblSupervisors ON tblSupervisors.Supervisor_id = tblMerchandisers.Supervisor_id LEFT JOIN tblCustomerSupervisors ON tblCustomerSupervisors.Supervisor_id = tblSupervisors.Supervisor_id LEFT JOIN tblOutletSubTypes ON tblOutletSubTypes.OLSubType_id = tblOutlets.OlSubType_id LEFT JOIN tblOutLetTypes ON tblOutLetTypes.OLtype_id = tblOutletSubTypes.OLType_ID LEFT JOIN tblOutLetGroups ON tblOutletGroups.OLGroup_id = tblOutLetTypes.OLGroup_id LEFT JOIN tblNetworks ON tblNetworks.Network_id = tblOutlets.Network_ID LEFT JOIN tblAreas ON tblAreas.Area_id = tblOutlets.Area_ID LEFT JOIN tblCities ON tblCities.City_id = tblAreas.City_id LEFT JOIN tblDistricts ON tblDistricts.District_id = tblCities.District_id LEFT JOIN tblRegions ON tblRegions.Region_id = tblDistricts.Region_id LEFT JOIN tblCountry ON tblCountry.Country_id = tblRegions.Country_id LEFT JOIN tblLocalProducts ON tblLocalProducts.LocalProductCode = Sales.LocalProductCode LEFT JOIN tblProducts ON tblProducts.Product_id = COALESCE(Sales.Product_id, tblLocalProducts.Product_id) LEFT JOIN tblProductTypes ON tblProductTypes.ProductType_id = tblProducts.ProductType_id LEFT JOIN tblProductGroups ON tblProductGroups.ProdGroup_ID = tblProductTypes.ProdGroup_ID LEFT JOIN tblProductCategory ON tblProductCategory.ProdCategory_ID = tblProductGroups.ProdCategory_ID WHERE    AND Sales.Date BETWEEN @Date_From AND @Date_To
#10 by shuhard
ставки: 95% - взлетит/ 5% упадёт
#11 by ВежливаяТварь
мне баланс нравится. Такой вопрос: я так понимаю мне нужно установить связь с sql, передать этот запрос, считать результат. А я смогу сделать как эта программа делает- передать не сам текст запроса а место в таблице где он хранится?
#12 by shuhard
х.з. ступай на sql.ru вопрос далеко за пределами 1С
#13 by ВежливаяТварь
Я понял. Всем огромное спасибо.
#14 by Fedot200
#15 by Rie
Передаёшь текст запроса. Получаешь результат запроса (recordset). И делаешь с ним, что хочешь. Не забывай только, что в SQL элементы справочников, документы и т.п. представлены своими UIDами.
#16 by 774816
это хранимая процедура которая возвращает набор данных, сам запрос хп не надо писать, нужно вызвать эту хп с параметрами, для этого тебе нужно ADODB.Command + ADODB.Recordset юзать
#17 by Fedot200
+14 этот код обзови, например Процедура УстановитьSQL_соединение(ТекстЗапроса)
#18 by Fedot200
Вот пример как вызывать:
#19 by ВежливаяТварь
Понял. сейчас попробую. Спасибо.
#20 by ВежливаяТварь
Добрый день. Ещё один вопрос возник. Сделал вот так: Текст запроса просто строка с запросом. А вот как педать парематеры в неё такие как @wtype_id  @wtype_id @w_id @w_id Date_From  @Date_To? Просто вписывать в строку? или есть более кошерные варианты?
#21 by ВежливаяТварь
Нашёл такой ответ, может кому нибудь пригодится:
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С