|
v8: как работать из 1с8 с таблицами mysql | ☑ | ||
---|---|---|---|---|
0
Juli_Juli
21.02.12
✎
22:37
|
подключилась к базе mysql из 1с8, выбрала нужную таблицу запросом. но вот где найти описание встроенного языка по работе в 1с с sql-ем - я узнала только Open(), Close(),table.fields(0).Value, moveNext. хотелось бы полностью таблицу загрузить сразу в ТЗ в 1с, используя что-то типа Выгрузить() или ВыбратьСтроку - можно ли вообще такое сделать с таблицами в mysql?
|
|||
1
KarpovDeniska
21.02.12
✎
22:42
|
||||
2
badboychik
21.02.12
✎
22:44
|
Пол:Мужской
|
|||
3
Jaffar
21.02.12
✎
23:45
|
(2) так и Дата регистрации: 21.02.2012 сегодня
|
|||
4
Лефмихалыч
22.02.12
✎
00:32
|
миздец чьему-то сайту...
|
|||
5
Лефмихалыч
22.02.12
✎
00:32
|
(0) ты тока бэкапы почаще делай
|
|||
6
Asmody
22.02.12
✎
00:33
|
в свете постановки вопроса, меня очень интересует, как было выполнено [подключилась к базе mysql из 1с8, выбрала нужную таблицу запросом]. особенно то, что после запятой
|
|||
7
Juli_Juli
22.02.12
✎
16:08
|
to Asmody
Соединение = Новый COMОбъект("ADODB.Connection"); ConnectionString= "DRIVER={MySQL ODBC 5.1 Driver};SERVER=127.0.0.1;DATABASE=Julia;OPTION=3;UID=root"; НаборЗаписей=Новый COMОбъект("ADODB.Recordset"); Если Соединение.state=0 then Соединение.open(ConnectionString); Сообщить("Подключились"); КОнецЕсли; ТекстЗапроса="select * from 1c_112011"; НаборЗаписей.ActiveConnection=Соединение; НаборЗаписей.Open(ТекстЗапроса); Table=Соединение.execute(ТекстЗапроса); Пока Table.EOF() = 0 do Value1= Table.Fields(0).Value; Сообщить(Value1); Table.MoveNext(); КонецЦикла; Table.Close(); я к тому, что Table тут тоже ком-объект. А если я хочу всю таблицу(которую выбрала запросом из sql) видеть как стандартная Таблица Значений в 1с - я могу только создав ТЗ и в своем цикле значения присваивать строкам моей ТЗ? задаю вопрос - но видимо уже знаю, что только так. а изначально интересовалась вообще to KarpovDeniska спасибо - надеюсь пригодится. но мне только на забирание инфы пока из биллинга. |
|||
8
zak555
22.02.12
✎
16:11
|
чья таблица 1c_112011 ?
|
|||
9
Juli_Juli
22.02.12
✎
16:12
|
хотелось бы примеров, написанных на 1с8 по работе с sql - типа как я написала - но только больше вариантов кроме как подключиться, выбрать таблицу и получить из нее значение - описанным способом.
|
|||
10
zak555
22.02.12
✎
16:14
|
что в БД Julia ?
|
|||
11
КМ155
22.02.12
✎
16:14
|
||||
12
zak555
22.02.12
✎
16:14
|
+ в 8.2.15 есть объект Внешние источники данных
|
|||
13
DexterMorgan
22.02.12
✎
16:25
|
(12) так с 14 же он есть
|
|||
14
zak555
22.02.12
✎
16:26
|
(13) я знаю, что в 77 нет такого
|
|||
15
rozer76
22.02.12
✎
16:36
|
(11) стесняюсь спросить а для mysql тоже актуально ? А то я до сих пор через ODBC mysql 3.51 ....
|
|||
16
zak555
22.02.12
✎
16:38
|
(15) прочитай, что там написано :
Внешний источник может получать данные из ODBC-источников в операционных системах Windows и Linux, причем при работе с СУБД Microsoft SQL Server, IBM DB2, PostgreSQL и Oracle Database обеспечиваются полные возможности языка запросов. При работе с другими СУБД некоторые конструкции языка запросов могут не работать, т.к. они ограничены возможностями того ODBC-драйвера, который используется. |
|||
17
КМ155
22.02.12
✎
16:48
|
(15) актуально для любого драйвера ODBC, не факт что работает,
я использую ADODB поверх ODBC |
|||
18
rozer76
22.02.12
✎
16:50
|
(17) эээх, ладно будем по старинке ... рекордсеты... рекордсеты
|
|||
19
MikeLna
22.02.12
✎
17:34
|
(16) Работает то оно работает. Вот только валится если в полях MySQLя есть подчеркивания.
|
|||
20
zak555
22.02.12
✎
17:35
|
(19) валится при каких телодвижениях ?
|
|||
21
MikeLna
22.02.12
✎
17:36
|
(20) На банальном select'e
|
|||
22
zak555
22.02.12
✎
17:38
|
(21) на последней 8.2.15 ?
|
|||
23
zak555
22.02.12
✎
17:39
|
ааа
"При работе с другими СУБД некоторые конструкции языка запросов могут не работать..." |
|||
24
Fragster
гуру
22.02.12
✎
17:41
|
Процедура ЗаполнитьЗначенияСвойствРекордсет(Приемник, Рекордсет)
ВГраница = Рекордсет.Fields.Count()-1; Для Сч = 0 По Вграница Цикл Попытка Поле = Рекордсет.Fields(Сч); Значение = Поле.Value; ИмяПоля = Поле.Name; Если ТипЗнч(Значение) = Приемник[ИмяПоля] Тогда Приемник[ИмяПоля] = Значение; Иначе Приемник[ИмяПоля] = Формат(Значение, "ЧРД=.; ЧГ=; ДФ=гггММддЧЧммсс"); КонецЕсли; Исключение // пропускаем КонецПопытки; КонецЦикла; КонецПроцедуры ..... ТаблицаФайла = Новый ТаблицаЗначений; //ТаблицаФайла.Колонки.Добавить("НомерСтроки", ПолучитьОписаниеТиповЧисла(5)); ТаблицаФайла.Колонки.Добавить("АИД", ПолучитьОписаниеТиповЧисла(5)); ТаблицаФайла.Колонки.Добавить("СерийныйНомер", ПолучитьОписаниеТиповСтроки(32)); ТаблицаФайла.Колонки.Добавить("НомерДоговора", ПолучитьОписаниеТиповСтроки(32)); ТаблицаФайла.Колонки.Добавить("ФИО", ПолучитьОписаниеТиповСтроки(150)); ТаблицаФайла.Колонки.Добавить("ДатаАктивации", ПолучитьОписаниеТиповДаты(ЧастиДаты.Дата)); Пока Не Recordset.EOF Цикл НоваяСтрока = ТаблицаФайла.Добавить(); ЗаполнитьЗначенияСвойствРекордсет(НоваяСтрока, Recordset); Recordset.MoveNext(); КонецЦикла; |
|||
25
MikeLna
22.02.12
✎
17:42
|
(22) На предпоследней 294ой.
(23) Ну как бы да - select - "некоторая конструкция" :) |
|||
26
Fragster
гуру
22.02.12
✎
17:42
|
Если ТипЗнч(Значение) = ТипЗнч(Приемник[ИмяПоля]) Тогда
|
|||
27
ukolabrother
22.02.12
✎
18:42
|
Рекорд сет надо обходить
|
|||
28
ukolabrother
22.02.12
✎
18:45
|
Пока RSTR.EOF() = 0 Цикл
Запись = ОстаткиПоКартам.Добавить(); Запись.Карта= ПолучитьДоговорКарту(СокрЛП(RSTR.Fields("НомерКарты").Value),,Ложь); Запись.Остаток= Число(СокрЛП(RSTR.Fields("Сумма").Value)); RSTR.MoveNext(); КонецЦикла; RSTR - рекордсет |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |