Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
13 Дек 2017, 18:10
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: 1С 7.7 + .NET = как обмениваться данными с 1С ?  (Прочитано 6936 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн hotcoder

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-07-26
  • Сайт: 
  • Профессия: Программист 1С
Есть приложение .NET написанное с помощью языка C#.
Код:
private void OnAppStartup(object sender, StartupEventArgs e)
{
    object inst = null;
    try
    {
        //
        // Запускаем 1C
        //
        inst = Activator.CreateInstance(Type.GetTypeFromProgID("V77L.Application", true));
        var type = inst.GetType();
 
        var args = new Object[3];
        args[0] = type.InvokeMember("RMTrade", BindingFlags.Public | BindingFlags.InvokeMethod, null, inst, null);
        args[1] = @"/d D:\\1С_Data /n /p";
        args[2] = "NO_SPLASH_SHOW";
 
        bool ok = (Boolean) type.InvokeMember("Initialize", BindingFlags.Public | BindingFlags.InvokeMethod, null, inst, args);
        if (ok)
        {
           // Вызываем функцию MyTest из главного модуля.
            var result = type.InvokeMember("MyTest", BindingFlags.Public | BindingFlags.InvokeMethod, null, inst, new object[] { null });
        }
        else
        {
            Trace.WriteLine("Unable to initialize V77.Application.");
            Trace.Flush();
        }
    }
    catch (Exception ex)
    {
        Trace.TraceError(ex.Message);
        Trace.Flush();
    }
    finally
    {
        inst = null; // закрываем 1С
 
        GC.Collect();
        GC.WaitForPendingFinalizers();
 
        Shutdown();
    }
}


И есть 1С Предприятие 7.7. Нужно: записывать данные в справочники и читать тз них. Проблема в том, что когда запущена 1С, то мой код не работает. Функция Initialize возвращает False.
Как мне научить мое приложение обмениваться данными с 1С 7.7 ?


Оффлайн sergejK74

  • *****
  • Сообщений: 1093
  • РЕПУТАЦИЯ: 458
  • КПД: 42%
  • Всегда готов помочь!
  • Регистрация: 2011-07-08
  • Сайт: 
  • Профессия: Ученик 1С
Type.GetTypeFromProgID("V77L.Application", true) - это локальная однопользовательская версия. Смените на сетевую V77.Application или SQL-версию V77S.Application
Кнопочка Спасибо - слева!

Оффлайн hotcoder

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-07-26
  • Сайт: 
  • Профессия: Программист 1С
Type.GetTypeFromProgID("V77L.Application", true) - это локальная однопользовательская версия. Смените на сетевую V77.Application или SQL-версию V77S.Application
Сделал, всё равно не помогло. При зупущенной 1С-ке в монопольном или сетевом режиме моя программа все равно на Initialize возвращает false

Оффлайн hotcoder

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-07-26
  • Сайт: 
  • Профессия: Программист 1С
P.S. У меня БД файловая - таблички в файлах DBF.

Оффлайн sergejK74

  • *****
  • Сообщений: 1093
  • РЕПУТАЦИЯ: 458
  • КПД: 42%
  • Всегда готов помочь!
  • Регистрация: 2011-07-08
  • Сайт: 
  • Профессия: Ученик 1С
Пользователи в базе заведены? Если да - то без указания свободного пользователя не должна пускать?
Кнопочка Спасибо - слева!

Оффлайн hotcoder

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-07-26
  • Сайт: 
  • Профессия: Программист 1С
Пользователи в базе заведены? Если да - то без указания свободного пользователя не должна пускать?

Пользователи не заведены.

Сейчас провел эксперимент добавил 2 пользователя - администраторов. Пробую вызывать указывая пользователя @"/d D:\\1С_Data /n User2 /p", когда 1C уже запущена с пользователем User1... увы, Initialize опять false...

Если выключить все 1С-ки, то вызов функции MyTest возвращает 2.0 - как и положено, т.е. функция описана в глобальном модуле...

Оффлайн sergejK74

  • *****
  • Сообщений: 1093
  • РЕПУТАЦИЯ: 458
  • КПД: 42%
  • Всегда готов помочь!
  • Регистрация: 2011-07-08
  • Сайт: 
  • Профессия: Ученик 1С
Сделай простейшие пароли. Добавь каждому пользователю свой рабочий каталог. Обязательно должна быть как минимум сетевая 1с. Точно не помню как в 7.7 - но лучше если конфигурация не будет базовой
Кнопочка Спасибо - слева!

Оффлайн hotcoder

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-07-26
  • Сайт: 
  • Профессия: Программист 1С
Я смекнул что к чему...  :wacko:

Решил проверить GUID в реестре: V77.Application и V77L.Application стоят рядышком соответственно HKEY_CLASSES_ROOT\CLSID\{63112D80-94F0-11D2-9F39-008048DA120F} и HKEY_CLASSES_ROOT\CLSID\{63112D81-94F0-11D2-9F39-008048DA120F}.

Проверяю значения в разделе LocalServer32 и вижу, что для сетевой версии стоит файл D:\1Cv77\BIN\1cv7l.exe    - это повергло меня в шок  - изменил на D:\1Cv77\BIN\1cv7s.exe  и тут то всё у меня и заработало...  Ура!! )


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
172 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
51 Сообщений
alex0402
49 Сообщений
andron81_81
39 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
34 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 591
  • Точка Скрытых: 0
  • Точка Пользователей: 8
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal