Имя: Пароль:
1C
 
Использование классов .Net в 1С для новичков
0 Serginio1
 
27.01.16
11:58
Выложил статью http://catalog.mista.ru/public/448668/ в которой постарался объяснить работу обертки NetObjectToIDispatch45 обертывающую Объекты .Net через Com объекты.
Саму разработку можно скачать отсюда http://files.rsdn.ru/19608/%d0%a4%d0%b0%d0%b9%d0%bb%d1%8bNetObjectToIDispatch.zip

Недавно решенные проблемы
Асинхронные WinHttp.WinHttpRequest.5.1 и MSXML2.XMLHTTP
Помощь с Web сервисом

Предыдущие темы
Динамическая компиляция для использования .Net событий в 1С
1C Messenger для отправки сообщений, файлов и обмена данными между пользователям
v8: v8: Использование сборок .NET в 1С 7.x и 8.x

По поводу регистрации Для проведения тестов нужно распаковать архив . Татем нужно  зарегистрировать
Нужные DLL. Запускаем РегистрацияКомСервера.exe от имени администратораи выбираем NetObjetToIDispatch45.dll которая лежит в DLLNetObjetToIDispatch45
Либо 1с и многопоточность
1 Serginio1
 
27.01.16
14:28
Послеобеденный ап
2 Garykom
 
гуру
27.01.16
14:38
(0) Уже почти отлично, понятнее будет многим зачем это.
3 ДенисЧ
 
27.01.16
14:40
"С точки зрения 1С их можно рассматривать как классы"

Уже ошибка. В 1с нету классов. Поэтому и точки зрения такой нет
4 Serginio1
 
27.01.16
14:48
(3) Речь шла про Классы, Валуе типы и перечисления.

Обертка позволяет работать с классами, а для 1С это будут объекты.


В 1С есть классы. Например Документы.Реализация это класс
У него есть статические методы (методы Менеджера) и Методы объекта, свойства (реквизиты). У него есть тип.
Так, что Денис ты не прав.
5 Serginio1
 
27.01.16
14:49
(2) А мне почему то казалось, что и в первоначльной статье все очень просто.
6 ДенисЧ
 
27.01.16
14:50
(4) Нету в 1с классов.
Покажи мне цитату из ЖКК, где оные упоминаются.
7 Волшебник
 
модератор
27.01.16
14:51
(6) В 1С есть классы. В ЖКК они называются Объектами метаданных.
8 ДенисЧ
 
27.01.16
14:51
(7) Покажите мне в ЖКК слово "класс".
тогда я угомонюсь.
9 Timon1405
 
27.01.16
14:51
(6) проф разработка с 157
А  от  чего  зависит  состав  стандартных  команд?  Конечно  же,  от  класса
объектов,  которому  принадлежит  объект  конфигурации.  И  это  логично,
так  как  различные  классы  объектов  конфигурации  предназначены
для решения различных прикладных задач.
Например,  объект-справочник Товары предоставляет  команды  открытия
списка элементов – Товары, создания нового элемента – Товари создания
новой группы – Товар: создать группу, а объект-отчет Остатки товаровтолько
команду открытия формы отчета – Остатки товаров(рис. 7.27)
10 Волшебник
 
модератор
27.01.16
14:51
(8) Ты тупой?
11 Serginio1
 
27.01.16
14:53
(6) Ту суслика видишь? А он есть. Если ЖКК не написано, это не значит, что классов нет. Просто они названы по другому
МенеджерСправочник, МенеджерСсылка,МенеджерОбъект
12 Garykom
 
гуру
27.01.16
14:56
(3) не придирайся к словам/фразам вырванным из контекста

"В  .Net есть классы, структуры(Value типы), перечисления. С точки зрения 1С их можно рассматривать как классы. Каждый класс характеризуется типом."

"По аналогии с 1С классы это справочники, документы и т.д.
У классов могут быть статические методы и свойства  и методы и свойства объекта."

"По аналогии с 1С статические методы это методы менеджера (НайтиПоКоду,НайтиПоНомеру), а методы объекта аналогичны методам объекта (Модифицированность, Удалить, Номер,Дата)"
13 Serginio1
 
27.01.16
15:01
(12) Спасибо. Кстати несмотря на большие накладные затраты для вызова  на примере StringBuilder вызов метода .Net объекта всего в 2.25 раз дороже родного.
14 ДенисЧ
 
27.01.16
15:02
(10) Да, я же 1сник.
15 Serginio1
 
27.01.16
15:04
(14) Спасибо, что ветку поддерживаешь. Может и сам заинтересуешься.
16 KrabCore
 
27.01.16
16:07
(0) выглядит очень не плохо, только недавно сокрушался что в 1с нет регулярок.

но боюсь что в массы не зайдет, т.к. надо "думать" и знать синтаксис шарпа. те кто умеет думать - давно уже занимаются чем-то более серьезным, а тех кто остался в 1с все устраивает)
17 ejikbeznojek
 
27.01.16
16:53
ОбернутаяСтрока=Врап.ОбернутьЛюбойОбъект("Тестовая строка");

Как-то странно, когда я в отладке разворачиваю обёрнутую строку начинает ошибки выдавать)

Ошибка в методе Chars не найден метод "System.string.Chars". mscorlib
18 Garykom
 
гуру
27.01.16
17:00
(17) не надо этого делать ))
отладчик 1С вроде не предназначен чтобы COM объекты раскручивать
19 Serginio1
 
27.01.16
17:32
(16) Ну есть примеры и на бейсике. Всегда могут спросить и помочь могу не только я
20 Serginio1
 
27.01.16
17:34
Кстати посмотрел я на пример где синхронно вызывается ассинхронный метод и решил написать классы, которые вызывали события по окончании работы задачи

Теперь можно любой асинхронный метод возвращающий Task<TResult> вызвать асинхронно
Выполнитель=Врап.ПолучитьАссинхронныйВыполнитель();
    ДобавитьОбработчик Выполнитель.ПриОкончанииВыполненияЗадачи, ПриОкончанииВыполнения;

    HttpClient=Врап.ПолучитьТипИзСборки("System.Net.Http.HttpClient","System.Net.Http.dll");
Клиент=Врап.СоздатьОбъект(HttpClient);
Задача=Клиент.GetStringAsync("https://msdn.microsoft.com/ru-ru/library/hh551745(v=vs.118).aspx";);
Выполнитель.Выполнить(задача);
КонецПроцедуры

Процедура ПриОкончанииВыполнения(Данные)
Попытка
Сообщить(Врап.Встроку(Данные));
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки
21 Serginio1
 
27.01.16
17:35
Чуть позже выложу новую версию
22 Serginio1
 
27.01.16
17:39
Загрузил. По идее ссылка та же
http://files.rsdn.ru/19608/%d0%a4%d0%b0%d0%b9%d0%bb%d1%8bNetObjectToIDispatch.zip
23 Serginio1
 
27.01.16
17:47
(16) То что в массы не пойдет давно известно, но постепенно количество людей использующие эту разработку увеличивается.
Например http://catalog.mista.ru/public/434345/
Просто используя классы .Net можно сильно упростить себе множества задач.
24 Cyberhawk
 
27.01.16
17:54
Слишком много ссылок в первом сообщении. Что открывать-то для быстрого ознакомления?
25 Serginio1
 
27.01.16
18:04
(24) Самую первую  http://catalog.mista.ru/public/448668/

(16) Вот пример использования делегатов для Replace
Динамическая компиляция для использования .Net событий в 1С
26 qwerty
 
27.01.16
21:53
я с этой ветки Асинхронные WinHttp.WinHttpRequest.5.1 и MSXML2.XMLHTTP
Спасибо, все заработало. Теперь осталось разобраться в обилии классов dot net и где их можно использовать
27 Garykom
 
гуру
27.01.16
22:01
Шеф, в linux можно сделать sudo apt-get install mono-devel

После этого к примеру консольные проги на .Net даже скомпиленные под Вин (главное битность платформы) прекрасно выполняются через
mono hello.exe

Вот как бы из платформы 1С на linux это тоже заюзать? COM то на линукс нету ((
Нуно NativeAPI юзать
28 Cyberhawk
 
27.01.16
22:23
Во-первых, хорошо бы ссылку на статью на ИС, а не на каталоге мисты... Я для этого "оборачиваю" ссылки на ИС с помощью goo.gl
Во-вторых, в статье говорится "поможет сильно увеличить возможности 1С без написания COM объектов или ВК" - хотелось бы увидеть конкретный краткий список (либо в начале статьи - типа будет рассмотрено (или оглавление), либо в конце статьи, как итог), а не бегать по статье и коду
29 Злопчинский
 
27.01.16
22:43
если пишешь "для новичков" - то и пиши для новичков
Вопрос-1
""Начнем сразу на примерах. Итак, для начала создадим объект, который будет обертывать объекты .Net в COM объекты.""
- что такое "обертывать", зачем "обертывать"
30 Злопчинский
 
27.01.16
22:43
или в статье сразу обозначь минимально требуемый уровень квалификации для использования сабжа/понимания статьи
31 Злопчинский
 
27.01.16
22:45
"Теперь получим тип System
String=Врап.ПолучитьТип("System.String");"
- так все-таки получаем тип систем или стринг? - если систем - то при чем здесь стринг?
32 Злопчинский
 
27.01.16
22:46
аббревиатура GAC - не определена (м.б. это общепринятая какая-то?)
33 Злопчинский
 
27.01.16
22:52
а так, конечно, здорово.
но нужно скорее всего чистым сугубо 1С-кодерам...
34 Garykom
 
гуру
27.01.16
23:02
да это немного уровень не новичка

(29) обертка это объект скрывающий внутри себя тонкости/сложности использования другого кода
для C# и .Net стандартный термин
к примеру на 1С вызов функции/процедуры с параметрами, внутри которой сложный код это такой пример обертки

(31) тип String(Стринг, Строка), "находится" в "модуле" (пространстве имен, сборке) System, поэтому полное его имя "System.String"
для обращения по короткому имени нужен в начале кода "импорт модуля", для "базовых модулей" он неявный/подразумевается

(32) https://ru.wikipedia.org/wiki/Global_Assembly_Cache
это нечто вроде набора процедур/функций/объектов и прочего платформы 1С, все прочее отдельно ))
35 Злопчинский
 
27.01.16
23:12
(34) спсб за пояснения
36 Serginio1
 
27.01.16
23:42
(26)  Посмотри 20 22 другое решение твоей проблемы
завтра сделаю с вызовом события при ошибке
(28) http://catalog.mista.ru/profile/82159/public/
37 Serginio1
 
27.01.16
23:42
(34) Спасибо за помощь.
38 Serginio1
 
27.01.16
23:44
39 Serginio1
 
27.01.16
23:55
(31) Там как раз и написано про пространство имен

Каждый класс характеризуется именем класса, пространством имен и сборкой (размещение Dll, Exe).

Рассмотрим класс String https://msdn.microsoft.com/ru-ru/library/system.string(v=vs.110).aspx

Представляет текст как последовательность знаков Юникода.

Исходный код .NET Framework для этого типа см. в указанном источнике.

Пространство имен:   System
Сборка:  mscorlib (в mscorlib.dll)

Начнем сразу на примерах. Итак, для начала создадим объект, который будет обертывать объекты .Net в COM объекты.
врап=новый COMОбъект("NetObjectToIDispatch45");




Теперь получим тип System
String=Врап.ПолучитьТип("System.String");



Для понимания правильнее будет так
ПространствоИмен="System.";
String=Врап.ПолучитьТип(ПространствоИмен+"String");



Кто работал с ФабрикаXDTO, то там тоже есть простанство имен и типы.
40 Cyberhawk
 
27.01.16
23:58
(36) Зачем ссылка на твои публикации?
41 Serginio1
 
28.01.16
07:23
(40) Извини не понял.
Если ты имел ссылки на форуме мисты, то я показал все статьи на инфостарте. Просто все ссылки на инфостарте перефодятся на каталог мисты.

А что касается "Во-вторых, в статье говорится "поможет сильно увеличить возможности 1С без написания COM объектов или ВК" - хотелось бы увидеть конкретный краткий список (либо в начале статьи - типа будет рассмотрено (или оглавление), либо в конце статьи, как итог), а не бегать по статье и коду"

То в ссылке на разработку куча примеров использования .Net классов, а составлять полный список классов .Net займет всю мою оставшуюся жизнь.
42 extrim-style
 
28.01.16
08:46
43 Serginio1
 
28.01.16
09:55
1C Messendger выложил отдельно https://yadi.sk/d/G67GAnc-nrUJ9
44 Serginio1
 
28.01.16
09:57
(26) Я сейчас 20 подправлю что бы можно было отлавливать ошибки и передавать данные о задаче. И сделаю отчет где расскажу как асинхронно выполнять методы
45 Cyberhawk
 
28.01.16
11:43
(41) "в ссылке на разработку куча примеров использования .Net классов" // Вот каждый пример Я и предлагаю озаглавить и оформить получившийся список
46 Serginio1
 
28.01.16
11:46
Выложил новый вариант http://files.rsdn.ru/19608/%d0%a4%d0%b0%d0%b9%d0%bb%d1%8bNetObjectToIDispatch.zip

где добавил асинхронное выполнение методов

Сейчас в .Net широко применяют оператор await. Он применяется к методам возвращающие Task или Task<TResult>.
Task это задача представляет асинхронную операцию. Доступ к результату осуществляется через свойство Result.
В 1С можно использовать либо синхронный вариант например
ДанныеРесурса=Клиент.GetStringAsync("https://msdn.microsoft.com/ru-ru/library/hh551745(v=vs.118).aspx").Result;

Но для того, что бы этот метод выполнить асинхронно я создал класс с помощью которого легко использовать эти методы асинхронно.

врап=новый COMОбъект("NetObjectToIDispatch45");
Выполнитель=Врап.ПолучитьАсинхронныйВыполнитель();
ДобавитьОбработчик Выполнитель.ПриОкончанииВыполненияЗадачи, ПриОкончанииВыполнения;

Обработчик события выглядит так
Процедура ПриОкончанииВыполнения(Задача,ДанныеКЗадаче)

    // Обязательно нужно отлавливать ошибку в 1С
    // Иначе она передается в .Net где обрабатывается там
    Попытка
Так как задача может завершиться с ошибкой
Мы должны проверить, и если ошибка нужно предпринять какие то действия
        Если (Задача.IsFaulted) Тогда  // Ошибка выполнения

            Сообщить("Ошибка "+Врап.ВСтроку(Задача.Exception));
            Сообщить("Данные к задаче "+Врап.ВСтроку(ДанныеКЗадаче));

        иначе
            Сообщить("=====Выполнена задача ====");
            Сообщить("Данные к задаче "+Врап.ВСтроку(ДанныеКЗадаче));
            Сообщить(Врап.ВСтроку(Задача.Result));


        КонецЕсли;

    Исключение
        Сообщить("Ошибка в процедуре");
        Сообщить(ОписаниеОшибки());
    КонецПопытки

КонецПроцедуры

Вызываем задачу так
HttpClient=Врап.ПолучитьТипИзСборки("System.Net.Http.HttpClient","System.Net.Http.dll");
    Клиент=Врап.СоздатьОбъект(HttpClient);
    Задача=Клиент.GetStringAsync("https://msdn.microsoft.com/ru-ru/library/hh551745(v=vs.118).aspx";);
    Выполнитель.Выполнить(задача,ТекущаяДата());
Вторым параметром можно передавать любые данные, что бы понять какая задача выполнена и что с ней делать, так одновременно может работать множество задач

Например

АсинхМетоды = Врап.СоздатьОбъект(КлассДляТестаАсинхронныхМетодов);

    Для сч=1 по 10 Цикл
        задача=АсинхМетоды.ДолгаяЗадача(Строка("Задача "+сч));
        Выполнитель.Выполнить(задача,сч);
    КонецЦикла
47 Serginio1
 
28.01.16
11:48
(45) Я описываю все примеры в
NetObjectToIDispatch.docx
АсинхронноеВыполнениеМетодовВ1С.docx
ОберткаДляНетовскихСобытий.docx
1СMessenger.docx
48 Serginio1
 
28.01.16
11:55
49 Cyberhawk
 
28.01.16
13:28
(47) Я тебе про статью на ИС - сделать для примеров, описанных в ней, заголовки и список/навигацию. Надеюсь, с третьего раза ты все-таки въедешь...
50 Serginio1
 
28.01.16
13:46
(49) Спасибо. Понял.
Кстати я тут народ спрашиваю какие лучше примеры привести, что бы было использовать в повседневной жизни и при этом изучить классы .Net . Как пользоваться документацией, поиском на том же http://stackoverflow.com/
51 Serginio1
 
28.01.16
15:01
Апну. А то вдруг, кто пропустил сиё чудо.
52 Адинэснег
 
28.01.16
15:13
лучеб жаву учили
53 Garykom
 
гуру
28.01.16
15:24
(52) кто знает C# И .Net, тот уже на 80% знает java и JRE|JDK
54 СвинТуз
 
28.01.16
15:48
а классы это что?

объект::позовипапу()

тоска какая то )
55 Serginio1
 
28.01.16
16:02
(52) И жабу учим, только вот Нетовские легче использовать в 1С без обертки.
(54) В 1С классы это документы, справочники и соответственно их наследники конкретные классы.

За статические методы  и свойства  например документов
отвечают менеджеры ДокументМенеджер.<Имя документа>
За методы и свойства объектов
ДокументОбъект.<Имя документа>

Так, что в 1С та же тоска
56 Serginio1
 
28.01.16
16:03
(52) И жабу учим, только вот Нетовские легче использовать в 1С через комовскую оберткой.
57 СвинТуз
 
28.01.16
16:10
(55)
конечно
только наследования нет ?
58 Serginio1
 
28.01.16
16:12
(57) На самом деле есть абстрактный документ, от которого все наследуются.
http://catalog.mista.ru/public/393228/
59 Serginio1
 
28.01.16
16:13
58+ А все остальные sealed
https://msdn.microsoft.com/ru-ru/library/ms173150.aspx
60 СвинТуз
 
28.01.16
16:17
(59)
в с++ можно вызвать метод печать класса
а можно вызвать этот же метод родительского класса

1с это конструктор, для людей знающих предметную область
и 1с все быстрее шагает в эту сторону
61 Карупян
 
28.01.16
16:19
(60) ты уверен, что знаешь куда шагает 1с?
62 СвинТуз
 
28.01.16
16:19
(61)
нет
63 СвинТуз
 
28.01.16
16:21
но отчеты можно уже не программировать а настраивать
другое дело , что видал я такие отчеты ...
знать нужно все то же самое
что на 7.7 что на 8.3
люди с удивлением для себя открывают на 8.3, то что
в 90-е было в порядке вещей на языках более низкого уровня
64 СвинТуз
 
28.01.16
16:22
нынешние коучеры
переписывают информацию из БОЛ ...
65 СвинТуз
 
28.01.16
16:23
учителя от 1с

просто народ не знает где корни ...
многие кроме 8.3 не видели ничего
66 Serginio1
 
28.01.16
16:23
(60) То же самое и в 1С.
А например .Net шагает в сторону функциональщины, но основанной на классах. Просто это зарыто глубоко и его не видно.
Но это не значит, что классов нет.
(63) Программировать все равно нужно. Использование классов .Net просто расширяет возможности 1С. Только и всего
67 Карупян
 
28.01.16
16:24
Мне кажется и ооп рано или поздно будет в 1с
68 Карупян
 
28.01.16
16:24
а может и вообще на жаву перейдут
69 Карупян
 
28.01.16
16:25
(68) вон уже сервер начали на жаву переписывать
70 Serginio1
 
28.01.16
16:25
(68) А может и на .Net он тоже кроссплатформенный. А могут и JS или TS.
71 Карупян
 
28.01.16
16:33
(70) см (69) УЖЕ начали, а именно сервер 8.4
72 Тoлько_
Просмотр
 
28.01.16
16:36
(68) Это будет лучшее, что делала фирма 1С со времен платформы 7.7.
73 Masquerade
 
28.01.16
16:37
(67)

Уж скорей бы.
74 Masquerade
 
28.01.16
16:37
(68)

Увы конечно, но уж хотя бы java
75 Карупян
 
28.01.16
16:38
(73) "скорей" в терминах 1с - это лет 10
76 Музон Хиггса
 
28.01.16
16:41
(60) >> в с++ можно вызвать метод печать класса
а можно вызвать этот же метод родительского класса

А можно и в ногу стрельнуть

#include <iostream>

class Foo {
    public:
        int x;
        virtual void print();
};

class Bar: public Foo {
    public:
        int y;
        virtual void print();
};

void Foo::print() {
    std::cout << "x: " << this->x << '\n';
}

void Bar::print() {
    std::cout << "x: " << this->x << " y: " << this->y << '\n';
}

void print(Foo foo) {
    foo.print();
}

void print2(Foo &foo) {
    foo.print();
}

void print3(Foo *foo) {
    foo->print();
}

int main() {
    Bar bar;
    bar.x = 5;
    bar.y = 10;

    print(bar);
    print2(bar);
    print3(&bar);
}
77 Garykom
 
гуру
28.01.16
16:47
(72) как то попытался открыть проект в еклипсе, на нетбенсе он у меня открывался 1 минуту

в эклипсе просто надоело ждать, снес
78 Garykom
 
гуру
28.01.16
16:47
(77)+ это я к чему

неважно на чем, один фиг испоганить чтобы тормозило смогут

1С сча на C++ написаны и что?
79 Карупян
 
28.01.16
17:01
(77) у тебя 16 гиг памяти есть? )))
80 Serginio1
 
28.01.16
17:07
(71) От того, что они движок напишут на Java, на язык 1С я думаю мало повлияет. А вот если бы приняли за основу языка 1С аналог TypeScript то это дало бы бОльший эффект как для клиента, так и для сервера, так как там псевдотипизация существует. Меньше ошибок, большая скорость набора за счет интеллисенсе, ну и главное замыкание да и асинхронность вещь нужная
81 Serginio1
 
28.01.16
17:12
82 Музон Хиггса
 
28.01.16
17:20
83 Serginio1
 
28.01.16
17:24
(82) Кстати а есть питон с типизацией. У TS мне нравится псевдотипизация
84 Garykom
 
гуру
28.01.16
17:26
(79) на домашнем да 16 гигов, на ноуте 4
85 Музон Хиггса
 
28.01.16
18:01
86 Музон Хиггса
 
28.01.16
18:03
(79) Да ну! Хватит и 8-ми. )
87 Serginio1
 
28.01.16
18:09
(85) Спасибо. Интересно.
88 Garykom
 
гуру
28.01.16
18:15
ненавижу питон... тупице который придумал синтаксис конструкций языка основывать на пробелах/табуляции

чтоб ему вечно после html/doc со сменой выравнивания прогу запустить пытаться на python
89 Музон Хиггса
 
28.01.16
18:22
(88) https://ru.wikipedia.org/wiki/ABC_(язык_программирования)
Автор:     
Leo Geurts, Lambert Meertens (англ.), Steven Pemberton (англ.); Центр математики и информатики
90 Garykom
 
гуру
28.01.16
18:24
(89) так их несколько таких было "теоретиков"???

сначал трое и потом еще их ученик?

Интересные факты
ABC часто связывают с Python, так как разработчик последнего — Гвидо ван Россум, — первоначально, в 1980-е годы, работал над ABC[3][4][5].
91 Музон Хиггса
 
28.01.16
18:30
На практике с отступами нигде проблем не возникает, а вот листинги из-за отсутствия скобок чище и короче.
92 Garykom
 
гуру
28.01.16
18:35
(91) угу особенно когда на практике может быть до 10 вложенных конструкций
93 Музон Хиггса
 
28.01.16
18:36
(92) Не может.
94 Карупян
 
28.01.16
18:37
Lisp vs Python
Кто кого? )))
95 Музон Хиггса
 
28.01.16
18:41
(94) Есть достаточно языков намного более мощных чем яваскрипт/бэйсик. Так что не важно.
96 Карупян
 
28.01.16
18:42
(95) ты не понял шутки
97 Garykom
 
гуру
28.01.16
18:52
(94)
Вопрос: чем lisp отличается от xslt?
Ответ: степенью окаменелости
98 Masquerade
 
29.01.16
11:57
(75)

В точку, lol
99 Serginio1
 
29.01.16
14:57
Послеобеденный, пятничный ап
100 Serginio1
 
29.01.16
16:26
Дааа скучная пятница. Может у кого вопросы есть.
101 Музон Хиггса
 
29.01.16
17:13
Чудес не бывает.
102 Serginio1
 
29.01.16
17:19
Чудес про, что? Кстати многие оценили статью в том числе и основную. Потихоньку народ заинтересовывается. Я подымаю для того, что бы народ по ссылкам скачал разработку, а то на инфостарте только за деньги
103 Garykom
 
гуру
29.01.16
18:06
(102) Инсталлятор для ВК то будем ваять?

Нужно продумать в какую папку ставить %ProgramFiles% или еще куда https://ru.wikipedia.org/wiki/Переменная_среды_Windows
Как будет каталог называться и как внутри хранить dll?
Что с разными версиями делать, затирать при установке новой старые или нет?
104 breezee
 
29.01.16
18:42
ОФФ!
Подскажите, что может .NET? Хочу обращаться к API сайтов, может ли мне .NET в этом помочь?
105 Garykom
 
гуру
29.01.16
18:43
(104) угу
106 Garykom
 
гуру
29.01.16
18:44
(105)+ если есть примеры вызовов API на C#/.Net то никаких проблем
107 breezee
 
29.01.16
18:44
(105) Спасибо, а где примеры такой реализации посмотреть? Можно не на 1с, можно не на русском.
108 Garykom
 
гуру
29.01.16
18:45
(107) так это нужно знать какой сайт ))
109 breezee
 
29.01.16
18:48
(108) Любой, хоть гугл, яндекс, рбк. Просто реализацию подключение, само описание APi на сайтах посмотрю
110 Garykom
 
гуру
29.01.16
18:53
(109) ну там же и посмотри как на C# это в примерах
https://tech.yandex.ru/direct/doc/dg-v4/examples/sc-json-docpage/
111 breezee
 
29.01.16
18:55
(110) Спасибо!
112 Serginio1
 
29.01.16
19:32
(109) Обычно у них примеры на нескольких языках
https://developers.google.com/google-apps/calendar/quickstart/dotnet
113 Serginio1
 
30.01.16
09:08
Выложил ссылку обработки для работы с окнами WinForms и WPF в Управляемых формах.

http://files.rsdn.ru/19608/%d0%a2%d0%b5%d1%81%d1%82%d0%92%d0%9a%d0%a3%d0%a4.zip
114 Serginio1
 
30.01.16
09:11
Можно на форме использовать ActiveX компоненты, а можно и любые визуальные компоненты. То есть расширить функционал Управляемового приложения
115 Necessitudo
 
04.02.16
16:01
А можно как-то использовать через эти обертки какой-нибудь orm (тот же Entity Framework)?
116 Serginio1
 
04.02.16
16:05
(115) Entity Framework можно, а вот с Linq to EF сложнее
Но можно использовать динамическую компиляцию например используя Scripting API

Динамическая компиляция для использования .Net событий в 1С
117 Garykom
 
гуру
04.02.16
16:21
(116) это с 0 не понять
нужно нечто простое для 1С-ников ))

типа скопипастил код на C#, воткнул куда то (в код 1С), и он автоматом его скомиплирует и запустит
118 Serginio1
 
04.02.16
16:26
(117) Ну Scripting API это оно и есть.
Просто я создаю делегат для передачи параметров
В принципе я могу создавать класс и затем определять нужные свойства. И я привел примеры которых нет в https://github.com/dotnet/roslyn/wiki/Scripting-API-Samples#exprstrong
119 Serginio1
 
04.02.16
16:27
(117) Ну кто знает, что такое Entity Framework  уже не с 0 ля
120 Mafoni
 
04.02.16
16:47
(119) Serginio1 - скайп дай плиз свой - есть пара вопросом по твоим наработкам
121 Serginio1
 
04.02.16
16:51
(120) Отправил
122 Shamandafil
 
12.02.16
09:56
Пытался получить местоположение специальных папок ОС:
Окружение = ПолучитьТип("System.Environment");
    СпецПапки = ПолучитьТип("System.Environment+SpecialFolder");
    Место = Окружение.GetFolderPath(СпецПапки.LocalApplicationData);

Методом научного тыка выяснил, что к типу System.Environment.SpecialFolder , можно добраться с помощью знака + , правильно ли это? Что за странный синтаксис?
123 Garykom
 
гуру
12.02.16
10:23
(122) гениально обнаружили как добираться до перечислений (не типов)?
https://msdn.microsoft.com/ru-ru/library/system.environment.specialfolder(v=vs.110).aspx
124 Shamandafil
 
12.02.16
10:31
Разумеется, я ориентировался на эту статью.
В статье по ссылке "Environment.SpecialFolder", а не "System.Environment+SpecialFolder".
А что, перечисление это не тип уже? ( https://msdn.microsoft.com/ru-ru/library/system.enum(v=vs.110).aspx )
125 Serginio1
 
12.02.16
10:52
(122) Да это вложенный тип.
https://msdn.microsoft.com/ru-ru/library/ms173120.aspx
Если не знаешь строковое представление типа то проще
typeof(System.Environment.SpecialFolder).ToString()
126 Serginio1
 
12.02.16
10:56
127 Serginio1
 
12.02.16
11:00
128 Serginio1
 
12.02.16
11:07
125+ Правильнее конечно
typeof(System.Environment.SpecialFolder).FullName
129 Shamandafil
 
12.02.16
11:09
(125) Актуальной студии нет, потому что-то похожее проделал через отладчик 1С и свойства типа Environment (рефлексия). Про вложенные типы я знаю, вопрос в способе обращения к ним.
(128) ТипКакОбъект(Окружение).FullName возвращает "System.Environment"
130 Serginio1
 
12.02.16
11:17
А
ТипКакОбъект(СпецПапки).FullName
Выдаст
System.Environment+SpecialFolder
131 Serginio1
 
12.02.16
11:19
А на счет VS то есть торренты и бесплатная  Community
https://www.visualstudio.com/ru-ru/downloads/download-visual-studio-vs.aspx
132 Serginio1
 
12.02.16
11:32
131+ ну и всегда можно обратиться в эту ветку
133 ejikbeznojek
 
16.02.16
14:10
А случайно нет какого-нибудь примера работы с гугл или яндекс картами?
134 Serginio1
 
16.02.16
14:20
(133) Ну недолго из примеров сварганить
https://github.com/google/google-api-dotnet-client
135 Serginio1
 
16.02.16
14:24
134+ В большинстве случаев проще использовать Готовые нетовские формы используя готовый код и передавать данные в 1с

http://catalog.mista.ru/public/457898/
136 Serginio1
 
16.02.16
14:32
137 Хранимая Процедура
 
16.02.16
14:49
1Сники обсуждаютв ООП и паттерны проектирования там, где их нет.

Что-то наподобие ООП было в 1С++. И все.
138 Garykom
 
гуру
16.02.16
15:02
(137) с тем же успехом .Net мог быть в процедурно-функциональном стиле сделан, без классов
и причем тогда ООП и тем более паттерны, про которые речи нет совсем и вообще они из другой оперы
139 Serginio1
 
16.02.16
15:13
(137) Здесь обсуждается как сделанное с помощью ООП применять в 1С. Только и всего.
140 Garykom
 
гуру
16.02.16
18:09
Кстати ТС заново наваял Elisy .Net Bridge
v8: v8: Elisy .Net Bridge 4 для 1С:Предприятие 8.2 (платное ПО)

И бесплатно раздает то что они продавать пытаются
А люди еще и кушать не хотят халяву...
141 Serginio1
 
16.02.16
18:19
(140) У нас разный подход. У него обертка через ВК, у меня через IReflect. Но суть та же, доступ через Reflection. Просто на халяву мало кому нужно. Но самое главное есть кому нужно!
142 Garykom
 
гуру
16.02.16
18:31
(141) судя по комментариям http://catalog.mista.ru/public/20035/ основной массе 1С-ников не нужны инструменты для создания удочек для ловли рыбы
нужна или сразу рыба или хотя бы сеть готовая

получается выход только готовый фреймворк (набор процедур/функций) на 1С для различного функционала сделать
и по заказу уже его дописывать/внедрять - иметь с этого профит
143 Serginio1
 
16.02.16
19:38
(142) Я надеюсь, что с помощью моих разработок многие заинтересуются .Net и будут его использовать как в 1С, так и без неё. Программист обязан постоянно развиваться.
144 Serginio1
 
20.02.16
14:33
Очень часто приходится использовать битовую операци OR

например
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate



или
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite| NotifyFilters.FileName | NotifyFilters.DirectoryName;




Поэтому добавил метод OR. Теперь те же операции можно вызвать

DecompressionMethods= Врап.ПолучитьТип("System.Net.DecompressionMethods");
  handler.AutomaticDecompression=Врап.OR(DecompressionMethods.GZip,DecompressionMethods.Deflate) ;

или

NotifyFilters=врап.ПолучитьТип("System.IO.NotifyFilters");
    рез=Врап.OR(NotifyFilters.LastAccess,NotifyFilters.LastWrite,NotifyFilters.FileName,NotifyFilters.DirectoryName);
145 oleg_km
 
20.02.16
14:55
Буквально сейчас понадобился доступ к буферу обмена:

        БиблАП.ПолучитьNET().ПолучитьТип("System.Windows.Forms.Clipboard", "System.Windows.Forms").SetDataObject(значение, Ложь);
146 Serginio1
 
20.02.16
15:12
(145) Спасибо. На всякий случай ссылка на описание
https://msdn.microsoft.com/ru-ru/library/system.windows.forms.clipboard(v=vs.110).aspx
147 Хранимая Процедура
 
22.02.16
14:45
(138) -

> с тем же успехом .Net мог быть в процедурно-функциональном стиле сделан, без классов


это ты типа так пошутил, да?
148 Garykom
 
гуру
22.02.16
14:52
(147) нет никаких шуток
149 Garykom
 
гуру
22.02.16
14:54
(148)+ конечно для получения удобоваримого результата функций из к примеру массивов или чего еще, пришлось бы кучу других функций использовать
150 sash-ml
 
22.02.16
15:25
(0) асинхронные вызовы можно делать для чего угодно? например получить остатки из другой базы?
151 Хранимая Процедура
 
22.02.16
15:36
(148) - все с тобой ясно, тебе никогда не стать программистом.
152 Garykom
 
гуру
22.02.16
15:41
(151) мнение "не программистов" - эникей-админов не очень меня волнует
153 MishaD
 
22.02.16
15:44
А на новомодном российско линуксе, который наше правительство хочет всем внедрить, вместо богомерзкого виндолса ваш .Net работать будет ?
154 Хранимая Процедура
 
22.02.16
15:44
(152) - а ну, быстро, чем отличается мок от стаба?
155 Serginio1
 
22.02.16
15:45
156 Serginio1
 
22.02.16
15:47
(153) Он и так работает .Net Core, Mono
А вот с 1С только через Вэб, HTTP снрвисы
157 Garykom
 
гуру
22.02.16
15:51
(154) мнение бета-тестеров тоже не сильно волнует
158 Хранимая Процедура
 
22.02.16
15:55
(157) - ну вот, ты путаешь виды тестирования.

И ты же конечно выполняешь только смоук-тесты перед отсылкой клиентам своей нетленки?
159 Garykom
 
гуру
22.02.16
15:58
(158) а когда пытаются щегольнуть умными терминами не понимая основ?
160 Хранимая Процедура
 
22.02.16
16:00
(159) - если бы ты знал бы основы, то понял бы, что я имел ввиду.
161 Хранимая Процедура
 
22.02.16
16:01
а то, что ты путаешь юнит- и бета-тестирование - ту так в школу, в школу, в школу.
162 Garykom
 
гуру
22.02.16
16:04
(156) не обязательно с 1С через веб или http, можно http://catalog.mista.ru/public/300091/
163 Garykom
 
гуру
22.02.16
16:12
(160) ну кто то не в курсе что у C и C# одинаковый синтаксис, поэтому они из одного семейства как и java
"(0) - а каким боком C# является языком из семейства Си?"

(161) юнит-тесты пишут программисты, а (до)школьники только бета-тестить могут
164 ДенисЧ
 
22.02.16
16:13
"у C и C# одинаковый синтаксис, поэтому они из одного семейства как и java "

Ого...
И тут картинка с кошкой у лампы...
165 Garykom
 
гуру
22.02.16
16:18
(164) ну да, а 1С это вообще смесь паскаля/дельфи и визуал бейсика переведенная промптом ))
166 Garykom
 
гуру
22.02.16
16:28
(165)+ к примеру языки 1С 7.7 и 1С 8.Х слегка отличаются в мелочах, но они все равно "из одного семейства"

и точно так же можно считать VB6, VB.Net и VBA разными языками... или все же из одного семейства?
167 Serginio1
 
22.02.16
16:33
(162) Взаимодействие между нативом и манагед кодом в виде только через COM. А вот как в линуксе не знаю. Кроме того в той разработке ограничение на используемые типы
Статические классы не поддерживаются;
Конструктор должен быть без параметров;
Поддерживаются только следующие типы для обмена с 1С: System.String; System.Boolean; System.Int32; System.Double; System.Byte[];
Out и ref параметры не поддерживаются в связи с тем, что не получилось это реализовать,
168 Garykom
 
гуру
22.02.16
16:35
(166)+ еще про VBS(VBScript) забыл, который скриптовый встроенный Windows Script Host(WSH)
169 Garykom
 
гуру
22.02.16
16:45
(167) да использование будет неудобное и теряется смысл, будет проще нечто вроде веб сервиса выполнения кода C#+.Net http://catalog.mista.ru/public/363505/

но можно же "манипулировать" классами .net|mono путем строковых параметров в своих функциях

перем1_ид = врап.СоздатьПеременную("string", "Привет, Мир!");
объект1_ид = врап.СоздатьОбъект("System.Windows.Forms.MessageBox");
врап.ВыполнитьМетод(объект1_ид, "Show", перем1_ид);

ЗЫ но в mono с "System.Windows.Forms" все плохо ((
170 Хранимая Процедура
 
22.02.16
17:03
разговор икспертов по программированию
171 Garykom
 
гуру
22.02.16
17:14
(170) сказал иксперт то словечкам из области тестирования
172 Хранимая Процедура
 
22.02.16
17:17
(171) - 50 проектов по ТДД, а тебе слабо?
173 Garykom
 
гуру
22.02.16
17:17
(172) проектов на чем?
174 Хранимая Процедура
 
22.02.16
17:27
(173) - C#/JS
175 Garykom
 
гуру
22.02.16
17:29
(174) случайно не "Барс" ?
176 Хранимая Процедура
 
22.02.16
17:30
(175) - неа
177 Serginio1
 
22.02.16
17:34
178 Garykom
 
гуру
22.02.16
17:42
(177) не совсем, он поддерживает возможности COM если требуется
179 Serginio1
 
22.02.16
18:01
(177) Остается вопрос есть ли он в .Net Core
180 Хранимая Процедура
 
22.02.16
22:09
а теперь господа, серьезный вопрос:

в настоящий момент я разрабатваю в VS 2010/Windows, а потом передаю иземения через Git на комп с Linux/Mono/MonoDevelop, там тестирую изменения и дорабатываю для Линукс и потом передаю измения обратно.

Вопрос: можно ли как то упростить сабж?
181 Хранимая Процедура
 
22.02.16
22:20
(169) - >ЗЫ но в mono с "System.Windows.Forms" все плохо ((

ты так говоришь, как будто у тебя 50 ПРОВАЛИВШИХСЯ портирований.

И ты так говоришь, как будто ты такой крутой мегаспец и смог отрефакторить лапше-логику в Windows Forms используя Model-View-Presenter паттерн и тебе очень легко удалось все кнопочки и менюшечки на Gtk# переписать.
182 Garykom
 
гуру
22.02.16
22:26
(181) а не пробовали (180) наоборот писать на Linux и тестить потом на Windows?
183 Serginio1
 
22.02.16
22:26
(180) Лучше задай этот вопрос на http://rsdn.ru/ там много спецов.

А .Net Core не пробовал на VS 2015 . Там кстати есть версия и под линукс и IOS
https://code.visualstudio.com/
184 Garykom
 
гуру
22.02.16
22:32
(182)+ есть wine который "правильный" Windows
185 Хранимая Процедура
 
23.02.16
13:00
(182) - ты так пошутил?

ОК, тогда я тебе предложу конфигурацию в блокноте редактировать.
186 Masquerade
 
23.02.16
13:05
(180)
После того как TFS меня задрал глюками и неочевидностью - я использую банальный Дропбокс
187 Masquerade
 
23.02.16
13:06
Между домом и офисом - ну просто душа радуется после TFS.

Главное не забыть дождаться обновления, а то может по дурацки получиться.
188 Хранимая Процедура
 
23.02.16
13:15
(186) - я всегда догадывался, что TFS - отстой
189 Torquader
 
24.02.16
01:17
Ребята - синтаксис языка не очень сильно определяет то, что этот язык описывает.
Синтаксис - это, скорее, удобство написания.
Сейчас практически во всех языках есть понятие объекта, просто в разных случаях в это понятие заложен разный функционал.
В любом случае, вместо объекта в системе реально встречается набор функций, которые определяют действия этого объекта. И только отладка в командах процессора вам покажет, что происходит там на самом деле. Другое дело, что современному программисту иногда даже полезно не знать, как то, что он напишет, транслируется в код, он может сосредоточится на самой задаче, а не на способах хранения данных.
190 Serginio1
 
24.02.16
10:41
На самом деле в 7.7 есть метод
СоздатьОбъект
в 8.х это Новый
Все кто писал на С подобных языках знают что это конструктор объекта экземпляра класса (структуры)

Другое дело, что бы увеличить возможности 1С, а значит и свои то нужно знать другие языки. Это кстати развивает мышление и помогает в решении разного рода задач.
191 Serginio1
 
24.02.16
12:48
Добавлю ссылки на HTTP запросы с упаковкой ответа GZIP
Распаковка gzip строки
Вот результаты запроса
Распаковка gzip строки

Так же ссылка на использование Gzip
Распаковка gzip строки
192 Serginio1
 
24.02.16
17:13
Вот здесь есть внешний отчет для использования Вацапа
http://files.rsdn.ru/19608/WhatsApp.zip
193 Garykom
 
гуру
24.02.16
17:22
Есть заказ на прогу/сервис аггрегатор разных мессенджеров (вайбер, вацап, скайп, телеграм и т.д.)

Т.е. делаем отправку (одним стандартным способом) на номер телефона, а оно уходит через тот мессенджер который к этому номеру привязан и активен
194 Serginio1
 
24.02.16
17:46
Я могу тебе скинуть https://github.com/mgp25/Chat-API-NET

Я делал консольное приложение и через NetNamedPipeBinding используя очереди. А ответ пересылал через Вэб сервис.
195 Shamandafil
 
24.02.16
17:47
(192) Интерфейс страшный и всё через сообщить. А исходники для NET-сборки переходника не в комплекте? Или документация по многочисленным служебным SendQueryLastOnline, SendComposing, SendPaused, SendActive.
196 Garykom
 
гуру
24.02.16
17:56
(194) исходники гляну, тут смысл было бы полезно сделать некую "стандартную основу для чата/мессенджера" и 1-2 "драйвера" для вацап и вайбер к примеру
далее это выложить и уже кто захочет (ну или по заказу) к этому прикрутит другие "драйвера"

для популяризации .net|mono весьма будет
197 Serginio1
 
24.02.16
17:57
(192) Я его делал для тестов. Исходники здесь
https://github.com/mgp25/Chat-API-NET

Сейчас запакую другие исходники
198 Serginio1
 
24.02.16
17:59
(196) Чат и мессенджер http://catalog.mista.ru/public/434771/
Допилить несложно. Хочешь используй HTML или для каждой оси пиши  клиента.
199 Serginio1
 
24.02.16
18:00
(195) Можешь сам написать используя http://catalog.mista.ru/public/417830/
200 Serginio1
 
24.02.16
18:02
Для вацапа тебе нужно только цикл для принятия сообщений
Например я сделал partial и просто добавил класс расширение
namespace WhatsAppApi
{
    public partial  class WhatsApp : WhatsSendBase
    {
        public event Action<Exception> ИсключениеВПотоке;
        public void ProcessChat()
        {
            var wa = this;
            var thRecv = new Thread(t =>
            {
              
                
                while (wa != null && wa.ConnectionStatus == WhatsAppApi.WhatsApp.CONNECTION_STATUS.LOGGEDIN)
                {
                    try
                    {

                        wa.PollMessages();
                        Thread.Sleep(100);
                        continue;



                    }
                    catch (ThreadAbortException)
                    {
                        break;
                    }
                    catch (Exception ex)
                    {
                        if (ИсключениеВПотоке!=null)
                            ИсключениеВПотоке( ex);
                    }
                    continue;
                }

    
            })
            { IsBackground = true, Name = "ProcessChat" };
            thRecv.Start();


        }
201 Shamandafil
 
25.02.16
13:48
Рихтер осуждает Sleep в цикле, когда надо дождаться какого-то события.
202 Serginio1
 
25.02.16
13:53
А чего осуждать то? Это просто отдача времени другому потока. Здесь не событийная система оповещения. Все претензии к авторам библиотеки
203 Serginio1
 
25.02.16
13:53
(201) Кстати вацап то работает?
204 Filin
 
26.02.16
12:39
Вот понимаю, что видимо вещь нужная, но как-то для меня много букв. Есть возможность на маленьком конкретном примере показать обработку событий?
Вот есть программка на с# - https://yadi.sk/d/pMW654nopXuS3
Просто получает данные из ком-порта по событию.
Мне нужно в 1с аналогичным образом получить эти данные, используя класс из С#. Не могу даже начать - информации вроде много, но как-то я заблудился :)
205 Garykom
 
гуру
26.02.16
12:47
(204) примерно так начать
...
порт = врап.СоздатьОбъект("System.IO.Ports.SerialPort");
206 Garykom
 
гуру
26.02.16
12:53
(205)+ далее

порт.PortName = "COM4";
порт.BaudRate = 9600;
порт.DataBits = 8;
четность = врап.ПолучитьТип("System.IO.Ports.Parity");
порт.Parity = четность.None;
...
207 oleg_km
 
26.02.16
13:45
(205) О, так дело Учителя живет.
208 oleg_km
 
26.02.16
13:47
Только что нужно на форме ввода пароля чтобы отображалась текущая раскладка клавиатуры:

    Раскладка = врап.GetType("System.Windows.Forms.InputLanguage", "System.Windows.Forms").CurrentInputLanguage.Culture.TwoLetterISOLanguageName;
209 Garykom
 
гуру
26.02.16
13:48
(208) да способов применения дофига

(207) вот пытаюсь ВК Native API запилить чтобы на mono тоже можно было под linux
210 Filin
 
26.02.16
15:11
C:\Programs\NetObjectToIDispatch>C:\Windows\Microsoft.NET\Framework\v4.0.30319\r
egasm.exe "C:\Programs\NetObjectToIDispatch\DLLNetObjetToIDispatch45\NetObjetToI
Dispatch.dll" /codebase
Microsoft .NET Framework Assembly Registration Utility 4.6.1055.0
для Microsoft .NET Framework 4.6.1055.0
Ну я так понимаю - нужно зарегистрировать сначала?

Вот что выдало при регистрации -


c Корпорация Майкрософт (Microsoft Corporation). Все права защищены.

RegAsm : warning RA0000 : Регистрация неподписанной сборки с использованием пара
метра /codebase может вызвать конфликт данной сборки с другими приложениями, кот
орые могут быть установлены на том же компьютере. Параметр /codebase предназначе
н только для подписанных сборок. Присвойте сборке строгое имя и повторите регист
рацию.
Типы зарегистрированы успешно

Но при попытке создать ком-объект -

Ошибка при вызове конструктора (COMОбъект)
    врап=новый COMОбъект("NetObjectToIDispatch45");
по причине:
Недопустимая строка с указанием класса
211 Garykom
 
гуру
26.02.16
15:30
(210) от админа CMD запускал и регал?
с регистрацией там какие то заморочки помнится, уже намекал несколько раз автору на нужность инсталлятора

еще утилита "РегистрацияКомСервера.exe" правильные пути дает для батника
212 Garykom
 
гуру
26.02.16
15:31
(211)+ а и первый запуск 1С тоже от админа
213 Garykom
 
гуру
26.02.16
15:34
(210) эээ ты версию для .net framework 2 регаешь

там с "45" на конце под "net framework 4.5"
214 Garykom
 
гуру
26.02.16
15:35
215 Serginio1
 
26.02.16
15:53
(210) Это просто предупреждение, что сборка неподписана.
216 Filin
 
26.02.16
15:54
(214) Да вроде отсюда. Зарегить получилось (затупил и регистрировал не ту длл).

Следующий код отрабатывает нормально -

врап=новый COMОбъект("NetObjectToIDispatch45");
    порт = врап.СоздатьОбъект("System.IO.Ports.SerialPort");
    
    порт.PortName = "COM1";
    порт.BaudRate = 9600;
    порт.DataBits = 8;
    четность = врап.ПолучитьТип("System.IO.Ports.Parity");
    порт.Parity = четность.None;
    СтопБит = врап.ПолучитьТип("System.IO.Ports.StopBits");
    порт.StopBits = СтопБит.One;
    Управление = врап.ПолучитьТип("System.IO.Ports.Handshake");
    порт.Handshake = Управление.RequestToSend;
    
    порт.Open();

Теперь как отловитьв 1с событие "DataReceived" ?
217 Serginio1
 
26.02.16
15:59
(204) Во внешних отчетах есть ТестСобытийИзмененийВДиректории.epf
В поле Полное имя класса указываешь полное имя класса
В поле Полное Имя Файла указываешь путь к сборке.

И жмешь Получить описание модулей. Там будут описания на C# и для 1С.

Там же лежит и TestSerialPort.epf
218 Serginio1
 
26.02.16
16:02
Для гаковских сборок можно указать просто имя DLL
Например для SerialPort
https://msdn.microsoft.com/ru-ru/library/system.io.ports.serialport(v=vs.110).aspx
это System.Dll
219 Filin
 
26.02.16
16:05
(218) Указал имя класса  - System.IO.Ports.SerialPort

Получил описание чегото гдето. Что с этим описанием делать?

TestSerialPort.epf смотрю.
220 Serginio1
 
26.02.16
16:15
Вставляешь в обработку. Основной метод  СоздатьОбертку(объект)

Создаешь свой объект и подключаешь события через вызов
СоздатьОбертку(ТвойОбъект)

В методах пропиши свои действия. Там будут два модуля Один через ДобавитОбработчик второй через ОбработкаВнешнегоСобытия

Смотри по аналогии с TestSerialPort.epf
221 Filin
 
26.02.16
16:22
Garykom, Serginio1  - спасибо !
Похоже в TestSerialPort.epf есть все что мне нужно. На тестовой машине с виртуальным портом работает отлично . Буду тестить на железе.
222 Serginio1
 
26.02.16
16:25
oleg_km Garykom

Большое спасибо за поддержку. Был занят.
223 Shamandafil
 
26.02.16
16:32
Посмотрел сборку в студии в ней почему-то 2 пространства имён одно из них NetObjetToIDispatch45, совпадает с именем ДЛЛ, в ней букв С пропущена.
224 Serginio1
 
26.02.16
16:37
(223) А в каком модуле?
225 Serginio1
 
26.02.16
16:39
Все понял. Да проект называется NetObjetToIDispatch45
а namespace NetObjectToIDispatch45
Глазастый! Спасибо. Но менять уже не буду
226 Filin
 
26.02.16
16:42
Serginio1 ,а как остановить обработку события? Или как правильно закрыть обработку?
У меня при закрытии начинает вываливать кучу ошибок.
227 Shamandafil
 
26.02.16
16:42
Я его исправить хотел, но плохо когда класс называется как и пространство имён.
228 Filin
 
26.02.16
16:43
+ (226) Вот что пишет -

Не обработано событие DataReceived
Исключение System.Runtime.InteropServices.COMException (0x000003E9): {Форма.Форма.Форма(50)}: Ошибка при вызове метода контекста (ReadExisting)
Неизвестная ошибка
   в System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)
   в System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)
   в System.Windows.Forms.WindowsFormsSynchronizationContext.Send(SendOrPostCallback d, Object state)
   в ВрапперДляSystem_IO_Ports_SerialPort.<>c__DisplayClass1b.<ОтослатьСобытиеСПараметром>b__18() в c:\Users\User\AppData\Local\Temp\htq00hr3.0.cs:строка 101
Данные { sender = System.IO.Ports.SerialPort, e = System.IO.Ports.SerialDataReceivedEventArgs }
229 Garykom
 
гуру
26.02.16
16:47
(228) простейше "УдалитьОбработчик"
230 Serginio1
 
26.02.16
16:52
(226) Закрыть порт.Или есть метод
Процедура Остановить()
    Если watcher<>Неопределено Тогда
        watcher.EnableRaisingEvents = false;    
    КонецЕсли;
    
КонецПроцедуры
231 Serginio1
 
26.02.16
16:54
А вообще
watcher.Close()
или
Врап.ПолучитьИнтерфейс(watcher,"IDisposable").Dispose();
232 Filin
 
26.02.16
16:58
Да! Все работает ! Супер вещщь ! Никак по другому не получалось подключить чертову железяку :)
233 Serginio1
 
26.02.16
16:58
Кроме того можно отписаться от событий
Врап.ОчиститьСобытияОбъекта(ОберткаСобытий);

Ну и
watcher=неопределено;
ОберткаСобытий=неопределено;

        GC=Врап.ПолучитьТип("System.GC");
    GC.Collect();
    GC.WaitForPendingFinalizers();
    Врап= Неопределено;
234 Serginio1
 
26.02.16
17:00
(232) Значит мои труды не пропадают зря!
235 Garykom
 
гуру
26.02.16
17:10
(233) может имеет смысл методы для завершения работы в саму ВК встроить готовые?
которые заодно и все евенты того
236 Serginio1
 
26.02.16
17:20
(235) Там вариаций может быть куча. Просто как шаблон
    Врап.ОчиститьСобытияОбъекта(ОберткаСобытий);
    Врап.ПолучитьИнтерфейс(watcher,"IDisposable").Dispose();


    watcher=неопределено;
    ОберткаСобытий=неопределено;

    GC=Врап.ПолучитьТип("System.GC");
    GC.Collect();
    GC.WaitForPendingFinalizers();
    Врап= Неопределено;
237 Serginio1
 
15.03.16
14:51
Понадобилоссь прописать дефолтный принтер в 7 ке

врап=СоздатьОбъект("NetObjectToIDispatch45");
    врап.УстЭтоСемерка();
    

Registry=Врап.ПолучитьТип("Microsoft.Win32.Registry");


Ключ="Software\1C\1Cv7\7.7\ИмяБазы\V7\"+ИмяПользователя()+"\Moxel\";
Сообщить(Ключ);
key = Registry.CurrentUser.OpenSubKey(Ключ);
ОсновнойКлюч=СокрЛП(key.Name)+"\";

Ключи=key.GetSubKeyNames();


Перечислимый=Врап.ПолучитьИнтерфейс(Ключи,"IEnumerable");
Перечислитель=Перечислимый.GetEnumerator();
// На всякий случай приведем к Интерфейсу IEnumerator
Перечислитель=Врап.ПолучитьИнтерфейс(Перечислитель,"IEnumerator");
// Теперь можем пройтись по коллекции

Пока Перечислитель.MoveNext()<>0 Цикл
//  Врап.ВСтроку вывоит строковое представление всех типов в том числе числовые, строки, неопределено
    Сообщить(Врап.ВСтроку(Перечислитель.Current));

    Ключ=ОсновнойКлюч+СокрЛП(Перечислитель.Current);
    ТекПринтер=Registry.GetValue(Ключ,"DefaultPrinter","");
    Сообщить(ТекПринтер);
    
    Если (Принтер<>"") и (ТекПринтер<>"") и (Принтер<>ТекПринтер) Тогда

        Registry.SetValue(Ключ,"DefaultPrinter",Принтер);
    КонецЕсли;
КонецЦикла;