8.х ОБМЕН Что в 8.1 вместо V77.Application

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

  1. TopicStarter Overlay
    Ilya81
    Offline

    Ilya81

    Регистрация:
    15 дек 2010
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Дело такое. Для передачи данных из базы данных под Firebird в базу данных 1С используется приложение, написанное на C++ Builder. Для версии 7.7 оно успешно работало с помощью следующих строк:
    Код:
      if ( s1cAppProgID.Trim().Length() > 0 )
    {
    s1cResult = GetActiveObject( ProgIDToClassID( s1cAppProgID.Trim() ), NULL, &s1cUnknown );
    
    if ( s1cResult == MK_E_UNAVAILABLE )
    {
    result = CreateOleObject(s1cAppProgID.Trim());
    rmTrade = result.OlePropertyGet("RMTrade");
    result.OleProcedure("Initialize", rmTrade, InitLine.Trim().c_str(), EmptyString.Trim().c_str());
    }
    else
    result = GetActiveOleObject(s1cAppProgID.Trim());
    }
    
    Здесь s1cAppProgID == "V77.Application". Я сумел найти в inet'е, что в 8.1 есть и V81.Application, и V81.ComConnector, но при этом свойство RMTrade не признаётся - возникает ошиба. Чем его заменить, мне не удалось найти до сих пор. Подскажите, пожалуйста, как то же самое написать для 1С версии 8.1.
  2. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Смысл в том, что для 77 RMTrade используется при соединении (Initialize) с базой, а для 8х этот параметр упразднили. Т.е. при коннекте к базе 8х этот параметр не нать.

    Вот аналогичная тема с мисты:
    http://www.forum.mista.ru/topic.php?id=443669

    В целом - хочу отметить, что можно работать с базами файрбирд из самой восьмерки минуя всякие приблуды.
    http://www.1c-pro.ru/index.php?showtopic=19909
  3. TopicStarter Overlay
    Ilya81
    Offline

    Ilya81

    Регистрация:
    15 дек 2010
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Переделывать всё вряд ли имеет смысл, когда программа написана и имеет определённый интерфейс, а вот подключиться не удаётся - метод Connect со строкой подключения не срабатывает, и хуже всего, что сообщение об исключении очень многозначительно состоит лишь из одного слова ошибка. Я, собственно, пытаюсь воспроизвести следующий пример:
    Код:
    Функция ПодключитьсяКБазе()
    
    ПутьКБазе = """C:\!1C_BASES\DemoAccounting\"""; // Если есть пробелы, то кавычки
    
    Пользователь = """Абдулов (директор)""";   
    СтрокаПодключения = "File=""" + Путь + """;Usr=" + Пользователь + ";";                      
    
    Com = СоздатьОбъект("V81.COMConnector");
    V8 = Com.Connect(СтрокаПодключения);
    Если ТипЗначенияСтр(V8) = "OLE" Тогда
    Сообщить("подключение выполнено");
    Возврат 1;
    Иначе
    Com = "";
    Возврат 0;
    КонецЕсли;        
    КонецФункции
    
    Выглядит так:
    Код:
    s1cResult = GetActiveObject( ProgIDToClassID( "v81.ComConnector" ), NULL, &s1cUnknown );
    if ( s1cResult == MK_E_UNAVAILABLE )
    {
    result = CreateOleObject("v81.ComConnector");
    AnsiString initstr = "File=\"C:\\Users\\icylikov\\Documents\\1C\\DemoAccounting\\\";Usr=\"Абдулов (директор)\"";
    result.OleProcedure("Connect", initstr.c_str());
    }
    
    До вызова метода Connect это доходит, а дальше это многозначительное соообщение. Использую ту самую демонстрационную базу данных для проверки соединения.
  4. TopicStarter Overlay
    Ilya81
    Offline

    Ilya81

    Регистрация:
    15 дек 2010
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Подключиться-таки удалось, оказывается, в конфигураторе нужно было просто задать права доступа. Теперь никак не могу понять, как быть с объектами - теперь сообщение - неизвестное имя, - и так всё, что пытаюсь с помощью функции NewObject. Пробовал "Справочник", "Запрос" - везде сообщение неизвестное имя. Здесь тоже что-то поменялось в 8-й версии?
  5. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Конечно. Методологию поменяли полностью.
    Теперь обращение такое:
    Код:
    NewObject("Справочники.Номенклатура")
    

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