|
Скрыть окно V83.Application | ☑ | ||
---|---|---|---|---|
0
Jenstel
23.05.14
✎
14:23
|
Платформа 8.3
Создаю OLE-объект 1C := CreateOleObject('V83.Application'); 1C.Connect('File="C:\Accounting-2013";usr=ХХХ;pwd=ХХХ'); При создании, особенно на медленных машинах, появляется окно клиента (да ему еще и фокус передается). Это крайне неудобно, т.к. вызов происходит из собственного приложения. Подскажите как сделать выполнение фоном, чтобы окно не отображалось Пробовал 1C.Visible:=False - происходит все тоже самое с отображением окна, а потом оно просто исчезает. Везде в документации указано, что приложение наоборот должно не отображаться на экране. |
|||
1
butterbean
23.05.14
✎
14:24
|
надо пользоваться ComConnector
|
|||
2
banco
23.05.14
✎
14:26
|
(0) может вам V83.COMConnector нужен?
|
|||
3
Jenstel
23.05.14
✎
14:34
|
Я про него тоже думал, но он ограничен функционалом. Я не профессионал в 1С-программировании и то, что я могу запрограммировать не работает при соединении через ComConnector. Например, не получается сделать ссылку на справочник
SprStore := 1C.Справочники.Номенклатура; Метод не поддерживается |
|||
4
butterbean
23.05.14
✎
14:46
|
(3) а 1С.Catalogs.Номенклатура??
|
|||
5
hhhh
23.05.14
✎
14:47
|
(3)
Глобальный контекст (Global context) Справочники (Catalogs) Использование: Только чтение. Описание: Тип: СправочникиМенеджер. Используется для доступа к определенным в конфигурации справочникам. Доступность: Сервер, толстый клиент, внешнее соединение. См. также: СправочникиМенеджер не надо нам лапшу на уши вешать, всё поддерживается |
|||
6
Jenstel
23.05.14
✎
15:09
|
(4) Метод 'Catalogs' не поддерживается объектом
|
|||
7
DmitrO
23.05.14
✎
15:19
|
Не работает потому что в случае использования ComConnector надо так:
Connector := CreateOleObject('V83.ComConnector'); 1C := Connector.Connect('File="C:\Accounting-2013";usr=ХХХ;pwd=ХХХ'); SprStore := 1C.Справочники.Номенклатура; |
|||
8
Jenstel
23.05.14
✎
15:34
|
(7) Так и пробовал изначально, но как и сказал, метод не поддерживается объектом.
ComConnector ограничен функционалом, так как создается не полноценное приложение (как в случае работы с Word и Excel через СОМ-OLE), а лишь COM-соединение, которое не может работать с интерфейсным функционалом. |
|||
9
ДенисЧ
23.05.14
✎
15:36
|
(8) Работать по кому с интерфейсом - дурное дело.
|
|||
10
DmitrO
23.05.14
✎
15:39
|
Клянусь 1Сным богом в (7) нет работы с интерфейсным функционалом.
|
|||
11
DmitrO
23.05.14
✎
15:43
|
Ну хорошо, а
1C.Visible:=False; вызывал после соединения (вызова Connect)? Просто если до, то эффекта не будет. |
|||
12
Jenstel
23.05.14
✎
15:48
|
(11) Естественно после. Как я и написал эффект от него есть, но не совсем тот. После вызова Connect происходит долгое открытие приложения 1C, затем отображение окна, передача ему фокуса, а потом окно просто исчезает. Это очень неудобно для пользователя, который работает в своем MDI-приложении, а вызов 1С происходит из модального окна. Нужно скрыть весь процесс открытия приложения и смены фокуса от пользователя, например, курсором с часами.
|
|||
13
DmitrO
23.05.14
✎
15:51
|
Ну там действительно окно появляется, но на короткое время, иногда его даже вообще не заметно.
|
|||
14
DmitrO
23.05.14
✎
15:59
|
Хотя видимо это зависит от конфигурации 1С.. смотря что делается в 1С при открытии..
Ну тогда все.. либо возможность работать с интерфейсом и мелькание окна на экране, либо работать через ComConnector. |
|||
15
DmitrO
23.05.14
✎
16:06
|
Может у пользователя под которым соединяешься тупо нет прав на внешнее соединение? После коннекта в переменной 1С COM-объект вообще?
|
|||
16
Jenstel
23.05.14
✎
16:16
|
(15) Про это тоже думал. Права полные
Решил проблему по-другому: 1. Создал нового юзера с типом запуска "Обычное приложение". 2. Дал ему нужные права При создании V83.Application как раз происходит фоновая операция открытия клиента и доступен полный функционал. Теперь новая проблема. Как работать с ссылками 1С в Delphi? Допустим, я создаю платежное поручение PP:=Con1C.Документы.ПлатежноеПоручение.СоздатьДокумент(); PP.Контрагент := ? Как мне указать ссылку на справочного контрагента, если я знаю его полное наименование |
|||
17
DmitrO
23.05.14
✎
16:30
|
PP.Контрагент := Con1C.Справочники.Контрагенты.НайтиПоНаименованию(CustomerName);
|
|||
18
Jenstel
23.05.14
✎
16:49
|
(17) С этим спасибо. Еще один костыль. При создании платежного поручения через COM нет возможности выбрать наш банковский счет (в списке пусто) и создать тоже нельзя "Не указан владелец банковского счета". Что я упускаю при создании ПП?
|
|||
19
DS
23.05.14
✎
17:04
|
(18) Очевидно - указание владельца банковского счета.
|
|||
20
Jenstel
23.05.14
✎
18:01
|
(19) Да. Но создаю я платежное поручение и список счетов у меня уже есть. Мне нужно при создании выбрать. В каком параметре нужно передать владельца банковских счетов (мою контору), чтобы был доступен выбор счетов?
|
|||
21
fyn
23.05.14
✎
19:33
|
(20) вызовите специалиста лучше, а то запорите все и еще на деньги попадете
|
|||
22
Jenstel
23.05.14
✎
23:21
|
(21) Нет необходимости. 12 часов чтения мануалов и кодинга принесли свои плоды. Теперь из приложения возможно автоматом создавать неограниченное количество платежных поручений и других документов за секунду на основе данных в базе, а также, заодно связал программу и с клиент-банками и теперь есть возможность контролировать оплату и движения. Остался только интерфейс, но это мелочи.
Всем спасибо за участие. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |