![]() |
|
Использование классов .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с и многопоточность |
|||
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
|
(150) Да если использовать ADO
https://msdn.microsoft.com/en-us/library/hh211418(v=vs.110).aspx Или можно использовать Linq http://catalog.mista.ru/public/393228/ http://stackoverflow.com/questions/20946677/ef-data-context-async-await-multithreading |
|||
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
|
CLR Hosting API тоже вроде основан на COM
https://msdn.microsoft.com/Ru-ru/library/ms164336(v=vs.110).aspx https://msdn.microsoft.com/Ru-ru/library/dd380851(v=vs.110).aspx |
|||
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
|
(213)+ отсюда качал?
http://files.rsdn.ru/19608/ФайлыNetObjectToIDispatch.zip |
|||
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
|
||||
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",Принтер); КонецЕсли; КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |