gifts2017

Шаблон внешней компоненты на C#

Опубликовал Ростислав Кузьмин (Kuzja_R) в раздел Программирование - Внешние компоненты

Шаблон внешней компоненты для 1С:Предприятие на C#.

Написан и успешно компилируется в Microsoft Visual C# 2010 Express. В комплекте RegAddIn.bat как образец для регистрации компоненты в реестре и обработка для проверки работоспособности в 1С. Все проверялось с 1С версии 8.2.16.352.

Upd, 25.04.2016

Компонента успешно пересобрана и проверена на конфигурации:

  • 1С:Предприятие 8.3.7.2027
  • MS Visual Studio Express 2015 для Windows Desktop
  • Windows 10

Скачать файлы

Наименование Файл Версия Размер
AddIn 599
.zip 37,25Kb
15.04.16
599
.zip 37,25Kb Скачать

См. также

Вознаграждение за ответ
Сумма: 0 $m
Добавили:
arnold kurkov (fox2010) (7.00 $m)
Подписаться Добавить вознаграждение
Комментарии
1. Андрей Краснокутский (Andry.Boris) 21.06.12 01:08
Плюсую...
но... есть вопрос?
В длл только элементарные действия или можно работать с базой (справочниками, документами...)
Если можно пример на шарпе с обработкой справочника...
2. Ростислав Кузьмин (Kuzja_R) 21.06.12 02:17
(1) Andry.Boris, можно, но я с этим еще не разобрался, поэтому примера нет. Могу, как вариант, дать ссылку. Там этот вопрос рассматривается.
3. TigeRuS 22.06.12 08:36
Вообще не вижу смысла данной компоненты. Все плюсы, которые указывает автор статьи спорные: например, выгрузка/загрузка в xml - это запросто можно сделать используя средства 1С. Я лучше буду программировать либо в 1С, либо на шарпе, но вместе зачем их скрещивать. У них разные области применения.
4. Сергей Самошин (saiten) 22.06.12 09:50
А неплохо. Плюсанул. Но кое-что непонятно:
1. Зачем подключено System.EnterpriseServices? Я что-то упустил?
2. Назначение интерфейса IMyComponent.
3. Работа со свойствами не реализована?
5. Ростислав Кузьмин (Kuzja_R) 22.06.12 10:05
(3) TigeRuS, данной компоненты - это какой? Я в своей ни о каких плюсах не говорю. По ссылке, которую я привел выше тоже плюсы/минусы не рассматриваются. Слово "xml" там встречается ровно 1 раз, когда говорится о способе хранения настроек проекта VB.NET. Вы о чем? Сам придумал преимущество и сам его опроверг. :)
И тот, и другой пример - просто примеры создания внешних компонент: мой - как это сделать на c#, в статье по ссылке - как из компоненты работать с объектами 1С (ответ на (1)).
С утверждением о разных областях применения согласен. Именно по этому они удачно дополняют друг друга через механизм ВК.
6. Ростислав Кузьмин (Kuzja_R) 22.06.12 10:33
(4) saiten,
1. System.EnterpriseServices осталось в наследство от примера из отличной статьи. Там это пространство имен нужно было для работы с COM+. Можно и без него, согласен.
2. Интерфейс IMyComponent нужен для работы процедуры RegisterExtensionAs, которая перебирает все интерфейсы и хэширует имена методов, объявленных в них.
3. Со свойствами - да есть проблема: интерфейсы не могут содержать поля. Может быть кто-то из уважаемой публики предложит решение?

P.S.
Как вариант, добавлять имена свойств в хэш таблицы в процедуре RegisterExtensionAs хардкодом. И реализовать GetPropVal, SetPropVal, IsPropReadable, IsPropWritable.
7. Сергей Самошин (saiten) 22.06.12 11:33
Интерфейс IMyComponent нужен для работы процедуры RegisterExtensionAs, которая перебирает все интерфейсы и хэширует имена методов, объявленных в них.
Л-логично... Просто, несколько проще было бы, на мой взгляд делать так: хэш заполнять по this.GetType().GetMethods(), а функционал компоненты отделить от реализации интерфесов:
class myTestComponent:myComponent
{
 public int Go(int Param1, int Param2)
...

А вообще, респект. Делал похожую штуку, только до публикации так и не дошло, бо потребовалась реализация native API под тонкий клиент и не удалось решить красиво проблему со свойствами.
8. Василий Казьмин (awk) 23.06.12 01:20
(3) TigeRuS, Только сегодня накатал на C# СОМ обертку для Regex, т.к. VBScript.RegExp не понимает UTF-8.
15 мин и счастье в кармане. Так что есть что расширять в 1С. Хотя регулярных выражений как не было в ней, так и нет. Лучше бы 1С вместо XML регулярные выражения в общие объекты включила.
KilloN; gortol; +2 Ответить
9. Ростислав Кузьмин (Kuzja_R) 23.06.12 13:13
(7) saiten, функционал конечно нужно как-то отделять от интерфейса. Только думаю, что так просто не получится. 1С создает и работает с объектом MyComponent (в данном примере). Если мы создаем производный класс myTestComponent и в нем определяем методы, как получит доступ к ним MyComponent? И если принята модель, что пользовательские методы объединяются в отдельный интерфейс, то как туда попадут они из производного класса? Тут нужно что-то другое придумывать...

Если кому интересно, реализовал работу со свойствами. Выложил свежий файл.
10. Сергей Самошин (saiten) 24.06.12 12:39
(9)Собственно, 1С создаст объект типа MyTestComponent и будет работать с ним через методы, определённые в MyComponent (естественно, для производного класса, надо установить ComVisible(true) и Guid). При этом this будет указывать на объект MyTestComponent, таким образом ничто не помешает 1С вызывать методы MyTestComponent, имея ссылку на MyComponent через Invoke, т.к. this.GetType().GetMethods() вернёт описания методов как в базового, так и в производного классов. Описывать же пользовательские методы компоненты в отдельном интерфейсе нет необходимости, и логического смысла, в общем-то, тоже: класса вполне достаточно.
11. Ростислав Кузьмин (Kuzja_R) 24.06.12 22:18
(10) saiten, да, вынес функционал для подключения к 1С в отдельный класс. Спасибо за предложение!
12. Виталий Ермоленко (vitaliy.ermolenko) 27.06.12 11:38
(3) TigeRuS, ВК оч. удобны для связки например 1с со скайпом или тем же астериском, из самой 1с по-моему этого не реализовать
14. albochkov (Aleksey.Bochkov) 19.07.12 00:13
Наивный вопрос - а нет ли такого же примера на vb? :)
15. Ростислав Кузьмин (Kuzja_R) 19.07.12 00:21
(14) albochkov, мне, пока я изучал вопрос, вроде не попадался.
16. Тарас (softest) 01.08.12 22:14
Спасибо, мне помогла взял себе на заметку!
17. Леван Иремадзе (IRLes) 02.08.12 01:06
Спасибо, нужно будет поработать над ней для своих целей :)
18. Алексей Выхрыстюк (avhrst) 31.08.12 23:21
Плюс однозначно
У меня вызвало теплые воспоминания когда я давно давно писал на C# ВК для 1С v7 :)
19. Ростислав Кузьмин (Kuzja_R) 01.09.12 15:47
(18) avhrst, да, технологии сто лет, а готового работающего примера с комментариями что и для чего найти не получилось. Теперь есть.
20. Виталий Захаров (vz1987) 06.09.12 17:31
Спасибо большое за пример!
Но меня возникла проблема: ПодключитьВнешнююКомпоненту("AddIn.MyComponent") отрабатывает, а создание объекта Новый("AddIn.MyComponent") вылетает с исключением Тип не определен (AddIn.MyComponent)
21. Ростислав Кузьмин (Kuzja_R) 06.09.12 18:06
(20) vz1987, регистрация компоненты с помощью regasm.exe проходит без ошибок? В реестре создаются ключи HKEY_CLASSES_ROOT\AddIn.AddIn и HKEY_CLASSES_ROOT\AddIn.MyComponent?

В Visual Studio есть возможность автоматически регистрировать компоненту при компиляции. Для этого в свойствах проекта на закладке "Построение" нужно поставить галку "Регистрировать для COM-взаимодействия" и на закладке "Приложение" -> "Сведения о сборке" -> "Сделать сборку видимой для COM".
22. Виталий Захаров (vz1987) 07.09.12 20:45
(21) Kuzja_R, regasm выдает warning RA0000: Registring an unsigned assembly with /codebase can... и в конце пишет, что Types registred successfully.
Ключи создаются в реестре, но по другому пути: HKEY_USERS\S-1-5-21-2345514615-3774356936-3805296294-1001\Software\Classes\AddIn.AddIn. М.б. в этом собака зарыта?
23. Ростислав Кузьмин (Kuzja_R) 07.09.12 21:30
(22) vz1987, могу предположить, что у вас нет прав на запись в ветку HKEY_CLASSES_ROOT, поэтому пишет в HKEY_USERS. Попробуйте запускать bat файл с правами администратора.
24. Виталий Захаров (vz1987) 12.09.12 15:17
(23) Kuzja_R, удалось записать в HKEY_CLASSES_ROOT, но результат тот же...
25. Виталий Захаров (vz1987) 12.09.12 15:41
(23) Kuzja_R, разобрался. Поплотней изучил код вашей компоненты и нашел:
public const string AddInName = "ExpoServer";
Соответственно, в 1С, обращение
Компонента = Новый("AddIn.ExpoServer");
решает все проблемы.
Еще раз спасибо большое за пример, теперь буду развивать его в своем направлении:)
26. Ростислав Кузьмин (Kuzja_R) 12.09.12 16:20
(25) vz1987, извините. Да, моя ошибка. Поправил.
27. Аркадий Кучер (Abadonna) 21.09.12 05:32
(23)
могу предположить, что у вас нет прав на запись в ветку HKEY_CLASSES_ROOT

Вот только поэтому я и свалил на технологию Native ;)
Вечная проблема прав, особенно в правильных сетках, где юзверь вообще локальных административных прав не имеет.
28. Dragon Ago (DragonAgo) 21.09.12 08:35
Спасибо, можно ввзять на заметку
29. ZOOBR (ZOOBR) 02.11.12 22:55
(27) Легко сказать, да вот примеров типа "как свалить на Native API" я не нашёл(конечно имею ввиду C# и 1С 8.2), хотя только по данной технологии можно сделать кроссплатформенное решение. Относительно Вк, иногда проще написать библиотеку NET для работы с ней по технологии COM, так как зачастую функционал ВК не требует тесного взаимодействия с 1С, а лишь выполняет роль очередного "костыля", у меня например это шифрование и битовые операции. Поэтому рекомендую оценить необходимость написания ВК по технологии 1С, иногда это необходимо, а иногда и наоборот. Автору конечно+.
30. Аркадий Кучер (Abadonna) 03.11.12 06:30
(29) ZOOBR,
Легко сказать, да вот примеров типа "как свалить на Native API" я не нашё

Могу конечно ошибаться, но на ИТС примеры на CPP, он разве шибко от "до диез" отличается?

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

Тогда ее и писать не стоит, куча всяких костылей :( Я стараюсь делать для себя так, чтобы моя ВК все мои потребности удовлетворяла, не хватило - туда же дописал.
Вот, например: http://dev.1tsm.ru/project/148
31. ZOOBR (ZOOBR) 03.11.12 14:20
(30) НЕ поверишь, отличается. И если бы всё с Native API было так гладко да просто, то инфостарт уже наводнился бы болванками типа "Hello World!" на C#. Конечно когда нибудь всё изменится, разберёмся я думаю, тут ничего невозможного конечно нет.
Под костылём я подразумевал не отдельную библиотеку, а лишь очередную функцию которой она будет пополняться(я у себя например подобную библиотеку юзаю не только для 1С). Всё это я говорил относительно того, что не всегда нужно придерживаться технологии ВК 1С, а можно например просто COM юзать, и пиши туда чего хошь. Да, теряется кроссплатформенность, но этого недостатка не лишена и стандартная ВК 1С(не Native API), которая по сути тот же COM.
32. Аркадий Кучер (Abadonna) 03.11.12 14:28
(31) ZOOBR,
"которая по сути тот же COM"
кто и что по сути com я в курсе, я их испокон веков пишу ;)
Я вот то, что проблема регистрации в реестре мало кого трогает - так это, видать, юзают в сетках, где кому попало такие права на запись раздаются
33. ZOOBR (ZOOBR) 03.11.12 23:59
(32) То что ты в курсе я даже не сомневался, не обижайся. Расписывал скорее для остальных читателей комментов. Насчёт прав не совсем согласен. Например всё то что я упоминал работает у меня исключительно на сервере, где регистрацией COM кроме меня никто не ведает. Клиентские шняги стараюсь не делать, а если и приходится, то далеко не для всех(да и зарегистрить ком для пользователя домена проблемы не составляет). Еще раз подчёркиваю, что я никак не умоляю достоинств Native API, а как раз наоборот. Просто сам пишу сейчас на NET и когда в своё время захотел освоить данную технологию инфы толком не нашёл. Адаптировать с CPP конечно как то можно я думаю, но времени на это сейчас нет как видно и у многих других. Буду рад если кто-то поделится когда нибудь "рыбой". Но что-то я уже конечно флудом занялся. Больше не буду.)
34. Аркадий Кучер (Abadonna) 04.11.12 04:30
(33)
работает у меня исключительно на сервере, где регистрацией COM кроме меня никто не ведает.

Во! Ключевой момент! А у нас в холдинге, например, 1С-УППшник мечтает хотя бы о доле прав. А нех! :)
Если утрировать - без разрешения нашего кабинета даже в туалет сходить нельзя :)))
35. Игорь DC (dragonCat) 28.11.12 16:15
Вопрос: будет ли вышеописанный пример работать на 7.7? Уже почти неделю пытаюсь чформировать ВК на C#, но 7.7 ее видеть категорически отказывается. Зато восьмерка - без проблем.
Попутно вопрос: комунить вообще когда либо удавалось создать ВК на C# для 1С:7.7?
36. Игорь DC (dragonCat) 28.11.12 16:16
К сожалению, скачать приведенный в статье пример пока не могу, да и не уверен, что поможет, т.к. все скрины на восьмерке...
37. Ростислав Кузьмин (Kuzja_R) 28.11.12 17:05
(35) dragonCat, с 7.7 не работает. Компоненту, сделанную по этому шаблону, 1С видит и подгружает, но при вызове функций на стороне компоненты возникают ошибки приведения типов. Если получится решить вопрос, дайте знать, пожалуйста.
38. Игорь DC (dragonCat) 28.11.12 17:44
(37) Удалось таки скачать файл, построил по нему dll с небольшими дополнениями (систем формз добавил, что бы мессаджбокс вывести). Все заработало (7.7, 27й движок).

Код в 1С:
	ИмяВК = "AddIn.MyComponent";
	Сообщить("Открываем "+ИмяВК);
	Сообщить("Результат = " + ПодключитьВнешнююКомпоненту(ИмяВК));
	
	ВК = СоздатьОбъект(ИмяВК);
	Сообщить(Строка(ВК));
	
	Результат = ВК.Go(84, 2);
	Сообщить("Компонента посчитала! Ответ = "+Результат);
	
...Показать Скрыть


Результат выводится...
С типами проблема вполне возможна, но она решается гораздо проще, чем заставить 1С увидеть компоненту :)
39. Игорь Steelvan (Steelvan) 31.03.13 11:43
Поднять форум на 1С с этой компонентой http://infostart.ru/public/149676/ получится?

Например, объединить http://infostart.ru/public/78388/ и вашу разработку.

Думаю, это было бы интересно службе поддержки франчайзи или фрилансеру.

У нас сейчас используется форум на phpBB, приходится дублировать задачи в 1С.

Позже, может прикрутим автообмен.

Пишу сюда, т.к. там отключены комментарии.
40. Ростислав Кузьмин (Kuzja_R) 31.03.13 13:07
(39) Steelvan, получится. Зачатки такого форума есть в решении ExpoServer: Домоуправление. Если есть конкретные вопросы-предложения - в личку.
41. Игор Мудрицкий (Zas1402) 11.06.13 11:25
Вот только поэтому я и свалил на технологию Native ;)

Если по Native API компоненту не нужно регистрировать при любом клиенте?
42. arnold kurkov (fox2010) 17.07.13 15:46
При вызове метода asyncEvent.ExternalEvent не из главного потока (например вызываем в событии DataReceived у SerialPort) происходит слкдующая ошибка:
Невозможно привести COM-объект типа "System.__ComObject" к интерфейсному типу "IAsyncEvent". Операция завершилась со сбоем, поскольку вызов QueryInterface COM-компонента для интерфейса с IID "{AB634004-F13D-11D0-A459-004095E1DAEA}" возвратил следующую ошибку: Интерфейс не поддерживается (Исключение из HRESULT: 0x80004002 (E_NOINTERFACE)).

Буду рад любой помощи.
43. Shrek Shrek (Shrek2015) 18.07.13 10:34
44. Антон Лаврухин (Mozar) 31.07.13 15:24
Отличный шаблон, давно искал такой.
45. Дуб (Дуб) 25.09.13 13:41
Штука интересная. Но ни разу не понял - как инициировать ВнешнееСобытие
46. Ростислав Кузьмин (Kuzja_R) 25.09.13 14:35
(45) Дуб, для внешнего события в 1С нужно вызывать asyncEvent.ExternalEvent(...)
47. Alever (Alever) 03.02.14 09:38
Спасибо большое за довольно простое и четкое объяснение по работе с ДЛЛ-ками. От себя же могу только добавить - нашел интересное видео как сделать DLL на C# в Visual Studio. - http://www.youtube.com/watch?v=hinh5pfnbII
48. Игорь Нешик (ineshyk) 14.10.14 17:38
Странно, но на сервере не работает ПодключитьВнешнююКомпоненту. В чем может быть проблема?
49. Сергей Биржевой (bsl) 22.11.14 16:15
(42) fox2010, Здравствуйте! Также нарвался на данную проблему, но решилось просто: регистрировать библиотеку надо с ключом /tlb, а не /codebase. Под 8.3 работает прекрасно, спасибо автору!
sigmov; bss; +2 Ответить
50. Виталий Захаров (vz1987) 04.02.15 19:10
Kuzja_R, в случае, если на одной машине планируется использовать несколько внешних компонент, подобно этой, как избежать конфликта имен классов? Ведь в этом шаблоне помимо AddIn.<ИмяКомпоненты> регистрируется еще AddIn.AddIn.
51. Dave Nikolsky (dave2000) 12.02.15 15:44
Такой вопрос. Если мы обращаемся в 1С к свойствам и методам, описанным в компоненте, то все окей. А если мы вызываем произвольные методы или свойства, тут все как-то странно. Например:

Компонента.Prop = 3; //Правильное свойство
Компонента.Prop1 = 3; //Такого свойства нет, но при присваивании даже не ругается
Компонента.Petyua = 3; //Такого свойства нет, но при присваивании даже не ругается
Компонента.Popa = 3; //Такого свойства нет, но при присваивании даже не ругается

Компонента.Go(10, 5); //Правильная функция
Компонента.Goga(10, 5); //Такой функции нет, но выдает "Недостаточно фактических параметров"
Компонента.Goga_123(); //Такой функции нет, но выдает "Недостаточно фактических параметров"
Компонента.Gogogogogo(); //Такой функции нет, но выдает "Недостаточно фактических параметров"

Почему не ругается на неправильные методы и свойства? Чем это чревато?

Как научить компоненту распознавать русские названия методов и свойств? Помнится, когда-то давно писал ВК на Делфи, там это было реализовано.
52. Женька Ture (ture) 25.02.15 17:45
Ссылка на объект не указывает на экземпляр объекта.
1C 8.2.17
тута ==> asyncEvent.ExternalEvent("AddIn", "error", e.ToString());

после этого ==> булРез=ПодключитьВнешнююКомпоненту("AddIn.MyComponent");
oCom = Новый COMОбъект("AddIn.MyComponent");
oCom.Go(10,0);
53. Dima Dima (bayce) 02.03.15 21:30
54. Кирилл Бондаренко (karapuzzzz) 23.03.15 12:11
Спасибо. Очень выручил шаблон, когда надо было срочно написать драйвер для работы с весами через COM. Единственное, что я не понял, так это регистрация компоненты. Через regasm все получилось нормально. А можно ли это сделать через стандартный regsvr32? При попытке выдает что точка входа в процедуру dllregisterserver не найдена. Информации я не нашел.
55. Ийон Тихий (cool.vlad4) 24.03.15 10:49
(54) karapuzzzz, нет, нельзя. дотнетовские сборки регистрируются только через regasm.
56. Владимир Панимаскин (PoniMan) 21.05.15 02:07
Глупый вопрос - когда у какого-либо из интерфейсов скачанного проекта меняю GUID или банально переписываю 1 в 1 код в свой проект, где устанавливаю свои GUID'ы для соответствующих интерфейсов, при подключении в 1С ругается "Тип не определен (AddIn.MyComponent)". Конечно, перед этим сборку пересобираю и перерегистрирую в винде. Не понимаю, почему так может происходить. Кто-нибудь может подсказать?
57. Амир Хасанов (aworld) 26.05.15 22:18
(56) PoniMan, судя по этой статье у ряда классов должны быть предопределенные guidы
58. Владимир Панимаскин (PoniMan) 09.06.15 12:48
(57) aworld, спасибо огромное, все перерыл. Все оказалось очевидным. Я наоборот думал, что все GUID должны быть уникальными.
59. Николай Крылов (Nikola23) 09.08.15 22:32
Да, я очень плохо разбираюсь в шарпе, но подскажите плз:
Я создал на шарпе тип(класс), аналогичный дереву значений 1с с 2мя колонками.
Возвращаю такое дерево в 1с, определяется как Com_объект. Причина такого поведения понятна.
Непонятно, как из компоненты инициализировать тип дерево значений и на стороне компоненты заполнить его, а затем возвратить готовый результат.

А может совсем по другому необходимо действовать?
60. Ростислав Кузьмин (Kuzja_R) 09.08.15 23:41
(59) Nikola23, проще всего создать нужное дерево на стороне 1С, потом вызывать функции компоненты, возвращающие простые типы и этими результатами заполнять дерево значений. Если нужно от компоненты получать сложные составные данные, тогда используйте разделители в строках или xml-разметку. На стороне 1С разбираете ответ и заполняете дерево.
61. trade70 10.08.15 04:15
(3) TigeRuS, Внешние компоненты в 1С давно используют для написания обработчиков драйверов ТО. Так как в "сыром" виде эти драйвера использовать в 1С нереально)
62. IMalyshev (allegrosoft) 27.08.15 22:08
Почему в win 8 не работает, хотя зарегистрировалась без проблем? В ХР все норм.
63. Валерий Березуцких (spec8s) 02.09.15 08:20
(62) allegrosoft, win 10 тоже не работает, сам сом загеристрировался
64. Mishgan (BigTaur) 22.01.16 14:56
Не пойму почему событие для 1Ски срабатывает, если возникает в методе вызванном из 1Ски и не срабатывает, если возникает внутри. Т.е.
public void SendEvent()
{
asyncEvent.ExternalEvent("AddIn", "SendEvent", "Внешнее событие");
}
Событие возникает при вызове метода из 1Ски Компонента.SendEvent() и появляется во ВнешнееСобытие().
И если я например напишу:
public void SendEvent()
{
SendEvInternal();
}

public void SendEvent()
{
asyncEvent.ExternalEvent("AddIn", "SendEvent", "Внешнее событие");
}
И вызову Компонента.SendEvent() - то ничего не происходит, 1Ска события не видит.
Помогите пожалуйста, уже всю голову сломал.
65. Mishgan (BigTaur) 22.01.16 15:17
Сам себе отвечу ибо идея пришла сразу после мессаджа, нужно методы запихать в один поток или как оно там. Добавление директивы [STAThread] перед методами решает проблему.
66. Сергей Пономарёв (izidakg) 04.05.16 23:28
то что проверена на 1С:Предприятие 8.3.7.2027 прекрасно, НО не стоит народ путать
скачивал этот пример еще в 2014, скачал и сейчас - нет ни одного файла чтоб отличался хотя бы временем
только цена за скачивание с 1 до 5 возросла
67. Ростислав Кузьмин (Kuzja_R) 04.05.16 23:36
(66) izidakg, где-то обозначено, что есть изменения в публикации? Вроде нет. Написано о том, что шаблон был успешно проверен на новых платформах. Исходный код не менялся, потому что и старый отлично работает. Как говорится, новые песни нужны тому, у кого старые плохие. А цена - да, теперь другая. Инфляция-с.
68. Женька Ture (ture) 05.05.16 16:47
(67) Kuzja_R, что так дешево? разве это не может стоить дороже с Вашей точки зрения?
69. Ростислав Кузьмин (Kuzja_R) 05.05.16 17:52
(68) ture, не думаю, что пустая заготовка может стоить дороже. У тех, кто пишет ВК и зарабатывает на этом, полно своего кода. А те, кто только начинает разбираться, вряд ли готовы платить серьезные деньги только за "посмотреть".
70. Женька Ture (ture) 06.05.16 10:05
(69) Kuzja_R, пустая заготовка является началом для любой новой компоненты. Это как чистый лист, чтоб сразу начать работу по выбранному предмету, не теряя время на детали красивого взаимодействия с платформой. По опыту написания на с++ скажу прямо - не смыслят гуру в своем коде, глаз уже замалеван и здесь очень важно делиться опытом и показывать альтернативу, чтоб оставалось в коде только полезное и правильное, а не куча фантомов. По идее первичный образец должна давать 1С, но её образец не рассчитывался на конечный продукт. Этот последний факт открывает целое поле для работы и самовыражения.
71. Николай (the_master) 22.08.16 06:37
Пустая и не рабочая заготовка, но жлобство - "наше все"!!!!
72. Ростислав Кузьмин (Kuzja_R) 22.08.16 17:09
(71) the_master, камрад, у тебя 0 рейтинга, 0 публикаций (платных, бесплатных) за 10 лет на сайте. При этом ты позволяешь себе кого-то в чем-то обвинять? Не пиши сюда больше, пожалуйста.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа