8.х v8.1 + Sharp (C#)

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем Severwolf, 18 дек 2008.

  1. TopicStarter Overlay
    Severwolf
    Offline

    Severwolf

    Регистрация:
    16 дек 2008
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    1
    Доброго времени суток
    Вот решил разобраться в этой связки, так как могут открыться большие возможности (как пример выполнение скриптов которые запускали бы батнички в определенные моменты времени, а те в свою очередь заходили и тварили бы свои "грязные делишки" в 1С)

    Как я понял существует два вида соединения через COM и через OLE, соответствующие библиотеки уже присутствуют в 1С это V81.ComConnector и V81.Application
    1) в чем их разница?
    Мое понимание разницы: а) com работает по быстрее чем ole, но ole в свою очередь предоставляет больше возможностей по доступу к данным. б) тогда как при ole соединении запускается сам процесс 1cv8.exe, то при сом соединении процесса не запускается о происходит как бы втягивание 1С в процесс com соединения.
    Вот хотелось бы услышать более развернутый ответ нежели мои скомканные мысли )))
    2) как произвести соединение?
    блуждая по просторам рунэта нашел пару примеров

    СОМ соединение
    Код:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace v81ComConnect
    {
    class Program
    {
    static void Main(string[] args)
    {
    object v81Connect = null;
    object v81Base = null;
    Type v81Type;
    object[] connectargs = new object[1];
    connectargs[0] = "File=D:\\1C_Bazis\\LAST; Usr=USR1CV81;";
    v81Type = Type.GetTypeFromProgID("v81.ComConnector");
    v81Connect = Activator.CreateInstance(v81Type);
    v81Base = v81Type.InvokeMember("Connect", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.InvokeMethod, null, v81Connect, connectargs);
    }
    }
    }
    
    OLE соединение

    Код:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace v81OLEConnect
    {
    class Program
    {
    static void Main(string[] args)
    {
    object v81Connect = null;
    object v81Base = null;
    Type v81Type;
    
    object[] connectargs = new object[1];
    connectargs[0] = "File=D:\\1C_Bazis\\LAST; Usr=USR1CV81;";
    v81Type = Type.GetTypeFromProgID("v81.Application");
    v81Connect = Activator.CreateInstance(v81Type);
    // v81Base = v81Type.InvokeMember("Connect", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.InvokeMethod,null, v81Connect, connectargs);
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/if')">if ((bool)v81Connect.GetType().InvokeMember("Connect", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.InvokeMethod, null, v81Connect, connectargs));</span>
    {
    v81Connect = null;
    }
    }
    }
    }
    
    вот интересует корректность написание кода (синтаксическая его правильность)????
    И дальнейшие варианты работы с соединение? Если есть у кого реальные примеры раоты то пожалуйста вылажите чтоб хотя бы напримеры посмотреть, матариалу ша сям уж очень мало :unsure:
    Если есть дайте ссылку на материал.
  2. dlednev
    Offline

    dlednev Опытный в 1С

    Регистрация:
    23 апр 2008
    Сообщения:
    86
    Симпатии:
    0
    Баллы:
    26
    Самое главное для тебя сейчас понять, что при ком-соединении отсутствуют ВСЕ визуальные компоненты и запускается другой обработчик открытия приложения. При оле-соединении запускается полноценное ОКОННОЕ приложение.
    Итог - оле тебе надо использовать, только если надо открывать и программно управлять визуальными компонентами.
    На самом деле, сейчас 1с умеет делать все сама и управлять визуальными формами из другого приложения не требуется. Уже 2 года сижу на 8-ке и НИ РАЗУ ничего подобного не потребовалось.

Поделиться этой страницей