|
Самописка. Открыть форму через com соединение | ☑ | ||
---|---|---|---|---|
0
anisa8310
16.02.15
✎
11:05
|
Добрый день!
Самописка. 1С:Предприятие 8.3 (8.3.5.1443) Пытаюсь подключиться через com к файловой базе и получить форму списка. Пока тренируюсь: &НаКлиенте Процедура ВедомостьЗП(Команда) ПолучитьФормуВедомости(); КонецПроцедуры &НаСервере Процедура ПолучитьФормуВедомости() cntr = Новый COMObject("V83.COMConnector"); connection = cntr.Connect("File=""F:\ЛАД\HR 3"";Usr="""";"); Сообщить("Соединение установлено"); СпрСотрудники = connection.Справочники.Сотрудники; Выборка = СпрСотрудники.Выбрать(); Пока Выборка.Следующий() Цикл Сообщить(Выборка.Наименование); КонецЦикла; //Это все работает //А форму списка то как получить? //На клиенте же надо? КонецПроцедуры Заранее всех благодарю за внимание! |
|||
1
vde69
16.02.15
✎
11:06
|
COM - не оперирует оконными обьектами
|
|||
2
Господин ПЖ
16.02.15
✎
11:07
|
>Пытаюсь подключиться через com к файловой базе и получить форму списка.
ловите наркомана |
|||
3
ShoGUN
16.02.15
✎
11:09
|
(0) Описание COM интерфейсов 1с почитай, для начала.
|
|||
4
anisa8310
16.02.15
✎
11:11
|
угу
|
|||
5
бомболюк
16.02.15
✎
11:53
|
ну а почему сразу нельзя? если использовать "v8x.Application" то формы модально прекрасно открываются ;-)
|
|||
6
ДенисЧ
16.02.15
✎
11:59
|
Расстрелять за такое решение.
|
|||
7
Господин ПЖ
16.02.15
✎
13:46
|
(5) апликейшен != com
|
|||
8
ShoGUN
16.02.15
✎
13:58
|
(7) С чего бы? Тоже COM, только другой компонент. Automation использует COM.
|
|||
9
ДенисЧ
16.02.15
✎
13:58
|
(7) аппликейшн==оле==ком
учи матчасть |
|||
10
Господин ПЖ
16.02.15
✎
14:18
|
неудачно выразился
|
|||
11
anisa8310
16.02.15
✎
14:21
|
Все нормально! разобралась -не верно выразилась-
&НаКлиенте Процедура ВедомостьЗП(Команда) БазаИсточник = Новый COMОбъект("V83.Application"); СтрокаПодключения = "Srvr=""*****"";Ref=""****"";Usr=""***"";Pwd=""111"";"; Попытка БазаИсточник.Connect(СтрокаПодключения); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Документ = БазаИсточник.Документы.ВедомостьНаВыплатуЗарплатыВКассу; Документ.ПолучитьФормуСписка().Открыть(); БазаИсточник = Неопределено; КонецПроцедуры |
|||
12
anisa8310
16.02.15
✎
14:24
|
(9) да, теперь мне надо из выбрать из списка док. и из его таб части- выбрать всех и поместить в тч своей базы-короче такая задумка) можно и запросом было но! надо же перед тем как выбрать посмотреть на документ то или не то-подразделений очень много и т.д
Поэтому открыть форму поглядеть -потом выбрать этот док из списка другой базы и уже запрос отработает и заполнит ТЧ на моей стороне базу и ну там уже другая кухня. |
|||
13
anisa8310
16.02.15
✎
14:26
|
как теперь установить параметр запроса - текущей строки из полученного списка?
|
|||
14
ShoGUN
16.02.15
✎
14:29
|
(11) Хоспади, Аниса, поставь нормальную фотку :)))
(13) Не понял вопроса. В параметр запроса засунуть выбранный документ из списка что ли? |
|||
15
anisa8310
16.02.15
✎
14:39
|
(14) да, хочу из спискавыбрать как параметр к моему запросу (который сейчас шлифую на строне ЗУПА))
а что фотка соот-ет действительности мототоксикоз вообще то |
|||
16
anisa8310
16.02.15
✎
14:41
|
(14) в скайпе за то нормальная фотка же? там зубы и фейс есть
|
|||
17
ShoGUN
16.02.15
✎
14:43
|
(15) Проще всего - форму _выбора_ вызывать модально, тогда в возвращаемом значении будет ссылка на выбранный документ.
|
|||
18
ShoGUN
16.02.15
✎
14:43
|
(16) Ты ж не лошадь, зачем мне зубы)))
|
|||
19
anisa8310
16.02.15
✎
14:46
|
(18) Нет не лощадь)
|
|||
20
anisa8310
16.02.15
✎
14:47
|
(17) а как мне её модально тогда вызвать? получить бы только ссылку и установить как параметр в запросе в внешней базе
|
|||
21
ShoGUN
16.02.15
✎
14:49
|
(20)Документ = БазаИсточник.Документы.ВедомостьНаВыплатуЗарплатыВКассу;
ВыбранныйДок = Документ.ПолучитьФормуВыбора().ОткрытьМодально(); Но только тут надо учитывать, что весь процесс будет висеть, пока открыта форма и док не выбран. |
|||
22
anisa8310
16.02.15
✎
15:47
|
(21) Документ.абпРасходПоКассе.Форма.ФормаДокумента.Форма(652)}: Значение не является значением объектного типа (NewObject)
Запрос = Соединение.NewObject("Запрос"); застопорилась..запрос на той стороне создать не получаться |
|||
23
H A D G E H O G s
16.02.15
✎
15:48
|
(9) Привет ДенисЧ.
|
|||
24
ShoGUN
16.02.15
✎
16:07
|
(22) Тип у переменной "Соединение" какой?
|
|||
25
anisa8310
16.02.15
✎
16:13
|
(24) Мне кажется что один раз com объект уже создали и запрос-это тоже com-поэтому что то не правильно делаю:
&НаКлиенте Процедура ВедомостьЗП(Команда) БазаИсточник = Новый COMОбъект("V83.Application"); СтрокаПодключения = "Srvr=""GMAIN"";Ref=""zup3"";Usr=""ЛАД"";Pwd=""111"";"; Попытка СоединениеБаз=БазаИсточник.Connect(СтрокаПодключения); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Документ = БазаИсточник.Документы.ВедомостьНаВыплатуЗарплатыВКассу; ВыбранныйДок = Документ.ПолучитьФормуВыбора().ОткрытьМодально(); ///////Выполняем запрос ЗапросНовый = СоединениеБаз.NewObject("Запрос"); ЗапросНовый.Текст = "ВЫБРАТЬ |ВедомостьНаВыплатуЗарплатыВКассуЗарплата.Сотрудник, |ВедомостьНаВыплатуЗарплатыВКассуЗарплата.Подразделение, |ВедомостьНаВыплатуЗарплатыВКассуЗарплата.СтатьяФинансирования, |ВедомостьНаВыплатуЗарплатыВКассуЗарплата.СтатьяРасходов, |ВедомостьНаВыплатуЗарплатыВКассуЗарплата.КВыплате, |ВедомостьНаВыплатуЗарплатыВКассуЗарплата.КомпенсацияЗаЗадержкуЗарплаты, |ВедомостьНаВыплатуЗарплатыВКассуЗарплата.Ссылка.Ссылка, |ВедомостьНаВыплатуЗарплатыВКассуЗарплата.Ссылка.СуммаПоДокументу, |ВедомостьНаВыплатуЗарплатыВКассуЗарплата.Ссылка.Комментарий |ИЗ |Документ.ВедомостьНаВыплатуЗарплатыВКассу.Зарплата КАК ВедомостьНаВыплатуЗарплатыВКассуЗарплата |ГДЕ |ВедомостьНаВыплатуЗарплатыВКассуЗарплата.Ссылка = &Ссылка"; ЗапросНовый.УстановитьПараметр("Ссылка", ВыбранныйДок); РезультатЗапроса = ЗапросНовый.Выполнить(); //ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); // //Пока ВыборкаДетальныеЗаписи.Следующий() Цикл // Сообщить(ВыборкаДетальныеЗаписи.Сотрудник); // //КонецЦикла; КонецПроцедуры |
|||
26
anisa8310
16.02.15
✎
16:16
|
ЗапросНовый = СоединениеБаз.NewObject("Запрос");- соединениеБаз-есть соединение com, запрос это тоже com объект
|
|||
27
ShoGUN
16.02.15
✎
16:22
|
(25) Не путай :) V83.Application и V83.COMConnector - это разные объекты, с похожими(но разными!) методами.
У тебя СоединениеБаз - булево, поскольку Automation сервер (Automation server) Connect (Connect) Синтаксис: Connect(<СтрокаСоединения>) Параметры: <СтрокаСоединения> (обязательный) Тип: Строка. Строка параметров (Строка соединения), используемая 1С:Предприятием для соединения с информационной базой. Возвращаемое значение: Тип: Булево. Истина - инициализация прошла удачно, Ложь - в противном случае. Описание: Выполняет соединение системы 1С:Предприятие с информационной базой. |
|||
28
anisa8310
16.02.15
✎
16:37
|
да еще понятнее стало) Спасибо! (27)
Параметр к запросу-выбранный документ не отдается)) запрос работает теперь |
|||
29
ShoGUN
16.02.15
✎
17:08
|
(28) Точно не отдаётся. Вроде там подвоха нет никакого. Ну, кроме того, что документ со стороны инициатора соединения тоже виден, как COMОбъект.
|
|||
30
ShoGUN
16.02.15
✎
17:11
|
(29) "Точно не отдаётся." => "Точно не отдаётся?"
|
|||
31
hhhh
16.02.15
✎
17:19
|
(28) только примитивные типы передаются. Возвращай номер дату и вид документа.
|
|||
32
anisa8310
16.02.15
✎
17:20
|
(30) Есть подвох: Точно не отдается, ругается.
Зуп форма списка открывается- выбрать длокумент можно, затем выполняет запрос и при передаче параметра ругается: "роизошла исключительная ситуация (1C:Enterprise 8.3.5.1443): {(14, 49)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля неограниченной длины и поля несовместимых типов. ВедомостьНаВыплатуЗарплатыВКассуЗарплата.Ссылка <<?>>= &Ссылка " |
|||
33
ShoGUN
16.02.15
✎
17:21
|
(31) Ей надо передать документ как параметр в запрос к той же базе.
|
|||
34
anisa8310
16.02.15
✎
17:21
|
Если параметр- назначала просто номер, для поверки тогда сообщал мне "com объект" столько раз скольо строк в документе - 3 шт)
|
|||
35
hhhh
16.02.15
✎
17:22
|
(32) наверно ссылку из другой базы фигачите.
|
|||
36
anisa8310
16.02.15
✎
17:23
|
(33) нет ссылка не из другой базы
Документ = БазаИсточник.Документы.ВедомостьНаВыплатуЗарплатыВКассу; ВыбранныйДок = Документ.ПолучитьФормуВыбора().ОткрытьМодально(); Сообщить(ВыбранныйДок); |
|||
37
ShoGUN
16.02.15
✎
17:23
|
(34) Видимо, модальное открытие не работает, в смысле - значение не возвращает(вместо этого возвращает Неопределено). Проверь через Сообщить();
|
|||
38
anisa8310
16.02.15
✎
17:24
|
к одной подключаемся
|
|||
39
anisa8310
16.02.15
✎
17:24
|
(37) Сообщает (com объект)
|
|||
40
anisa8310
16.02.15
✎
17:25
|
т.е не ссылка значит и параметр отсюда не хочет передаваться
|
|||
41
anisa8310
16.02.15
✎
17:25
|
все пропало шеф
|
|||
42
hhhh
16.02.15
✎
17:26
|
ну посмотрите отладчиком, что там
|
|||
43
ShoGUN
16.02.15
✎
17:28
|
(39) Спакойно :))) Кто ж так делает?
Сообщить(БазаИсточник.String(ВыбранныйДок)); - вот так покажет, что надо. Для базы-клиента все объекты непримитивных типов в базе-сервере будут COMОбъекты. Преобразуй через БазаИсточник.String в строку и смотри, что это. |
|||
44
hhhh
16.02.15
✎
17:31
|
(41) может так??
МойДокумент = БазаИсточник.Документы.ВедомостьНаВыплатуЗарплатыВКассу; ВыбранныйДок = МойДокумент.ПолучитьФормуВыбора().ОткрытьМодально(); |
|||
45
anisa8310
16.02.15
✎
17:33
|
теперь показывает) Ведомость в кассу 77ЗК-000017 от 30.01.2015
|
|||
46
anisa8310
16.02.15
✎
17:34
|
да параметр теперь этот остался если сообщить две фамилии -то вообще здорово)
|
|||
47
ShoGUN
16.02.15
✎
17:34
|
(45) Ну значит выбирается док. Должно работать.
|
|||
48
anisa8310
16.02.15
✎
17:35
|
да сейчас еще проверю))
|
|||
49
ShoGUN
16.02.15
✎
17:37
|
(48) Может ты форму крестиком закрыла, тогда вернётся "Неопределено". Сделай обработку этого.
|
|||
50
anisa8310
16.02.15
✎
17:43
|
Да, пока не пойму почему не сообщает результат запроса-тоже наверное что то с COM-м представлением
|
|||
51
ShoGUN
16.02.15
✎
17:46
|
||||
52
ShoGUN
16.02.15
✎
17:46
|
По COM-соединению можно передать только примитивные типы. Больше ничего и не нужно!
|
|||
53
anisa8310
16.02.15
✎
17:49
|
(52) да комы для меня загадка)) буду читать
|
|||
54
anisa8310
16.02.15
✎
17:54
|
Процедура ВедомостьЗП(Команда)
БазаИсточник = Новый COMОбъект("V83.Application"); БазаИсточникКоннектор=Новый COMОбъект("V83.ComConnector"); СтрокаПодключения = "Srvr=""GMAIN"";Ref=""zup3"";Usr=""ЛАД"";Pwd=""111"";"; Попытка СоединениеБаз=БазаИсточник.Connect(СтрокаПодключения); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Попытка ВнешнееСоединение = БазаИсточникКоннектор.Connect(СтрокаПодключения); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Документ = БазаИсточник.Документы.ВедомостьНаВыплатуЗарплатыВКассу; ВыбранныйДок = Документ.ПолучитьФормуВыбора().ОткрытьМодально(); Док=БазаИсточник.String(ВыбранныйДок); Сообщить(Док); ///////Выполняем запрос ЗапросНовый = ВнешнееСоединение.NewObject("Запрос"); ЗапросНовый.Текст = "ВЫБРАТЬ |ВедомостьНаВыплатуЗарплатыВКассуЗарплата.Сотрудник, |ВедомостьНаВыплатуЗарплатыВКассуЗарплата.Подразделение, |ВедомостьНаВыплатуЗарплатыВКассуЗарплата.СтатьяФинансирования, |ВедомостьНаВыплатуЗарплатыВКассуЗарплата.СтатьяРасходов, |ВедомостьНаВыплатуЗарплатыВКассуЗарплата.КВыплате, |ВедомостьНаВыплатуЗарплатыВКассуЗарплата.КомпенсацияЗаЗадержкуЗарплаты, |ВедомостьНаВыплатуЗарплатыВКассуЗарплата.Ссылка.Ссылка, |ВедомостьНаВыплатуЗарплатыВКассуЗарплата.Ссылка.СуммаПоДокументу, |ВедомостьНаВыплатуЗарплатыВКассуЗарплата.Ссылка.Комментарий |ИЗ |Документ.ВедомостьНаВыплатуЗарплатыВКассу.Зарплата КАК ВедомостьНаВыплатуЗарплатыВКассуЗарплата |ГДЕ |ВедомостьНаВыплатуЗарплатыВКассуЗарплата.Ссылка = &Ссылка"; ЗапросНовый.УстановитьПараметр("Ссылка", Док); РезультатЗапроса = ЗапросНовый.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить(ВыборкаДетальныеЗаписи.Сотрудник); КонецЦикла; КонецПроцедуры |
|||
55
anisa8310
16.02.15
✎
17:56
|
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщить(ВыборкаДетальныеЗаписи.Сотрудник); КонецЦикла; Вот это не сообщает( |
|||
56
anisa8310
16.02.15
✎
17:57
|
V8.String(Выборка.Ссылка) так нужно сообщать
|
|||
57
anisa8310
16.02.15
✎
17:58
|
из охоты на Сом ов
|
|||
58
anisa8310
16.02.15
✎
18:11
|
нет не могу получить выборку в комментарий
|
|||
59
anisa8310
16.02.15
✎
18:12
|
Сообщить("Производится выгрузка "+ЗапросНовый.String(ВыборкаДетальныеЗаписи.Сотрудник));
|
|||
60
anisa8310
16.02.15
✎
18:28
|
(52) не сообщает в цикле значения запроса
|
|||
61
hhhh
16.02.15
✎
20:24
|
XMLString
|
|||
62
anisa8310
16.02.15
✎
20:26
|
(61) Что? я вот снова решила вернуться к этой задаче почему не сообщает выборку
|
|||
63
anisa8310
16.02.15
✎
20:27
|
сом объект пишет если убрать стринг
|
|||
64
DirecTwiX
16.02.15
✎
20:31
|
(54) Зачем и "V83.Application" и "V83.ComConnector"???
(63) String -> XMLString |
|||
65
anisa8310
16.02.15
✎
20:35
|
V83.Application-это булево
V83.ComConnector - для соединения- а что они друг другу мешать могут? (64) |
|||
66
anisa8310
16.02.15
✎
20:35
|
String -> XMLString заменит чтоли попробовать
|
|||
67
DirecTwiX
16.02.15
✎
20:59
|
(65) Application может всё, что умеет ComConnector.
Чтобы было не булево, а COM, надо писать Соединение.Connect(Строка); Соединение.NewObject(...) а не Соединение = Соединение.Connect(Строка); Соединение.NewObject(...) Последний вариант будет, если использовать ComConnector. |
|||
68
anisa8310
16.02.15
✎
21:06
|
(67) сейчас попробую убрать лишнее
|
|||
69
anisa8310
16.02.15
✎
21:21
|
нет не получается..
|
|||
70
DirecTwiX
16.02.15
✎
21:36
|
(69) В общем, всё плохо.
А в (11) получалось... |
|||
71
anisa8310
16.02.15
✎
21:51
|
(70) Да, просто параметр не передается почему то, хотя сообщение получаю о выбранном в списке документе.
|
|||
72
anisa8310
16.02.15
✎
21:52
|
Хочу выбрать документ потом получить из него таб часть и заполнить свою таб часть-но вот застряла на одном шаге
|
|||
73
hhhh
16.02.15
✎
22:48
|
в итоге что получилось?
|
|||
74
anisa8310
17.02.15
✎
17:17
|
(73) пока ничего-завтра вернусь к этой задаче) Спасибо!
|
|||
75
D_E_S_131
17.02.15
✎
17:44
|
А в 21-м веке уже запретили данные выгружать в промежуточные (например XML) файлы и использовать их по назначению в других базах?
|
|||
76
anisa8310
18.02.15
✎
22:20
|
(75) нет. только COM и почти бесшовная интеграция)
|
|||
77
anisa8310
26.02.15
✎
17:38
|
Кстати все сделала) работает как часики
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |