Здравствуйте, abdula, Вы писали:
A>Как из С# подключиться к 1С? A>раньше делал через OLE (VFoxPro, VBasik).
Соди на http://www.gotdotnet.ru/ там есть пример.
и солнце б утром не вставало, когда бы не было меня
S> Соди на http://www.gotdotnet.ru/ там есть пример.
это не то
запускаеться мой *.exe, он лезет в 1С и грузит себе все необходимое из нее, после небольшой обработки, выгружаем в 1С.
в данном случае юзеру не нать запускать 1С.
Здравствуйте, abdula, Вы писали:
S>> Соди на http://www.gotdotnet.ru/ там есть пример. A>это не то A>запускаеться мой *.exe, он лезет в 1С и грузит себе все необходимое из нее, после небольшой обработки, выгружаем в 1С. A>в данном случае юзеру не нать запускать 1С.
Посмотри v77websrv или я тебе ее скину. Честно не промню где взял. Но принцип обычный, на рефлексии.
S> Посмотри v77websrv или я тебе ее скину. Честно не промню где взял. Но принцип обычный, на рефлексии.
спасибо большое, у меня ее нет, проверь свою почту указанную на здешней регистации, там мой рабочий ящик, пропускная способность 2метра
Здравствуйте, abdula, Вы писали:
S>> Посмотри v77websrv или я тебе ее скину. Честно не промню где взял. Но принцип обычный, на рефлексии. A>спасибо большое, у меня ее нет, проверь свою почту указанную на здешней регистации, там мой рабочий ящик, пропускная способность 2метра
Лови отослал. 68 кб.
Удачи.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, al, Вы писали:
al>Здравствуйте, Serginio1, Вы писали:
al>А не проще ли использовать VB.NET?
Я не пользуюсь. Честно говоря использую прямой досту к БД 1С.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, al, Вы писали:
al>Здравствуйте, Serginio1, Вы писали:
al>А не проще ли использовать VB.NET?
Да кстати на метаданных 1С очень легко строится объектная обертка вокруг "объектов" 1С и уже работаешь с типизированными объектами в отличии от VB.NET
и солнце б утром не вставало, когда бы не было меня
Данный пример вызывает 1С 7.7 Торговля SQL, запускает функцию из глобального модуля ProcessCountriesList() и выходит. Далее — обточить напильником по необходимости.
Люди, все работает!!!
на будущее:
если рабочий каталог базы 1С: C:\1с\FSBUCH
То в С# его так и пишите, такие фишки как: c:\1C\FSbuch не прокатят (утро вечера мудренее )
string sPach = @"/DC:\1с\FSBUCH /N";
Ребята, спасибо Вам за примеры, без них долго сам разбирался.
A>стою на асфальте я в лыжи обутый ...
В первых ExecuteBach это вызов процедуры. Зачем 3 аргумента, если нужен 1.
Применяй напрямую вызов глобальной функции 1С помеченной как экспорт. A>object [] arg1 = new object[] { "", ""};
lateBoundType.InvokeMember("глЕстьРеквизитШапки", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, v77, arg1); A>на этой строке выкидывает...
или object [] arg1 = new object[] {"глЕстьРеквизитШапки(""""","""")"}; A>lateBoundType.InvokeMember("EvalExpr", BindingFlags.Public | BindingFlags.InvokeMethod |
и солнце б утром не вставало, когда бы не было меня
Функция ProcessCountriesList() Экспорт
//Очистить справочник стран
Спр = СоздатьОбъект("Справочник.Страны");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл
Спр.Удалить(1);
Спр.ВыбратьЭлементы();
КонецЦикла;
Возврат 1;
КонецФункции
Название функции по-английски, чтоб вопросов лишних не возникало. Насчет параметров: V>> object [] arg1 = new object[] {"ProcessCountriesList()"}; V>> lateBoundType.InvokeMember("EvalExpr", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, v77, arg1);
В моем случае параметров нет, подозреваю что в твоем случае нужно получить некую строку для вызова, типа "<имя_функции>(<параметр1>,...)" и передавать ее при создании arg1.
A>object [] arg1 = new object[] {"глЕстьРеквизитШапки()", "", ""}; A>lateBoundType.InvokeMember("ExecuteBach", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, v77, arg1); A>на этой строке выкидывает...
Что такое ExecuteBach??? Я такой команды у 1C не знаю. Вот EvalExpr, означает выполнить команду, переданную в строке. В принципе вместо этого может быть любая команда 1С, но для уменьшения вызывающего кода и кол-вов вызовов 1С через Reflection, я писал часть обработчика в 1С и дергал одну единственную функцию. Можно даже пойти дальше — через C# дернуть 1С, а она в свою очередь создает COM-объект или делает что угодно. Просто большое кол-во вызовов через OLE (как пишут в 1С) нередко приводит ее в ступор, что она перестает отвечать на запросы. Из-за этого большинство интеграторов механизм обмена данными между конфигурациями часто делают через файл, а не через OLE (т.е. COM). Не знаю что будет в 1С 8.0, но явно не намного лучше
Короче предлагаю закрыть тему про 1С, т.к. это форум про .Net.
A>стою на асфальте я в лыжи обутый ...
Скоро зима
Здравствуйте, Vladosha, Вы писали:
V>Короче предлагаю закрыть тему про 1С, т.к. это форум про .Net.
A>>стою на асфальте я в лыжи обутый ... V>Скоро зима
А чо це то ке НЕТ.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, abdula, Вы писали:
A>Люди, все работает!!! A>на будущее: A>если рабочий каталог базы 1С: C:\1с\FSBUCH A>То в С# его так и пишите, такие фишки как: c:\1C\FSbuch не прокатят (утро вечера мудренее ) A>string sPach = @"/DC:\1с\FSBUCH /N";
A>Ребята, спасибо Вам за примеры, без них долго сам разбирался.
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, abdula, Вы писали:
S>>> Посмотри v77websrv или я тебе ее скину. Честно не промню где взял. Но принцип обычный, на рефлексии. A>>спасибо большое, у меня ее нет, проверь свою почту указанную на здешней регистации, там мой рабочий ящик, пропускная способность 2метра S> Лови отослал. 68 кб. S> Удачи.
Прошу прощение за вклинивание. Скажите плиз что такое v77websrv и где его можна взять. Еще интересует есть ли у кого пример работы с БД 1С из дот нет. У меня проблема с кодировкой кириллицы. Еще интересует как получить возвращаемое значение функции 1С используя кода приведенный вами ниже:
Здравствуйте, ablazhko, Вы писали:
A>Здравствуйте, Serginio1, Вы писали:
S>>Здравствуйте, abdula, Вы писали:
S>>>> Посмотри v77websrv или я тебе ее скину. Честно не промню где взял. Но принцип обычный, на рефлексии. A>>>спасибо большое, у меня ее нет, проверь свою почту указанную на здешней регистации, там мой рабочий ящик, пропускная способность 2метра S>> Лови отослал. 68 кб. S>> Удачи.
A>Прошу прощение за вклинивание. Скажите плиз что такое v77websrv и где его можна взять. Еще интересует есть ли у кого пример работы с БД 1С из дот нет. У меня проблема с кодировкой кириллицы. Еще интересует как получить возвращаемое значение функции 1С используя кода приведенный вами ниже:
A>object [] arg1 = new object[] {"ProcessCountriesList()"}; A> lateBoundType.InvokeMember("EvalExpr", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, v77, arg1);
Здравствуйте, t_a_n_k, Вы писали:
___>Здравствуйте, ablazhko, Вы писали:
A>>интересует как получить возвращаемое значение функции 1С
___>Все еще актуально. Посмотрел ссылки в конце ветки, ниче толком не понял
Тоже не все понял из этой ветки...
Вообще сейчас для обмена данными, что с V77, что с V8 можно (и даже нужно) использовать XML.
Благо на диске ИТС лежат две конфигурации:
1С:Предприятие 7.7. Конвертация данных;
1С:Предприятие 8.0. Конвертация данных.
Поэтому для offline проще (и надежнее) обмениваться данными через XML.