|
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С++ не требует регистрации в реестре. Есно нет проблем с ее использованием. Кажуть же бери и не заморачивай себе голову. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |