Вход | Регистрация
    1  2  3   

Использование классов .Net в 1С для новичков

Использование классов .Net в 1С для новичков
Я
   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с и многопоточность
   Музон Хиггса
 
101 - 29.01.16 - 17:13
Чудес не бывает.
   Serginio1
 
102 - 29.01.16 - 17:19
Чудес про, что? Кстати многие оценили статью в том числе и основную. Потихоньку народ заинтересовывается. Я подымаю для того, что бы народ по ссылкам скачал разработку, а то на инфостарте только за деньги
   Garykom
 
103 - 29.01.16 - 18:06
(102) Инсталлятор для ВК то будем ваять?

Нужно продумать в какую папку ставить %ProgramFiles% или еще куда https://ru.wikipedia.org/wiki/Переменная_среды_Windows
Как будет каталог называться и как внутри хранить dll?
Что с разными версиями делать, затирать при установке новой старые или нет?
   breezee
 
104 - 29.01.16 - 18:42
ОФФ!
Подскажите, что может .NET? Хочу обращаться к API сайтов, может ли мне .NET в этом помочь?
   Garykom
 
105 - 29.01.16 - 18:43
(104) угу
   Garykom
 
106 - 29.01.16 - 18:44
(105)+ если есть примеры вызовов API на C#/.Net то никаких проблем
   breezee
 
107 - 29.01.16 - 18:44
(105) Спасибо, а где примеры такой реализации посмотреть? Можно не на 1с, можно не на русском.
   Garykom
 
108 - 29.01.16 - 18:45
(107) так это нужно знать какой сайт ))
   breezee
 
109 - 29.01.16 - 18:48
(108) Любой, хоть гугл, яндекс, рбк. Просто реализацию подключение, само описание APi на сайтах посмотрю
   Garykom
 
110 - 29.01.16 - 18:53
(109) ну там же и посмотри как на C# это в примерах
https://tech.yandex.ru/direct/doc/dg-v4/examples/sc-json-docpage/
   breezee
 
111 - 29.01.16 - 18:55
(110) Спасибо!
   Serginio1
 
112 - 29.01.16 - 19:32
(109) Обычно у них примеры на нескольких языках
https://developers.google.com/google-apps/calendar/quickstart/dotnet
   Serginio1
 
113 - 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
   Serginio1
 
114 - 30.01.16 - 09:11
Можно на форме использовать ActiveX компоненты, а можно и любые визуальные компоненты. То есть расширить функционал Управляемового приложения
   Necessitudo
 
115 - 04.02.16 - 16:01
А можно как-то использовать через эти обертки какой-нибудь orm (тот же Entity Framework)?
   Serginio1
 
116 - 04.02.16 - 16:05
(115) Entity Framework можно, а вот с Linq to EF сложнее
Но можно использовать динамическую компиляцию например используя Scripting API

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

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

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

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

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

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

получается выход только готовый фреймворк (набор процедур/функций) на 1С для различного функционала сделать
и по заказу уже его дописывать/внедрять - иметь с этого профит
   Serginio1
 
143 - 16.02.16 - 19:38
(142) Я надеюсь, что с помощью моих разработок многие заинтересуются .Net и будут его использовать как в 1С, так и без неё. Программист обязан постоянно развиваться.
   Serginio1
 
144 - 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);
   oleg_km
 
145 - 20.02.16 - 14:55
Буквально сейчас понадобился доступ к буферу обмена:
        БиблАП.ПолучитьNET().ПолучитьТип("System.Windows.Forms.Clipboard", "System.Windows.Forms").SetDataObject(значение, Ложь);
   Serginio1
 
146 - 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 мог быть в процедурно-функциональном стиле сделан, без классов


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

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


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


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

и точно так же можно считать VB6, VB.Net и VBA разными языками... или все же из одного семейства?
   Serginio1
 
167 - 22.02.16 - 16:33
(162) Взаимодействие между нативом и манагед кодом в виде только через COM. А вот как в линуксе не знаю. Кроме того в той разработке ограничение на используемые типы
Статические классы не поддерживаются;
 Конструктор должен быть без параметров;
 Поддерживаются только следующие типы для обмена с 1С: System.String; System.Boolean; System.Int32; System.Double; System.Byte[];
 Out и ref параметры не поддерживаются в связи с тем, что не получилось это реализовать,
   Garykom
 
168 - 22.02.16 - 16:35
(166)+ еще про VBS(VBScript) забыл, который скриптовый встроенный Windows Script Host(WSH)
   Garykom
 
169 - 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
разговор икспертов по программированию
   Garykom
 
171 - 22.02.16 - 17:14
(170) сказал иксперт то словечкам из области тестирования
   Хранимая Процедура
 
172 - 22.02.16 - 17:17
(171) - 50 проектов по ТДД, а тебе слабо?
   Garykom
 
173 - 22.02.16 - 17:17
(172) проектов на чем?
   Хранимая Процедура
 
174 - 22.02.16 - 17:27
(173) - C#/JS
   Garykom
 
175 - 22.02.16 - 17:29
(174) случайно не "Барс" ?
   Хранимая Процедура
 
176 - 22.02.16 - 17:30
(175) - неа
   Serginio1
 
177 - 22.02.16 - 17:34
   Garykom
 
178 - 22.02.16 - 17:42
(177) не совсем, он поддерживает возможности COM если требуется
   Serginio1
 
179 - 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# переписать.
   Garykom
 
182 - 22.02.16 - 22:26
(181) а не пробовали (180) наоборот писать на Linux и тестить потом на Windows?
   Serginio1
 
183 - 22.02.16 - 22:26
(180) Лучше задай этот вопрос на http://rsdn.ru/ там много спецов.

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

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

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

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

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

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

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

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

Сейчас запакую другие исходники
   Serginio1
 
198 - 24.02.16 - 17:59
(196) Чат и мессенджер http://catalog.mista.ru/public/434771/
Допилить несложно. Хочешь используй HTML или для каждой оси пиши  клиента.
   Serginio1
 
199 - 24.02.16 - 18:00
(195) Можешь сам написать используя http://catalog.mista.ru/public/417830/
   Serginio1
 
200 - 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();


        }
  1  2  3   

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.