|
Общий вопрос по com-соединению | ☑ | ||
---|---|---|---|---|
0
ponaroshku
16.01.12
✎
10:10
|
Почитала несколько статей по com-соединению
Попробовала на практике, вроде даже подключилась к базе. Однако что делать после подключения мне не совсем понятно Везде описывается com-соединение к соседней базе из текущей базы Разве нельзя сделать подключение из произвольной базе к произвольной базы? Если все же возможено, как разграничивать базы, т.е. как определять какая из них какая чтобы выполнять запросы? Буду благодарна как за ответы, так и за доп ссылки на источники знаний |
|||
1
YF
16.01.12
✎
10:11
|
(0) Мона по-понятнее?
|
|||
2
Ц_У
16.01.12
✎
10:15
|
1. что делать после подключения - собственно для чего подключались то и делать
2. Разве нельзя сделать подключение из произвольной базе к произвольной базы? - можно 3.как разграничивать базы, т.е. как определять какая из них какая чтобы выполнять запросы? - Тут не совсем понятно, что имелось ввиду, если в коде, то через переменную ком соединения |
|||
3
vmv
16.01.12
✎
10:16
|
База "Из" - та из которой устанавливается соединенинение.
Она произвольной быть не может. Для хранения в ней пулла подключений делают в этой "Из" некую структуру данных, например, справочник. Этот справочник хранит идентификацию внешней ИБ для строки подключения и извлечения из пулла подключений уже готового сом. Ссылка этого справочника может использоваться в запросах |
|||
4
Shurjk
16.01.12
✎
10:17
|
(0) Сначала читаем СП до полного просветления, чтоб было понятно что такое соединение в принципе.
|
|||
5
ponaroshku
16.01.12
✎
10:18
|
мне кажется, или у вас мнения разделились (2) (3) по поводу "Разве нельзя сделать подключение из произвольной базе к произвольной базы? "
(4) я читала, поэтому и обратилась сюда читайте внимательней (0) "Буду благодарна как за ответы, так и за доп ссылки на источники знаний" |
|||
6
Shurjk
16.01.12
✎
10:19
|
(3) То есть должна быть какая то специальная - не произвольная база и только в ней можем создавать соединение? А если я к примеру запущу соединение не в базе а в каком то своем приложении написаннорм к примеру на VB?
|
|||
7
Shurjk
16.01.12
✎
10:21
|
(5) из (0) Понятно что плохо читали исходите из того что соединение это отдельный объект, который обледает только одним методом, а все остальное это свойства и сетоды базы к которой установлено это соединение - когадп ридет помнимание этого все вопросы отпадут сами собой.
|
|||
8
vmv
16.01.12
✎
10:21
|
(6) это уже будет приложение на ВБ, нэ)
|
|||
9
Artful Den
16.01.12
✎
10:21
|
||||
10
Ненавижу 1С
гуру
16.01.12
✎
10:23
|
само по себе COM соединение к базам не относится, соединится можно ко всему, что позволяет соединится
а вот то самое соединение может работать с базами данных |
|||
11
ponaroshku
16.01.12
✎
10:23
|
(9) да
|
|||
12
Shurjk
16.01.12
✎
10:24
|
(8) Но ком соединение то в нем все то же будет.
|
|||
13
Стальная Крыса
16.01.12
✎
10:48
|
даже 2 раза перечитал ...
так и не понял - чего же хочет автор ? |
|||
14
ponaroshku
16.01.12
✎
10:50
|
(13) понять, как работать с ком-соединением, как обратиться к конкретной базе
|
|||
15
SerMaxim
16.01.12
✎
10:52
|
Можно коннектиться из любой базы в любую базу. Когда будешь коннектиться то получишь именнованный экземпляр соединения (КОМ = COMОбъект("");). Потом будешь писать все тексты как КОМ.<что-то там> .
|
|||
16
ponaroshku
16.01.12
✎
11:05
|
Попробую переформулировать, забудем, что базы две-предположим, подключаюсь к одной базе
если бы не было подключения в принципе ( т.е. работа только с одной базой) , я бы сделала запрос и вывела в Макет все необходимые данные, их вывод бы забила в Печать() но задача другая, нужны 2 базы. И вот я подключилась к одной из них (предположим, что к одной) как мне выполнить этот запрос к базе, к которой я подключилась? по (15) я так поняла если у меня ТекCOMПодключение = Новый COMОбъект(ОбъектПодключения) то мне стоит обращаться к самой базе через ТекCOMПодключение? или я неправильно поняла? |
|||
17
Стальная Крыса
16.01.12
✎
11:08
|
(16) именно :)
как в СП написано: // Создается объект-коннектор cntr = Новый COMObject("V82.COMConnector"); // создается объект COM-соединение connection = cntr.Connect("File=""c:\InfoBases\Trade""; Usr=""Director"";") теперь "connection" это "объект конкретной базы", в которой можно что-то делать |
|||
18
Shurjk
16.01.12
✎
11:08
|
(16) Будет что то типа ТекСОМПодключение.NewObject("Запрос"); Только не завбывай что запрос тебе не может вернуть ссылки на объекты другой базы, т.к. это другая база.
|
|||
19
vmv
16.01.12
✎
11:09
|
ответ уже дали, вы пропустили по невнимательности
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=563192 |
|||
20
Пришел в тапках
16.01.12
✎
11:10
|
V7="";
V7=Новый COMОбъект("V77.Application"); strApp = "/D"""+"E:\Base\Завод 7ка"+""" /N"""+"Login"+""" /P"""+"Password"+""""; Открыта=V7.Initialize(V7.RMTrade,strApp,"NO_SPLASH_SHOW"); Нм = V7.CreateObject("Справочник.ТМЦ"); Нм.ВыбратьЭлементы(); Пока Нм.ПолучитьЭлемент() = 1 Цикл КонецЦикла; |
|||
21
Пришел в тапках
16.01.12
✎
11:10
|
пример
|
|||
22
ponaroshku
16.01.12
✎
11:12
|
(17) спасибо:) наконец-то нужная деталь этого паззла:))
(18) поняла (19) не заметила (20) спасибо за пример:) |
|||
23
vicof
16.01.12
✎
11:12
|
(22) лучшая благодарность - фотка топлесс)
|
|||
24
Стальная Крыса
16.01.12
✎
11:13
|
ну и вдогонку:
ТекCOMПодключение = Новый COMObject("V82.COMConnector"); КонкретнаяБаза = ТекCOMПодключение.Connect("File=""c:\InfoBases\Trade"";Usr=""Director"";"); ЗапросКонкретнойБазы = КонкретнаяБаза.NewObject("Запрос"); ЗапросКонкретнойБазы.ТекстЗапроса = "ВЫБРАТЬ * ИЗ МойСправочник"; КонкретныйРезультат = ЗапросКонкретнойБазы.Выполнить(); |
|||
25
ponaroshku
16.01.12
✎
11:18
|
(23) :)))
(24) спасибо, сейчас попробую:) если запутаюсь апну темку, но в целом прояснилось |
|||
26
ponaroshku
17.01.12
✎
07:14
|
Вообщем решила не плодить еще одну тему а пробовать разобраться в этой, т.к. вопрос тот же
написала запрос ЗапросИсточника = ТекCOMОбъект.NewObject("Запрос"); ЗапросИсточника.Текст = "|ВЫБРАТЬ | ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетДт КАК СчетДт, | СУММА(ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Сумма) КАК Сумма |ИЗ | Документ.ОтражениеЗарплатыВРеглУчете.ОтражениеВУчете КАК ОтражениеЗарплатыВРеглУчетеОтражениеВУчете | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтражениеЗарплатыВРеглУчете КАК ОтражениеЗарплатыВРеглУчете | ПО ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Ссылка = ОтражениеЗарплатыВРеглУчете.Ссылка |ГДЕ | ОтражениеЗарплатыВРеглУчете.Дата МЕЖДУ &НачалоПериода И &КонецПериода | |СГРУППИРОВАТЬ ПО | ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетДт |"; ЗапросИсточника.УстановитьПараметр("НачалоПериода", Дата("29.11.2011 0:00:00")); ЗапросИсточника.УстановитьПараметр("КонецПериода", Дата("01.12.2011 0:00:00")); РезультатЗапросаКИсточнику = ЗапросИсточника.Выполнить(); Выборка = РезультатЗапросаКИсточнику.Выбрать(ТекCOMОбъект.ОбходРезультатаЗапроса.ПоГруппировкам); пока Выборка.Следующий() Цикл ОбластьОсновнойЧасти.Параметры.Заполнить(Выборка); ТабДокумент.Вывести(ОбластьОсновнойЧасти); КонецЦикла; но вывод в макет пока не идет суть- я сгруппировала по счетам (грубо говоря 10,20,30) и хочу вывести их в область макета в столбец но не сплошняком (типо 10 сумма какой-нибудь текст макета 20 сумма бла-бла-бла 30 сумма) .. Как бы так сделать?, подскажите, любимое сообщество:) |
|||
27
Wobland
17.01.12
✎
07:18
|
(26) тему не читал, но свой штрих добавлю. в общем случае твой цикл должен бы выглядеть так:
Выборка = РезультатЗапросаКИсточнику.Выбрать(ТекCOMОбъект.ОбходРезультатаЗапроса.ПоГруппировкам); пока Выборка.Следующий() Цикл //тут можно вывести что-то про группу Выборка1=Выборка.Выбрать(); Пока Выборка1.Следующий() Цикл //а вот тут детальные записи КонецЦикла; КонецЦикла; |
|||
28
ponaroshku
17.01.12
✎
07:20
|
(27) привет:))) жалко тут нет функции добавиться в поклонницы:))
спасибо, попробую:) |
|||
29
Wobland
17.01.12
✎
07:24
|
(28) будем считать, добавление состоялось ;)
|
|||
30
ponaroshku
17.01.12
✎
07:31
|
(29) я похоже поняла в чем моя ошибка
я пытаюсь вывести в одну большую область о б счет10) л а с счет20 т счет 30 ь лучше наверно создать несколько маленьких областей на каждый счет? |
|||
31
ponaroshku
17.01.12
✎
07:32
|
или это не имеет значения?:)
|
|||
32
Wobland
17.01.12
✎
07:33
|
если я всё правильно понял, то тебе нужно две области:
Область1: для счёта Область2: для бла-бла после первого пока выводишь Область1, после второго - Область2 |
|||
33
ponaroshku
17.01.12
✎
07:45
|
(32)
не совсем мне нужна в итоге вот так счет с описанием | сумма =========================== 69 (проставлено в | должна заполнится макете) |из запроса =========================== текст текст текст =========================== 20 (проставлено в | должна заполнится макете) |из запроса и т п:)) даж нарисовала) Поправила выборку как пока Выборка.Следующий() Цикл Выборка1=Выборка.Выбрать(); Пока Выборка1.Следующий() Цикл ОбластьРасходыПоСтрахованию.Параметры.Заполнить(Выборка1.сумма); ТабДокумент.Вывести(ОбластьРасходыПоСтрахованию,Выборка1.уровень() ); КонецЦикла; КонецЦикла; накосячила? |
|||
34
ponaroshku
17.01.12
✎
07:45
|
блин, сбилась моя импровизированная картинка
|
|||
35
ponaroshku
17.01.12
✎
07:46
|
если скопировать текст и вставить в блокнотик будет попонятней)
|
|||
36
Wobland
17.01.12
✎
07:49
|
(33) проставлено в макете - это некий произвольный текст? свой для каждого счёта? обход делай один, без всяких группировок. а вот с областями...
|
|||
37
Wobland
17.01.12
✎
07:50
|
наделать кучку областей, раз текст у каждого счёта свой, потом в цикле ПолучитьОбласть("Область"+Выборка.Счёт)
|
|||
38
Wobland
17.01.12
✎
07:51
|
+(37) ну и обозвать области соответственно
|
|||
39
ponaroshku
17.01.12
✎
07:51
|
(36) текст да, сама написала
в принципе можно на каждый счет свою область и даже свой параметр, но как тогда сопоставить что в такую-то область проставляется такая-то сумма? мне запрос выдает счет сумма мне счет-то для группировки и общей суммы нужен, а в макет только общая сумма по счету нужна |
|||
40
Wobland
17.01.12
✎
07:52
|
а всё-таки, Выборка.Счёт.Наименование в качестве "проставлено в макете" не подойдёт?
|
|||
41
Wobland
17.01.12
✎
07:53
|
(39) ещё раз: Область=Макет.ПолучитьОбласть("ОбластьСчёта"+Выборка.Счёт) - будет получаться своя область для каждого счёта
|
|||
42
ponaroshku
17.01.12
✎
07:53
|
нет, там произвольная расшифровка бухгалтера проставлена, свой текст)
|
|||
43
Wobland
17.01.12
✎
07:53
|
+(41) ну и параметр Сумма должен во всех областях одинаково называться
|
|||
44
ponaroshku
17.01.12
✎
07:54
|
(41) т.е. если у меня идет вывод
44.01 70 69 область надо назвать соответственно ОбластьСчёта44.01, ОбластьСчёта70, ОбластьСчёта69? |
|||
45
ponaroshku
17.01.12
✎
07:55
|
так, сейчас попробую)
|
|||
46
ponaroshku
17.01.12
✎
07:58
|
(41) ("ОбластьСчёта"+Выборка.Счёт)
не сработает, если идет субсчет, область не назвать ОбластьСчёта44.01 |
|||
47
Wobland
17.01.12
✎
07:59
|
ну сделатй ПолучитьОбласть("Область"+СтрЗаменить(Выборка.Счёт, ".", "_"))
|
|||
48
ponaroshku
17.01.12
✎
08:03
|
(47) ууу:)) вот это да
|
|||
49
Wobland
17.01.12
✎
08:08
|
(48) это понимать как "хы! как всё просто" или как "ё-моё, о чём это он?"?
|
|||
50
ponaroshku
17.01.12
✎
08:14
|
(49) как все просто:) надо же, как быстро можно было догадаться
|
|||
51
ponaroshku
17.01.12
✎
08:18
|
что-то не взлетает
обозвала области Ошибка при получении значения атрибута контекста (СчетДт) ОбластьРасходыПоСтрахованию= макет.ПолучитьОбласть("Область"+СтрЗаменить(Выборка.СчетДт, ".", "_")); по причине: Метод не найден Поправила так: Выборка = РезультатЗапросаКИсточнику.Выбрать(ТекCOMОбъект.ОбходРезультатаЗапроса.ПоГруппировкам); ОбластьШапки = Макет.ПолучитьОбласть("Шапка") ; ОбластьРасходыПоСтрахованию= макет.ПолучитьОбласть("Область"+СтрЗаменить(Выборка.СчетДт, ".", "_")); ТабДокумент.Вывести(ОбластьШапки); пока Выборка.Следующий() Цикл Выборка1=Выборка.Выбрать(); Пока Выборка1.Следующий() Цикл ОбластьРасходыПоСтрахованию.Параметры.Заполнить(Выборка1.сумма); ТабДокумент.Вывести(ОбластьРасходыПоСтрахованию,Выборка1.уровень() ); КонецЦикла; КонецЦикла; |
|||
52
Wobland
17.01.12
✎
08:19
|
(50) я в начале следовал правилу "попробуй сам ответить на свой вопрос и только потом спрашивай других". это я не к тому, что мне как-то лениво тебе помочь, это я так помочь пытаюсь ;)
|
|||
53
ponaroshku
17.01.12
✎
08:20
|
(52) это я уже потыкала)
|
|||
54
Wobland
17.01.12
✎
08:20
|
делай один проход, без группировок, это я перемудрил. а что за "Метод не найден"? Макет - это макет?
|
|||
55
Wobland
17.01.12
✎
08:22
|
Возможно, СтрЗаменить(Счёт.Код) надо делать
|
|||
56
Wobland
17.01.12
✎
08:54
|
Карина, как ты там? болею ж ;)
|
|||
57
ponaroshku
17.01.12
✎
10:22
|
(56) я сделала немного по-другому
поправила запрос, взяла ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетДт.код КАК СчетДт и тупо написала условие:) ОбластьРасходыПоСтрахованию=макет.ПолучитьОбласть("Область69_01"); Область44_01_2=макет.ПолучитьОбласть("Область44_01_2"); ТабДокумент.Вывести(ОбластьШапки); пока Выборка.Следующий() Цикл если Выборка.СчетДт = "69.01" тогда ОбластьРасходыПоСтрахованию.Параметры.Сумма =Выборка.сумма; ТабДокумент.Вывести(ОбластьРасходыПоСтрахованию,Выборка.уровень() ); иначе Сообщить("че за?"); конецесли; если Выборка.СчетДт = "44.01.2" тогда Область44_01_2.Параметры.Сумма =Выборка.сумма; ТабДокумент.Вывести(Область44_01_2,Выборка.уровень() ); конецесли; КонецЦикла; Так что все ок:))) Спасибо за мысли:) |
|||
58
Пришел в тапках
17.01.12
✎
10:26
|
Был бы я Брежнев - поцеловал бы, а так - на здоровье!
|
|||
59
Wobland
17.01.12
✎
10:32
|
(58) а я не Брежнев, но меня это не смущает. фото на месте, требую поцелуй! ;)
|
|||
60
ponaroshku
17.01.12
✎
10:55
|
(58) :))
(59) :))) я и так в поклонницах |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |