Вход | Регистрация
    1  2  3  4  5  6  7   
Работа :: Работа

Неспешно ищу работу. 1С + .Net

[aka AMIGO, 07.06.16 - 08:02]
Неспешно ищу работу. 1С + .Net
Я
   Serginio1
 
10.05.16 - 10:42
20 лет программирую на 1С и 13 на C#. Давно интегрирую .Net в 1С для расширения возможностей. Вот мои разработки http://catalog.mista.ru/profile/82159/public/
Основные это Использование сборок .NET в 1С 7.x b 8.x и . Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия
Если в 8.х есть множество возможносей, то для 7.7 функционал очень скуден.
Для 8.x часто испльзуется доступ к Вэб сервисам неподдерживаемыми 1С. Например Ws-протоколы и тд. Можно использовать асинхронные HTTP запросы, multipart/form-data итд.
Использовать Push-уведомления. Есть множество библиотек для разбора HTML (AngleShart, Silenium)
  При  работе с различными EDI есть уже готовые библиотеки на . Net которые можно использовать как в 7.7 так и в 8.x. В общем возможностей для интеграции огромное количество.
Есть опыт программирования для ТСД на WM. Скоро появятся ТСД на Windows mobile 10 где с использованием  UWP и Xamarin для других осей
Знаний много, но на нынешней работе не могу и малую толику возможностей использовать.
   Serginio1
 
401 - 31.05.16 - 16:38
(397) В 311 тебе дан развернутый ответ. Все зависит от постановки задачи.
В 231 никакой конкретики нет. Есть только названия продуктов.
И что я должен ответить? То что работал с ними?
Или все таки важно какую задачу нужно решить?
   Serginio1
 
402 - 31.05.16 - 16:58
Сейчас поковырялся с Native ВК.
1. Передать ВК в качестве параметра нельзя.
2. .Net поддерживает перегрузку методов с несколькими параметрами. Приходится указывать максимальное количество, а возвращать

bool CAddInNative::GetParamDefValue(const long lMethodNum, const long lParamNum,
    tVariant *pvarParamDefValue)
    
{
    TV_VT(pvarParamDefValue) = VTYPE_HRESULT;
    return true;
}

любой vt отличный от 0. В метод идет кстати с 0.

На самом деле есть идея использовать аналог IDispatch
У которого 2 метода.

1. По анаогии с нетовским InvokeMember
https://msdn.microsoft.com/ru-ru/library/66btctbe(v=vs.110).aspx
2. void Done(); при завершении работы объекта

Подсчет ссылок ведется на стороне 1С.
На стороне ВК используются только на время вызова метода.

Тогда написать обертку можно очень легко.
   Сниф
 
403 - 31.05.16 - 16:59
(0) Работу ты конечно найдешь, но, как я скромно думаю, для раскрытия твое потенциала нужно продвигать готовый сервис, а не резюме.
   Serginio1
 
404 - 31.05.16 - 17:06
(399) Спасибо. Ну удаленно то можно хоть в Америке.
Полностью согласен насчет MSDN, форумов.
Кстати сейчас и http://ru.stackoverflow.com/ развивается.
Хотя на англоязычном активность на порядки выше. Но и на этом тебе ответят на любые вопросы. Есть RSDN, cyberforum.ru
   Serginio1
 
405 - 31.05.16 - 17:09
(403) В интересах самой же 1С продвигать. Если сделать интеграцию через 402 то можно прикручивать и .Net и Java и Питоны и прочие платформы с информацией о типе
   Сниф
 
406 - 31.05.16 - 17:25
(405) Что такое "интеграция через 402" ? )
   Кирпич
 
407 - 31.05.16 - 17:27
(406) матофильтр не пропускает, потому и пишет "интеграция через 402"
   Serginio1
 
408 - 31.05.16 - 17:30
(406) 402 это номер поста
   Сниф
 
409 - 31.05.16 - 17:30
(407) Почему не через 404? Кажется, я что-то упускаю, как говорят манъяки и копы в фильмах.
   Сниф
 
410 - 31.05.16 - 17:31
(408) Понял. Извини, кажется, что я тут флужу, но это я тебе ветку поднимаю.
   Кирпич
 
411 - 31.05.16 - 17:34
(405) ты бы на пальцах объяснил чего ты делаешь с помощью этого 402
написал бы текст программы на языке 1с. так вот это мол будет выглядеть. нифига же непонятно людям чего ты изобретаешь там.
   Serginio1
 
412 - 31.05.16 - 17:42
(411) Ну это не для 1С.
В Native BK есть базовый класс с виртуальными методами

IComponentBase

bool CAddInNative::Init(void* pConnection)

long CAddInNative::GetInfo()

void CAddInNative::Done()

bool CAddInNative::RegisterExtensionAs(WCHAR_T** wsLanguageExt)

long CAddInNative::GetNProps()

long CAddInNative::FindProp(const WCHAR_T* wsPropName)

const WCHAR_T* CAddInNative::GetPropName(long lPropNum, long lPropAlias)

bool CAddInNative::GetPropVal(const long lPropNum, tVariant* pvarPropVal)

bool CAddInNative::SetPropVal(const long lPropNum, tVariant* varPropVal)

bool CAddInNative::IsPropReadable(const long lPropNum)

bool CAddInNative::IsPropWritable(const long lPropNum)

long CAddInNative::GetNMethods()

long CAddInNative::FindMethod(const WCHAR_T* wsMethodName)

const WCHAR_T* CAddInNative::GetMethodName(const long lMethodNum,
                            const long lMethodAlias)

long CAddInNative::GetNParams(const long lMethodNum)


bool CAddInNative::GetParamDefValue(const long lMethodNum, const long lParamNum,
                          tVariant *pvarParamDefValue)


bool CAddInNative::HasRetVal(const long lMethodNum)

bool CAddInNative::CallAsProc(const long lMethodNum,
                    tVariant* paParams, const long lSizeArray)

bool CAddInNative::CallAsFunc(const long lMethodNum,
                tVariant* pvarRetValue, tVariant* paParams, const long lSizeArray)

void CAddInNative::SetLocale(const WCHAR_T* loc)


bool CAddInNative::setMemManager(void* mem)
   Serginio1
 
413 - 31.05.16 - 17:48
На самом деле нужны только
Init(void* pConnection)

Done()

А все остальные замещает нетовский аналог

public object InvokeMember(
    string name,
    BindingFlags invokeAttr,
    object[] args
)

Где BindingFlags - перечисление отвечающее за тип вызова
(метод,чтение или установка свойства)
https://msdn.microsoft.com/ru-ru/library/system.reflection.bindingflags(v=vs.110).aspx
   Serginio1
 
414 - 31.05.16 - 17:51
И этот объект можно было бы создавать на стороне ВК и передавать в параметрах ВК. При этом можно передавать и объекты 1С
   Сниф
 
415 - 31.05.16 - 17:57
Serginio1 поддержу ветку
А что ты думаешь про наследование  в 1С на обработках?
Например, обработка "Животное" имеет метод "ВыдатьЗвук()".
Неопределенное животное выдает звук: "Ыыы!".
Создаем еще две обработки - Кошка и Собака. Обе обработки имеют свойство Родитель - обработка "Животное".
Для "псевдонаследования" нужно, чтобы обработка имела только один метод - ВыполнитьКоманду(). Если метод "ВыдатьЗвук" не определен для кошки, то в модуле обработке обращаемся к Родитель.ВыдатьЗвук().
   Pistol
 
416 - 31.05.16 - 18:05
   Serginio1
 
417 - 31.05.16 - 18:07
(415) 1С идет по пути утиной типизации. Смысл такой если у неё есть метод ВыдатьЗвук значит она животное.
На самом деле в 1С есть совмещение клиентского и серверного кода что упрощает разработку. Но хочется то большего.
В .Net есть такие кострукции как yield и await.

Смылс их в том, что они на основании метода создают класс с переменными метода и методами которые вызываются после определенных событий.

Так с помощью них можно решать проблемы с модальностью.
Можно запихивать серверный код внутри клиентского.

Ну и конечно на основе таких классов делать замыкания.
   Сниф
 
418 - 31.05.16 - 18:14
(417)
Через Выполнить - если в обработке (Кошка) реализован метод ВыдатьЗвук(стр) (Сообщить "Мяу," + стр);
то кошка мяукает.
А если для собаки не реализован метод ВыдатьЗвук(), то в Попытке/Исключении идет обращение к Родитель.ВыдатьЗвук().

То есть собака выдает звук базового животного, так как у нее непрописан метод в обработке.
   Serginio1
 
419 - 31.05.16 - 18:18
(418) Это все понятно. Это можно и сейчас завести поле  родитель и присвоить модуль родителя. Но это менее актуально по сравнению с 417. Там резко производительность повышается.
   Кирпич
 
420 - 31.05.16 - 18:23
(412) ничо не понял. Это для 1с или не для 1с? ВК не для 1с? Если для 1с то нипиши пример кода на 1с.
   Кирпич
 
421 - 31.05.16 - 18:26
Звук базового животного:))
   Сниф
 
422 - 31.05.16 - 18:59
(421) Ыыы)
   Pistol
 
423 - 31.05.16 - 20:00
Вот так вот, не напрягаясь, животрепещущую тему о героическом дотнете свели к крикам животных. Браво! =)
   Serginio1
 
424 - 31.05.16 - 22:36
(421)
В 412 Это класс наследник IComponentBase, базового класса для всех вк. Я показал какие внутри него методы.
А в 413 мое видение этого класса.

На 1С сейчас это выглядит как
ПодключитьВнешнююКомпоненту(ИмяФайла, ИмяМетки,ТипВнешнейКомпоненты.Native);

    Компонента = Новый("AddIn."+ИмяМетки+"."+ИмяРасширения);

Ты Native ВК ещё не писал?
   Кирпич
 
425 - 31.05.16 - 22:55
(424) "Ты Native ВК ещё не писал?.
Да штук восемь написал.

меня вот это интересует

"И этот объект можно было бы создавать на стороне ВК и передавать в параметрах ВК. При этом можно передавать и объекты 1С"

как ты объекты собрался передавать? 1с же вроде запрещает это в NativeAPI
   Garykom
 
426 - 01.06.16 - 00:06
(425) А кто мешает создать объект в памяти и передать (базовые то типы можно же передавать) "ссылку на объект" а по сути некий адрес в памяти?
   Злопчинский
 
427 - 01.06.16 - 00:55
Как писать программы на 1С, чтоб их понял не только процессор, но и человек?
Вводная статья по рефакторингу в среде 1С
Известен такой анекдот. Вызывает профессор-лингвист студента к доске и говорит: «Пиши: Глокая куздра штеко будланула бокра и курдячит бокренка». «Чего-чего?» было спросил студент, но с авторитетом профессора спорить не стал и честно записал эту абракадабру. А теперь, - сказал профессор, объясни – о чем говорится в этом предложении? На студента стало жалко смотреть и лектор сжалился.

- Ну, кто здесь главное действующее лицо?
- Ку… куздра, - промямлил студент
- А какая она, эта куздра?
- Глокая! - уже уверенней произнес студент
- А на кого направлено действие?
- На бокра!
- И что эта куздра сделала?
- Она его будланула! – выкрикнули из аудитории со смехом.
- И штеко, причем, будланула, добавил, улыбнувшись, профессор.
- А вот бокр – он живой?
Студент задумался…
- А! Да! У него бокренок есть!
- У бочки тоже есть бочонок, но это не значит, что она живая. Если бы бокр был неживой, мы бы сказали «булданула бокр», это винительный падеж «кого, что».
Итак, не зная смысла ни одного существительного, прилагательного или глагола мы уже можем достаточно много рассказать о происшедшем. Информацию об этом мы извлекли из вроде бы незначащих вещей – падежей, союзов, окончаний, определяющих отношения между словами в предложении.

Теперь вернемся от языковедения к программированию. При чем здесь Глокая куздра? Много говорилось о том, что названия процедур, функций и переменных должны быть «говорящими» должны соответствовать логике их использования. Но не менее говорящими должны быть и связи между идентификаторами! Даже не зная конкретного смысла программы, можно с первого взгляда увидеть, как она устроена.
   Злопчинский
 
428 - 01.06.16 - 00:56
Как этого достичь?
Возьмем Глокую куздру.
Но что это? Известно, что Глокая куздра может выполнять несколько действий. Она умеет будлануть, а умеет и курдячить т.е. представляет собой несколько связанных действий. Также известно, что эта куздра именно глокая, т.е. есть изменяемый параметр, явно в природе существуют и другие куздры – неглокие. В 1С логичнее всего оформить нашу куздру как обработку. Ведь бокров она именно «обрабатывает». Теперь, если ввести в тексте программы
Куздра. (с точкой), то система покажет все, что эта куздра умеет делать. Глокая пусть будет реквизитом обработки. Сегодня Куздра будет Глокая, т.е.
Куздра.Глокая = Истина
Дальше возьмемся за бокра. Документ или справочник наш герой, не так важно, т.к. сам он ничего не делает, кроме одного: как мы помним, куздра его будланула. Т.е. явно состояние бокра изменилось, произошло действие! Что у нас отвечает за действие, что в 1С заменяет глаголы? Процедуры и функции. Теперь нужно выбрать, что будем применять. Можно написать

Куздра.Будланула(бокра);
и это будет почти по-русски. Но из этой записи совершенно не понятно, изменился бокр или нет. Опять же, куздра булданула его штеко т.е. с параметром. Получится
Куздра.Булданула(Бокра, Штеко)
Здесь непонятно, кого куздра булданула – бокра или штеко, что является результатом действия, а что - его параметром. Самый правильный выход – написать
Бокр = Куздра.Будланула(Бокр, Штеко)
Теперь все методически правильно. Бокр является параметром и результатом (т.е. изменено его состояние, это объект над которым произошло действие), штеко – параметр. Соответственно продолжим наше повествование. Из него не совсем понятно, когда же это все кончится, когда глокая куздра все-таки закурдячит бокренка, ведь висящая программа нам не нужна. Допустим, бокренка есть функция Конец(), которая определяет конец закурдяченности. Получится такая вот такая конструкция

Пока Не Бокренок.Конец() Цикл
  Бокренок = Куздра.Курдячит(Бокренок)
КонецЦикла

Здесь мы выразили непрерывное, повторяющееся действие через цикл (допустив, что прекращение действия зависит от Бокренка. Если оно зависит, например, от Бокра или состояния самой ГлокойКуздры, это тоже можно было выразить). Дальше еще можно добавить связь между Бокром и Бокренком. Оба они бокры! Значит, это можно выразить, объединив их в структуру, что может понадобиться, например, если нужно будет передать куда-то всех бокров скопом, а не поодиночке.
   Злопчинский
 
429 - 01.06.16 - 00:57
Итого у нас получилось
Куздра.Глокая = Истина;
Бокры.Бокр = Куздра.Будланула(Бокры.Бокр, Штеко);
Пока Не Бокры.Бокренок.Конец() Цикл
  Бокры.Бокренок = Куздра.Курдячит(Бокры.Бокренок);
КонецЦикла;
Конечно, по сравнению с богатством русского языка, в пересказе на макроязыке 1С некоторые нюансы шедевра потерялись, но главная нить по-прежнему вполне улавливается. А значит и в языке программирования операторы отношения и присваивания имеют выразительный смысл, который можно и нужно использовать!

Формализуем правила
Связанные между собой по-смыслу действия процедуры и функции полезно объединять
Нужно четко отделять само действие, объект, на который действие направлено и параметры действия. Это три разные вещи!
Для показа изменения состояния объектов данных нагляднее использовать функции, а не процедуры. А так как функция возвращает только один результат не нужно одной процедурой менять все сразу!
ГлокаяКуздра(Бокра, Бокренка, Будланула, Курдячит)
это не наш путь!
Продолжение - следует!
   Злопчинский
 
430 - 01.06.16 - 00:58
Можно предположить, что Куздра стала глокой именно после булдания бокра и глокой является именно во время курдчания бокренка... то есть типа так:
..
Бокры.Бокр = Куздра.Булданула(Бокры.Бокр, Штеко);
Пока Не Бокры.Бокренок.Конец() Цикл
Бокры.Бокренок = Куздра.Курдячит(Бокры.Бокренок);
Куздра.Глокая = Истина;
КонецЦикла;
Куздра.Глокая = Ложь;
..
согласитесь - результат состояния Куздры - принципиально иной у автора и приведенном мной коменте...
 
 
   Злопчинский
 
431 - 01.06.16 - 00:59
> куздра куздрячит.
давайте не будем скатываться к примитивизму...
"куздра куздрячит" - понятно, что это обозначает действие _изначально_ характерное для куздры... но как таковая куздра сама по себе - нас не интересует... "кузрячит" - эквивалентно "рабочий работает" - т.е. энтропия данного сообщеняи близка к 0... "Куздра ... курдячит" - гораздо более емкое обпределение действия, которое поязволяет сделат вывод о том, что куздра имеет не одну степень свободы (куздрячит) а - гораздо больше! т.е. отсюда можно сделать вывод что куздра - суть многофункциональный объект/субъект! это подтверждается также и тем, что куздра еще может/умеет/выполняет БУЛДАНИЕ БОКРА, т.е. как минимум, куздра имеет три стпени свободы - 1.куздрячение (как изначально принадлежащее куздре по самоей ее сути) 2. кудрячение (бокренка!!!! не кого именно, а как минимум - бокренка) и 3. булдание (бокра, а не кого попало)...
..
вышеприведенный анализ позволяет также сделать вывод о том, что куздра - многофункциональный субъект/объект с избирательной "программой" действия, определяемой окружающей обстановкой (бокренка - кудрячит, болдание - бокра), т.е. присутствует обратная связь в определяющих мотивах поведения куздры...
..Вопрос о том, является ли куздра искуственным объектом/субъектом, однозначно определяемым конечным набором кортежей "действие куздры - объект вблизи куздры", или же куздра является объектом живой природы с ненормированным поведением в условиях нормированной/ненормированной внешней обстановки - на данный момент остается открытым...
   Злопчинский
 
432 - 01.06.16 - 00:59
   Serginio1
 
433 - 01.06.16 - 07:37
413+ Ну конечно нужно добавить
bool CAddInNative::setMemManager(void* mem)

(425)  Сейчас нельзя, но я предлагаю вариант типа IDispatch где можно передавать в том числе и объекты 1С.

Сейчас придется использовать двоичные данные, что бы в них устанавливать свою структуру для того, что бы понять что это за объект.
При получении такого объекта на стороне 1С нужно создать ВК обертку и передать эту структуру. Внутри уже вызывать методы используя ссылку.

При передачи в параметрах такой структуры, нужно получать ссылку и передавать уже на сторону .Net.
Можно обойтись и просто ссылкой, но тогда при передаче параметров будет непонятно, что это ссылка.
БинарныеДанные тоже придется упаковывать в эту структуру.
   Serginio1
 
434 - 01.06.16 - 07:59
433 Можно конечно использовать информацию о методе, так как так или иначе нужно передавать в GetNParams количество параметров. Но в .Net есть перегрузка методов где параметр может быть и интом и объектом
   Кирпич
 
435 - 01.06.16 - 09:10
(433) "Сейчас нельзя, но я предлагаю вариант типа IDispatch где можно передавать в том числе и объекты 1С"
1С не даст тебе передать объект и точка. Куда ты будешь пихать этот свой IDispatch? Тут без хака никак.
   Кирпич
 
436 - 01.06.16 - 09:13
(433) "Сейчас придется использовать двоичные данные, что бы в них устанавливать свою структуру для того, что бы понять что это за объект. "

я от тебя добиваюсь уже второй день, чтобы ты написал как это будет выглядеть в коде 1с, но тебя похоже это вообще не интересуеть :))
программирование сферического коня в вакууме мля.
   mksk
 
437 - 01.06.16 - 09:13
ADO на скуль достаточно чтобы не делать мозги
   Serginio1
 
438 - 01.06.16 - 09:56
(436)
Возьме для примера Комовский вариант

Список=Врап.СоздатьОбъект("System.Collections.Generic.List`1[System.String]");
Для сч=1 По 10 Цикл
Список.Add(строка(сч));    
КонецЦикла;


На Native  будет так.
Врап=Новый("Addin.VK.WrapperNet");
Список=Новый("Addin.VK.NetObject");

Данные=Врап.СоздатьОбъект("System.Collections.Generic.List`1[System.String]");

Объект.Обернуть(Данные);

Для сч=1 По 10 Цикл
Список.Add(строка(сч));    
КонецЦикла;
   Serginio1
 
439 - 01.06.16 - 09:57
(435) Все течет все меняется. Еще раз если сделать базовый класс по аналогии с 413 то можно все
   Serginio1
 
440 - 01.06.16 - 09:58
438+ Вот так будет

Врап=Новый("Addin.VK.WrapperNet");
Список=Новый("Addin.VK.NetObject");

Данные=Врап.СоздатьОбъект("System.Collections.Generic.List`1[System.String]");

Список.Обернуть(Данные);

Для сч=1 По 10 Цикл
Список.Add(строка(сч));    
КонецЦикла;
   Кирпич
 
441 - 01.06.16 - 09:59
(440) ну слава богу. теперь понятно.
   Serginio1
 
442 - 01.06.16 - 10:00
(441) Не богу, а мне!

И я могу передавать Данные в параметрах
   Кирпич
 
443 - 01.06.16 - 10:01
+(441) только с объектами самой 1с засада
   Serginio1
 
444 - 01.06.16 - 10:05
(443) Можно сделать по аналогии с Net и хранить объекты в массиве и передавать индекс на них.
Если нужны данные вызывать внешнее событие, в событии выставлять значение.
Но лучше добиваться от 1С что бы они сделали аналог Idispatch  как 413.
   Кирпич
 
445 - 01.06.16 - 10:13
(444) да блин такой огород городить. 1с правильно всё делает. И объекты запрещает передавать тоже правильно.
Мой подход такой:
Нужно сделать что-то что 1с делать не умеет, напиши ВК с конкретным функционалом и приложи бумажку с описанием функций.
Всё конкретно, понятно и не противоречит концепции предложенной фирмой 1с.
А эти обертки и свистелки это не по мне.
   Serginio1
 
446 - 01.06.16 - 10:20
(445) То ессть в Microsoft Dynamics  дураки?

Интересно, что в Microsoft Dynamics AX есть ClrObject
?https://msdn.microsoft.com/en-us/library/clrobject.aspx
?https://msdn.microsoft.com/en-us/library/clrobject.new.aspx

Вот пример применения

?https://blogs.msdn.microsoft.com/x/2010/01/19/traversing-elements-in-an-ienumerable-from-x/



Вот поэтом в том же линуксе используют Вэб сервисы, а не ВК.

1С позволяет передавать объекты (IDispatch), но только в COM.

Я в 413 предлагаю его аналог. И это никак не противоречит концепции.
   Serginio1
 
447 - 01.06.16 - 10:23
(445) На самом деле Внутри COM те же обертки свистелки.
Transparent Proxy, Real Proxy
   spock
 
448 - 01.06.16 - 10:32
что же вы такое курите?
   Кирпич
 
449 - 01.06.16 - 10:33
(448) чай
   Кирпич
 
450 - 01.06.16 - 10:34
(446) COM это готовые объекты с описанием того, что они делают. Т.е та же ВК. А если все начнут вставлять в 1с всякую мелочь типа System.Collections.Generic.List, то получится бардак, который в 1с не нужен. Ибо сила 1с в стандартах. Все одинесники должны понимать, что пишут другие одинесники. А когда один нафигачит в код объектов из .NET, второй нафигачит объектов из питона, третий из своего любимого Java. Это же крокодил какой то.
   Serginio1
 
451 - 01.06.16 - 10:41
(450) Так оно сейчас так и получается. Для Win есть куча библиотек на COM. А вот для Линукс нет COM вообще. Писать Native ВК не особо то продуктивно. А вот написать библиотеку на C# или JAva и документировать методы, то это ничем не будет отличаться от COM.
   Serginio1
 
452 - 01.06.16 - 10:42
(450) мелочь типа System.Collections.Generic.List в большинстве случаев идет в параметрах методов более мощных библиотек
   Кирпич
 
453 - 01.06.16 - 11:02
(451) "Для Win есть куча библиотек на COM" да не нужны в 1с кучи библиотек на COM. В 1С ИЗРЕДКА возникают прикладные задачи, которые нельзя решить на языке 1с. Например задача об упаковке в контейнеры или ещё какая нибудь хрень.
"Писать Native ВК не особо то продуктивно" чо там непродуктивного?
А сидеть втыкать в справку .NET, копипастить оттуда названия методов и переключаться без конца с русского на английский это продуктивно?
Ладно бы просто заставить ВК выполнить кусок кода на С# куда не шло, но вот это русско-английское дотнет месиво в модуле 1с это идиотизм, я щетаю.
   Serginio1
 
454 - 01.06.16 - 11:26
(453) Угу начиная от ADO, Экселей с вордами итд.
Еще раз Вэб сервисы сплошь на латинице. При  этом ты же не кричишь на каждом шагу, что это идиотизм?

Ну напиши ВК с сотней методов и классов. И сравни продуктивность.
Написать библиотеку на кирилице тебе никто не запрещает. Все в твоих руках.
   Кирпич
 
455 - 01.06.16 - 11:40
Экселей с вордами уже есть и по другому тут не будет. А вот самому себе писать русско-английское дотнет месиво в модуле 1с это идиотизм.
   Кирпич
 
456 - 01.06.16 - 11:45
(454) "Ну напиши ВК с сотней методов и классов" таких задач не бывает для ВК
   Serginio1
 
457 - 01.06.16 - 11:52
(455) Ну ты же пишешь. СОМ, ОбъектXDTO  (заметь в названии 2 языка) Методы вэб сервисов. И с Экселеи и Вордом.
На линуксе то нет COM. И из линукса большинство используют Вэб сервисы которые на латинице.
Мало того 1С хочет на зарубежный рынок, а там мешанины не быдет.

(456) Да? Вот тебе небольшие библиотечки
.Net в 1С. Парсинг сайтов, multipart/form-data, gzip итд

Опять же тот же Эксель Ворд
   Кирпич
 
458 - 01.06.16 - 12:07
(457) "Да? Вот тебе небольшие библиотечки "
Да. Не нужны эти библиотечки. Нафига делать парсинг сайта на 1с. Смысл? Выигрыша в скорости нет. Писать неудобно. Лучше сделай отдельную ВК или отдельный EXE для парсинга конкретного сайта или напиши скрипт на каком нибудь node.js. Задача разовая. Зачем мучить себя и того, кто придет после тебя.
   Serginio1
 
459 - 01.06.16 - 12:22
(458) Во во куча DLL b Exe вместо одной. Плюс регистрация итд. При этом написать парсинг может любой 1С ник на примерах. А сайтов может быть десятки. Проблема еще в том, что DLL ки висят в памяти и не выгружаются. А код на 1С можно править в любой момент.
Насчет неудобства. То да как правило я пишу сначала на C# потом переношу на 1С. Но например так как кода для парсинга сайтов пришлось писать много, то писал прямо на 1С и никаих неудобст не почувствовал. Ты то хоть попробовал?
   Serginio1
 
460 - 01.06.16 - 12:23
459 Люди пользуются и не жужжат. Там другая проблема нужно разбираться с селекторами.
 
 
   Кирпич
 
461 - 01.06.16 - 12:28
(459) "То да как правило я пишу сначала на C# потом переношу на 1С" вот этого я и не хочу делать. Хочу писать на C# и запускать в 1С. А уж через DLL или EXE или через ВК, которая загружает файл с кодом на С# и выполняет, это уже кому как нпавится.
   Serginio1
 
462 - 01.06.16 - 13:09
(461) Еще раз приведу пример как я начал делать. Я был таким как и ты писал COM DLL коих была куча.
Но раз мне стала проблема соединиться с Вэб сервисом с WS протоколами коих 1С не поддерживает.
В .Net это делается элементарно через Добавить ссылку на службу и получить WCF клинта. Но вод беда этих классов под сотню и столько же методов. Оборачивать это все вручную муторно. А вот через обертку легко.

Дальше все DLL нужно регистрировать. Используя мою обертку это не нужно. И можешь использовать кириллицу в названиях методов и никакого смешения языков не будет.

В конце концов не хочешь не используй. Я же тебя не заставляю.
   Кирпич
 
463 - 01.06.16 - 13:34
(462) "Оборачивать это все вручную муторно. А вот через обертку легко. " Нафиг оборачивать 100 функций, если можно сделать одну DLL с одной функцией типа "ПолучитьДанныеССервиса()" или "ЗапиститьСервис()"

"Дальше все DLL нужно регистрировать"
dll можно не регистрировать уже лет восемь. да и NativeAPI уже есть.

"В конце концов не хочешь не используй. Я же тебя не заставляю." так я и не буду испольщовать. нафиг я буду свои глаза ломать.
   Serginio1
 
464 - 01.06.16 - 13:55
(463) Не ломай.
Еще раз программируя на C# ты можешь передавать только COM совместимые типы.
Сразу видно ты не работал с Вэб сервисами? ОбъектXDTO. Ничем тебе ПолучитьДанныеССервиса() не поможет. Нужно создавать объекты XDTO передавать их в методы. Получать итд.

На NativeAPI ты на C# уже не попишешь. Только делать обертку через C++/CLI.

И вот я предлагаю тебе писать на C#, но использовать её через Native ВК. А вот на C# пиши на кирилице и все будет на одном языке. Никто же не запрещает.
   Serginio1
 
465 - 01.06.16 - 13:56
Ктати кргда ты говоришь про NativeAPI, то ты даже не понял, что в 412
   Кирпич
 
466 - 01.06.16 - 14:07
(464)"На NativeAPI ты на C# уже не попишешь" да можно, только никто не пишет.
"Нужно создавать объекты XDTO передавать их в методы." ну если надо, то ради бога.
"А вот на C# пиши на кирилице и все будет на одном языке." еще этого не хватало.
"то ты даже не понял, что в 412" там вроде интерфейс на С++. что я должен там ещё понять?
   Serginio1
 
467 - 01.06.16 - 14:12
(466)
На NativeAPI ты на C# уже не попишешь" да можно, только никто не пишет

Покажи пример. Буду благодарен. Кстати

Использование .NET сборок в 1С 8.2, 8.3 без установки и без регистрации в реестре
http://catalog.mista.ru/public/300091/

Но там можно использовать только простые типы.
>>А вот на C# пиши на кирилице и все будет на одном языке." еще этого не хватало
Ты же хочешь, что бы методы были на кириллице?

Ты же пишешь ВК. А для натива C++ основной.
   Кирпич
 
468 - 01.06.16 - 14:21
(497) "Покажи пример. Буду благодарен. Кстати" на форуме инфостарта поищи. там был уже ненормальный дотнетчик, который эту проблему решал. и таки решил.

"Ты же хочешь, что бы методы были на кириллице?" я хочу чтобы было на одном языке и работало быстро. пофиг на каком. можно в 1с писать на английском, но дергать методы ВК в цикле будет долго и код будет непонятный. я за то, чтобы ВК делала свою сложную работу и выдавала в 1с готовый результат.

"Ты же пишешь ВК. А для натива C++ основной."
NativeAPI  и на ассемблере можно писать. и на IL ассеблере  тоже.
   mksk
 
469 - 01.06.16 - 15:33
(0)вы можете предложить что-то конкретное?
   Serginio1
 
470 - 01.06.16 - 15:35
>> я хочу чтобы было на одном языке и работало быстро. пофиг на каком. можно в 1с писать на английском, но дергать методы ВК в цикле будет долго и код будет непонятный. я за то, чтобы ВК делала свою сложную работу и выдавала в 1с готовый результат.

Так пиши DLL и подгружай через мою оболочку. Не надо думать о COM итд.
И поверь написать просто DLL намного проще чем возиться с ВК.
   Serginio1
 
471 - 01.06.16 - 15:37
   Кирпич
 
472 - 01.06.16 - 16:25
(470) "Так пиши DLL и подгружай через мою оболочку." я и свою оболочку сделаю, если мне надо будет.
"И поверь написать просто DLL намного проще чем возиться с ВК." одинаково. взять шаблон и добавить названия своих методов это минутное дело.
   Serginio1
 
473 - 01.06.16 - 16:30
(472) Ну можешь взять мою разработку и наваять свою.
Так ВК то на чем пишешь?
На самом деле проще написать DLL на C# чем возиться с ВК.
Но ты хозяин барин. Пиши на чем угодно. Но проблема то Линукс как раз в том, что ВК писать неудобно. Проще Вэб сервис наваять на любом высокоуровневом  языке.
   Help1с
 
474 - 02.06.16 - 14:40
не совсем в тему. :)
автор, помоги пожалуйста ЭЦП, Сетрификат, Подпись. Продолжение.
   Бертыш
 
475 - 03.06.16 - 14:42
(0) Интересует твой опыт для внешних компонент под 1С на C# для наполнения твоими бесплатными статьями с инфостата своего сайта по теме внешних компонент. Я то только начал смещаться в сторону C#, а у тебя уже вон какой опыт. Давай дружить. Можно стартап под тему компонент замутить.
   Serginio1
 
476 - 03.06.16 - 14:57
(475) Ок. Говори, что надо постараюсь помочь чем смогу.
Просто мало кому это нужно, хотя написать компоненту, значительно проще чем предлагает 1С. В том числе и использование Глобального Контекста и Внешних Событий их замена через использование событий через Добавить обработчик
   Garykom
 
477 - 03.06.16 - 15:10
Проблема 1С с NativeAPI и C#/.Net как понимаю только в переменных-объектах?

Технически можно извратиться слегка и использовать переменные внутри ВК, а для получения их значений в 1С реализовать ВК.Get("Перем1").AsString()/AsInt()/AsDate() и т.д.
   Serginio1
 
478 - 03.06.16 - 15:25
(477) Проблема NativeAPI и C# в том, что нужно хранить ссылки в массиве на стороне .Net в массиве и передавать на сторону 1С индекс в массиве.
Второе, это то, что в NativeAPI  нет аналога IDispatch нужно в параметрах передавать структуру упакованную в двоичные данные, что бы было понятно, что это объект. Так как даже имея информацию о методе могут быть перегрузки как с объектом так и int. Ну и соотвественно нужно вручную оборачивать объекты

На Native  будет так.
Врап=Новый("Addin.VK.WrapperNet");
Список=Новый("Addin.VK.NetObject");

Данные=Врап.СоздатьОбъект("System.Collections.Generic.List`1[System.String]");

Объект.Обернуть(Данные);

Для сч=1 По 10 Цикл
Список.Add(строка(сч));    
КонецЦикла;
   Serginio1
 
479 - 03.06.16 - 15:26
Объект.Обернуть(Данные);
читать как
Список.Обернуть(Данные);
   Garykom
 
480 - 03.06.16 - 15:33
(478) Может так не выделываться а по принципу запросов в 1С?

Создается объект запрос, пишется-присваивается код запроса, устанавливаются параметры, выполняется и получаем результат.

Так и тут для начала сделать, создаем объект ВК, устанавливаем код C# (нативный) и параметры, выполняем. Результат выполнения получаем и используем в 1С.
   Garykom
 
481 - 03.06.16 - 15:35
(480)+ Да писать придется на нативном C#/.Net но возможно это будет даже проще без постоянных оберток?
Тупой копи-пасте из примеров в инете, небольшой допил в начале и в конце и сразу использование.

Но что удобно так динамическое создание кода для выполнения в .Net, причем без VS и прочих студий/компиляторов.
   Serginio1
 
482 - 03.06.16 - 15:40
(483) У нативного .NEt та же сборка мусора, а NativeAPI позволяет передвать только простые типы. Уже сделана такая обертна на основе CLR Host http://catalog.mista.ru/public/300091/

Но он только под вин и
Статические классы не поддерживаются;
Конструктор должен быть без параметров;
Поддерживаются только следующие типы для обмена с 1С: System.String; System.Boolean; System.Int32; System.Double; System.Byte[];
Out и ref параметры не поддерживаются в связи с тем, что не получилось это реализовать, см. описание метода, если кто разберется, как это сделать, буду очень рад.
   Garykom
 
483 - 03.06.16 - 15:44
(482) Там не то, там сборки готовые позволяет юзать из 1С без регистрации как ВК.

Но как создать эту сборку причем очень просто сразу из 1С? Причем создать с нужным кодом с помощью кода на языке 1С?
   Кирпич
 
484 - 03.06.16 - 15:47
(480) вот вот. типа как Windows Script использовать
   Garykom
 
485 - 03.06.16 - 15:52
(484) Самый профит что можно будет начинать делать библиотеку плагинов/расширений к этой ВК.

Т.е. реализовали нечто на C#/.Net и засовываем в свою либу которая штатно к ВК подключается и процедуры/функции оттуда можно вызвать.
   Garykom
 
486 - 03.06.16 - 15:53
(485)+ хм... а если в ВК встроить аналог NuGet...
   Serginio1
 
487 - 03.06.16 - 15:53
(483) Я уже написал. Сейчас С++ изучаю и попробую для начала это прикрутить http://www.fancy-development.net/hosting-net-core-clr-in-your-own-process
   Garykom
 
488 - 03.06.16 - 15:56
(487) Интересненько... Встроить CLR внутрь 1С NativeAPI ВК на C++?
Без внешнего (снаружи ВК) сохранения кода и компиляции сборок?
   Serginio1
 
489 - 03.06.16 - 15:58
(483) У меня тоже готовые сборки. Классы то хранятся в сборках. Просто у него объекты не возвращаются, а делается оберка над объектом по передаме строковому представлением типа

(488) На .Net пишем класс со статическими методами. Передамем в параметрах ссылку на память в которую сериализуются параметры и название метода. Обычный маршалинг
   xxTANATORxx
 
490 - 06.06.16 - 11:58
(0)сейчас был звонок, ищут прогерра 1С со знанием языка С, говорят что не могут найти такового
интересует?
   Gary417
 
491 - 06.06.16 - 12:10
(490) <не могут найти такового>

очень любопытно было бы узнать сколько денег дают

P.S. чисто из интереса, не претендую т.к. си не знаю
   Господин ПЖ
 
492 - 06.06.16 - 12:14
>говорят что не могут найти такового

гинекологи со знанием ухо-горло-носа тоже редки
   xxTANATORxx
 
493 - 06.06.16 - 12:19
(491)про деньги не заводили разговор
   Serginio1
 
494 - 06.06.16 - 12:24
(490) Я сейчас только С++ изучаю для использования .Net в NativeAPI.
   Gary417
 
495 - 06.06.16 - 12:26
(493) жаль, потому что обычно на этом разговор и заканчивается ;))
   xxTANATORxx
 
496 - 06.06.16 - 12:28
(494)вот эти товарищи звонили workservice.ru с телефона 4956426359
   Serginio1
 
497 - 06.06.16 - 12:45
(496) Если С то я его знаю на уровне изучения, но не применения.
Большое спасибо за информацию.
   xxTANATORxx
 
498 - 06.06.16 - 12:50
(497)та мошт им это и нужно

просьба к модераторам: удалите плиз сообщение (496)
   Serginio1
 
499 - 06.06.16 - 12:53
(498) Там еще внутренний номер нужно знать
   Serginio1
 
500 - 06.06.16 - 12:54
(498) Ты им письмо напиши
  1  2  3  4  5  6  7   

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