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