| 
    
            
         
         | 
    
    
  | 
v7: ADO | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        ShadowCoder    
     17.12.13 
            ✎
    16:58 
 | 
         
        Ребята, доброго времени суток ! Столкнулся с надобностью изучения прямого обращения к таблицам через адо, до этого в 1ске только писал овощные отчетики и типовые доработки, максимум используя внутренний язык. Сейчас изучаю этот вопрос, и вот что хочу спросить: почему он мне из набора записей не возвращает нифига ? Вот текст, текст, вроде, простейший. А Value1 - пустое ... :( Направьтие, пожалуйста. Буду так же очень благодарен по методам каким по изучению этого вопроса. Вот код: 
 
        //******************************************* Процедура Сформировать() Соединение = СоздатьОбъект("ADODB.Connection"); ConnectionString = "driver={SQL Server}; server=абк-ПК; uid=1; pwd= ; Database = "; Соединение.ConnectionTimeOut =600; Соединение.CursorLocation = 3; Попытка Соединение.Open(ConnectionString); Исключение Предупреждение("!"); КонецПопытки; //сделаем через команду Cmd = СоздатьОбъект("ADODB.Command"); Cmd.ActiveConnection = Соединение; Cmd.CommandText = "SELECT * FROM SC16"; Rs = CreateObject("ADODB.RecordSet"); Rs = Cmd.Execute; Rs.MoveFirst(); Пока Rs.EOF() = 0 do Value1 = Rs.Fields("NAME").Value; Сообщить(Value1); Rs.MoveNext(); КонецЦикла; RS.Close(); КонецПроцедуры  | 
|||
| 
    1
    
        sapphire    
     17.12.13 
            ✎
    17:02 
 | 
         
        Пока Rs.EOF() = 0 do  
 
        Value1 = Rs.Fields("DESCR").Value; Сообщить(Value1); Rs.MoveNext(); КонецЦикла;  | 
|||
| 
    2
    
        sapphire    
     17.12.13 
            ✎
    17:03 
 | 
         
        (0) Там нет такого поля, если напрямую читаешь таблицы.
 
        + если для 77, то, ИМХО, используй 1С++ и не мучайся.  | 
|||
| 
    3
    
        ShadowCoder    
     17.12.13 
            ✎
    17:07 
 | 
         
        (2) Спасибо большое ! Сработало !:)
 
        Да с 1с++ проще, я вообще не вижу целесообразности использования такого метода. Но, увы, каприз куратора службы айти .. Не я придумываю. Не подскажешь, где вообще про адо почитать ?  | 
|||
| 
    4
    
        sapphire    
     17.12.13 
            ✎
    17:18 
 | 
||||
| 
    5
    
        sapphire    
     17.12.13 
            ✎
    17:19 
 | 
         
        (3) Куратору пинка под зад, 1cpp на сервер.     
         | 
|||
| 
    6
    
        ShadowCoder    
     17.12.13 
            ✎
    17:23 
 | 
         
        (5) На прошло работе был 1спп, все отлично работало, у меня даже была консолька по написанию запросов. И все были счастливы. Ясно, спасибо еще раз большое :)     
         | 
|||
| 
    7
    
        ShadowCoder    
     17.12.13 
            ✎
    17:25 
 | 
         
        (5) И еще просто вопросик: а как обратиться, допустим, в этом обходе к реквизиту справочника ? сц16 - это справочник сотрудники, и обратиться, например, к инн ?     
         | 
|||
| 
    8
    
        Ёпрст    
     гуру 
    17.12.13 
            ✎
    17:27 
 | 
         
        (7) ИНН в типовой тис, вообще не реквизит справочника клиентосов.. а реквизит справочника Юр или Физ лиц..
 
        :)  | 
|||
| 
    9
    
        Ёпрст    
     гуру 
    17.12.13 
            ✎
    17:27 
 | 
         
        у тя как ?
 
        :)  | 
|||
| 
    10
    
        ShadowCoder    
     17.12.13 
            ✎
    17:27 
 | 
         
        (7) Это зряплата и кадры.     
         | 
|||
| 
    11
    
        sapphire    
     17.12.13 
            ✎
    17:34 
 | 
         
        (7) парсить dds надо     
         | 
|||
| 
    12
    
        ShadowCoder    
     17.12.13 
            ✎
    17:34 
 | 
         
        (9) Мне понять суть, как обратиться к реквизиту элемента, не важно, инн, или нет.     
         | 
|||
| 
    13
    
        sapphire    
     17.12.13 
            ✎
    17:34 
 | 
         
        говорю же, через 1сpp проще все намного     
         | 
|||
| 
    14
    
        ShadowCoder    
     17.12.13 
            ✎
    17:35 
 | 
         
        (11) 1cv7.dd, искать как обозван ИНН, допустим, и к нему обращаться, как Fields("INNNAME") ?     
         | 
|||
| 
    15
    
        Ёпрст    
     гуру 
    17.12.13 
            ✎
    17:36 
 | 
         
        (12)
 
        ну так select spr.id,spr.descr,spr.sp12345,spr.sp123 from sc16 as spr  | 
|||
| 
    16
    
        Ёпрст    
     гуру 
    17.12.13 
            ✎
    17:37 
 | 
         
        твой инн, это sp123, к примеру     
         | 
|||
| 
    17
    
        sapphire    
     17.12.13 
            ✎
    17:38 
 | 
         
        (14) у SQL баз файл называется 1cv7.dds
 
        1cv7.dd - для баз в dbf  | 
|||
| 
    18
    
        ShadowCoder    
     17.12.13 
            ✎
    17:39 
 | 
         
        (16) Это понятно, что выбрать так. А из набора записей как получить ?     
         | 
|||
| 
    19
    
        sapphire    
     17.12.13 
            ✎
    17:39 
 | 
         
        (14) Короче, в 1с77 имена таблиц и полей называются иначе нежели в конфигураторе. Все имена хранятся в словаре данных (dd/dds)     
         | 
|||
| 
    20
    
        sapphire    
     17.12.13 
            ✎
    17:40 
 | 
         
        (18) Получать значение полей из объекта RecordSet     
         | 
|||
| 
    21
    
        ShadowCoder    
     17.12.13 
            ✎
    17:41 
 | 
         
        (20) (19) Ага, понял, нашел, переписал. Одно осталось непонятно: как будет именоваться это поле ?     
         | 
|||
| 
    22
    
        sapphire    
     17.12.13 
            ✎
    17:41 
 | 
         
        аналогично (1), можно, конечно еще и прочитать имена полей, только что это даст?     
         | 
|||
| 
    23
    
        ShadowCoder    
     17.12.13 
            ✎
    17:42 
 | 
         
        Спасибо за терпение при объяснении :) Понимаю, что тупости спрашиваю.
 
        Я вообще не 1с-ник, если честно.  | 
|||
| 
    24
    
        sapphire    
     17.12.13 
            ✎
    17:42 
 | 
         
        (21) Посмотри в dds, всё станет ясно.     
         | 
|||
| 
    25
    
        sapphire    
     17.12.13 
            ✎
    17:42 
 | 
         
        (23) Не играет особой роли.     
         | 
|||
| 
    26
    
        ShadowCoder    
     17.12.13 
            ✎
    17:42 
 | 
         
        (22) Все, понял, иду курить ! Спасибо за объяснения !     
         | 
|||
| 
    27
    
        Serginio1    
     17.12.13 
            ✎
    17:45 
 | 
         
        Я иногда что бы не загружать MD шник при соединении с другой базой пишу напрямую.
 
        Для получения текста запроса используй отладка(1) http://www.1cpp.ru/docum/icpp/html/ODBC.html#debug А вообще вот главная страница http://www.1cpp.ru/index.php/Main  | 
|||
| 
    28
    
        Serginio1    
     17.12.13 
            ✎
    17:48 
 | 
||||
| 
    29
    
        ShadowCoder    
     17.12.13 
            ✎
    17:51 
 | 
         
        (28) Данке ! Но это немного не то, но спасибо :)     
         | 
|||
| 
    30
    
        Serginio1    
     17.12.13 
            ✎
    17:51 
 | 
||||
| 
    31
    
        Serginio1    
     17.12.13 
            ✎
    17:54 
 | 
         
        (29) Ты из 1С++ используя например qryMaker быстро слепить запрос, с помощью отладка(1) получить запрос и использовать его в ADO.     
         | 
|||
| 
    32
    
        Serginio1    
     17.12.13 
            ✎
    17:58 
 | 
         
        Выбрать все элементы спр. Номенклатура, у которых реквизит ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Товар 
 
        RS = СоздатьОбъект("ODBCRecordset"); RS.УстБД1С(); ТекстЗапроса = " |SELECT | Спр.ID as [Элемент $Справочник.Номенклатура] |FROM | $Справочник.Номенклатура as Спр |WHERE | $Спр.ТипНоменклатуры = :Товар"; RS.УстановитьТекстовыйПараметр("Товар", Перечисление.ТипыНоменклатуры.Товар); ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса); ТЗ.ВыбратьСтроку(); Что бы посмотреть, какой же запрос в итоге уйдет на сервер у объекта ODBCRecordset существует метод Отладка(Вкл). RS.Отладка(1); ТЗ = RS.ВыполнитьИнструкцию(Текст); В окно сообщений выведется текст SELECT Спр.ID as [Элемент $Справочник.Номенклатура] FROM sc433 as Спр WHERE Спр.SP3456 = ‘ C3A ‘  | 
|||
| 
    33
    
        ShadowCoder    
     17.12.13 
            ✎
    18:13 
 | 
         
        (32) Спасибо большое ! Вот это вообще по делу !     
         | 
|||
| 
    34
    
        Serginio1    
     17.12.13 
            ✎
    18:25 
 | 
         
        (33) Просто это наглядный пример использования того, что я тебе выше написал.     
         | 
|||
| 
    35
    
        varelchik    
     17.12.13 
            ✎
    18:59 
 | 
         
        (34) Только действительно зачем городить огород?
 
        на текущий момент 1С++ не требует регистрации в реестре. Есно нет проблем с ее использованием. Кажуть же бери и не заморачивай себе голову.  | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |