1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Sql-запрос Из 1с

Тема в разделе "Базы данных и администрирование", создана пользователем SeverBap, 6 ноя 2012.

  1. SeverBap

    SeverBap Well-Known Member

    Репутация:
    0
    Регистрация:
    18 сен 2007
    Сообщения:
    451
    Симпатии:
    0
    Нужно на SQL выполнить запрос, результатом которого будет строковое значение хранимое в @filename
    Код:
    	Если НЕ ПодключитьCOMОбъект(Путь) Тогда 
    Возврат "";	
    КонецЕсли;
    Команда = Новый COMОбъект("ADODB.Command");
    Команда.CommandTimeOut = 150000;
    Команда.NamedParameters = True;
    Команда.CommandType =1;
    Команда.ActiveConnection = COMСоединение;
    СтрокаКоманда=
    "declare @aln nvarchar(10)
    |declare @bln nvarchar(10)
    |declare @idrecdir int
    |declare @ts nvarchar(50)
    |declare @path nvarchar(1000)
    |declare @id nvarchar(50)
    |declare @filename nvarchar(150)
    |SET @id='407B9434-8B92-4A23-9725-32297F14B11E'
    |select top 1 @aln=case when [ALineNum]<[BLineNum] then [ALineNum] else [BLineNum] end,
    |@bln=case when [BLineNum]>[ALineNum] then [BLineNum] else [ALineNum] end,
    |@idrecdir=[IdRecDir], 
    |@ts=replace(convert(nvarchar(10), [TimeStart], 121),'-','_')+'__'+replace(convert(nvarchar(20), [TimeStart], 114),':','_') FROM [oktell].[dbo].[A_Stat_Connections_1x1]
    |where Id=@id and isrecorded=1
    |set @path='C:\Program Files (x86)\oktell\Server\RecordedFiles\'
    |if (@idrecdir>0)
    |select @path=path from [oktell].[dbo].[A_Stat_RecordDirectories] where id=@idrecdir
    |set @filename=@path+replace(substring(@ts, 1, 10),'_','')+'\'+substring(@ts, 13, 2)+substring(@ts, 16, 2)+'\mix_'+@aln+'_'+@bln+'__'+@ts+'.wav';
    |";
    Команда.CommandText = СтрокаКоманда;	 //"SELECT [TimeStart] FROM [oktell].[dbo].[A_Stat_Connections_1x1] WHeRE ID ='6A001395-1278-46A6-AE85-57F69A991CAB'";	//"+ВРег(СокрЛП(Результат))+"'";  //6A001395-1278-46A6-AE85-57F69A991CAB
    rs = Новый COMОбъект("ADODB.Recordset");
    RS = Команда.Execute();
    Для сч=1 по RS.Fields.Count Цикл
    сообщить(RS.Fields(0).Value);
    КонецЦикла; 
    COMСоединение.close();
    Запрос выполняется но результат незнаю как получить!
     
  2. puh14

    puh14 Well-Known Member

    Репутация:
    0
    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    В профайлере пробовали запустить? мне кажется что это таки не запрос, а команда.
     
  3. SeverBap

    SeverBap Well-Known Member

    Репутация:
    0
    Регистрация:
    18 сен 2007
    Сообщения:
    451
    Симпатии:
    0
    Как тогда получить результат команды?
     
  4. SeverBap

    SeverBap Well-Known Member

    Репутация:
    0
    Регистрация:
    18 сен 2007
    Сообщения:
    451
    Симпатии:
    0
    Рабочий вариант с хранимой процедурой:
    в 1С
    Код:
    Команда = Новый COMОбъект("ADODB.Command");
    Команда.ActiveConnection = COMСоединение;
    Команда.CommandTimeOut	 = 150000;
    Команда.CommandType	 = 4;
    Команда.CommandText = "MyGetRecordPatch";
    Команда.Parameters(1).value=СокрЛП(ИдентификаторЗвонка);
    Команда.Prepared = true; 
    Команда.NamedParameters	= true; 
    RS=Команда.Execute();
    ЗначениеВозврата="";
    Если RS.State=1 Тогда 
    ЗначениеВозврата=СокрЛП(RS.Fields(0).value);
    КонецЕсли;	
    COMСоединение.close();
    Возврат ЗначениеВозврата;
    в хранимой процедуре:
    Код:
    USE [oktell]
    GO
    /****** Object: StoredProcedure [dbo].[MyGetRecordPatch]	Script Date: 11/13/2012 16:52:30 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:		Afonkin
    -- Create date: 13.11.2012
    -- Description:	Получение пути к файлу записи разговора
    -- =============================================
    ALTER PROCEDURE [dbo].[MyGetRecordPatch] 
    -- Add the parameters for the stored procedure here
    @id nvarchar(50)
    AS
    BEGIN
    declare @aln nvarchar(10)
    declare @bln nvarchar(10)
    declare @idrecdir int
    declare @ts nvarchar(50)
    declare @path nvarchar(1000)
    declare @filename nvarchar(1000)
    select top 1 @aln=case when [ALineNum]<[BLineNum] then [ALineNum] else [BLineNum] end,
    @bln=case when [BLineNum]>[ALineNum] then [BLineNum] else [ALineNum] end,
    @idrecdir=[IdRecDir], 
    @ts=replace(convert(nvarchar(10), [TimeStart], 121),'-','_')+'__'+replace(convert(nvarchar(20), [TimeStart], 114),':','_') FROM [oktell].[dbo].[A_Stat_Connections_1x1]
    where Id=@id and isrecorded=1
    set @path='C:\Program Files (x86)\oktell\Server\RecordedFiles\'
    if (@idrecdir>0)
    select @path=path from [oktell].[dbo].[A_Stat_RecordDirectories] where id=@idrecdir
    set @filename=@path+replace(substring(@ts, 1, 10),'_','')+'\'+substring(@ts, 13, 2)+substring(@ts, 16, 2)+'\mix_'+@aln+'_'+@bln+'__'+@ts+'.wav';
    SELECT @filename
    END
    Вот и все!
     
Загрузка...

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