Tone2010 Tone2010

12
Рейтинг

Tone2010



  •   Регистрация: 16.04.2010 (14 лет назад)

  •   Был(а) на сайте: 29.07.2013

Подписчики 1

Рейтинг 12

1C + .NET Framework 2.0

Инструменты и обработки Программист Платформа 1С v7.7 Конфигурации 1cv7 Россия Windows Абонемент ($m) Компонента, плагин (dll, vbs,..) Разработка внешних компонент

Данный компонент, позволяет использовать сборки (или исходный код C#) .NET Framework 2.0 в среде 1С:Предприятие. Как известно на базе Framework сейчас работает большинство приложений под платформу Windows, поэтому я считаю актуальным иметь такую возможность из 1С. Преимущества: решение любых системных задач без использования WMI, и использования готовых решений в виде сборок .NET.

1 стартмани

16.04.2010    10334    106    Tone2010    39       

12

Комментарии

ВК1C + .NET Framework 2.0#37 13.10.11 7:42
Жадность заключается в том что имея чем поделится я не могу пользоваться публикациями других.... так чтобы скачать даже твою публикацию мне необходимо иметь какие-о виртуальные деньги.
ВК1C + .NET Framework 2.0#35 22.09.11 7:23
В связи с жадностью и не понятным мотивам авторов сего ресурса, оставляю сию публикацию до конца 2011 года, потом удалю и участвовать в этом не собираюсь...
DevУпаковщик двоичных файлов os7764#21 26.04.10 20:20
Для base64 используйте .NET

Convert.FromBase64String();
Convert.ToBase64String();

Используя интерфейс IStorage, можно к любой ert-шке присобачить любые данные без конвертации в base64.
ВК1C + .NET Framework 2.0#32 21.04.10 11:07
(31)
Я использую, для работы с Веб-сервисами. SOAP слышал? Так вот обертка на .NET для таких вещей делается за полминуты, а из 1С-ки ты продолбаешся долго, опять только COM поможет быстро решить задачу. Таки Regex вуаля пожалуйста он есть в .NET. Работа с сетью, сокеты? HttpRequest-ы, ftp, мыло и прочее - всё есть. Ты скажешь что под половину перечисленного есть решение готовое, ну и слава богу, первое правило не навреди (работает не трогай). Делалось для тех, кто уже пишет на .NET, но ещё приходится решать задачи для 1С. Т.е. прежде всего я делал для себя....
ВК1C + .NET Framework 2.0#29 21.04.10 10:24
(28) Вы меня не поняли, проблемы с доменами приложений НЕТ, она решена. Иначе бы метода "ВыгрузитьСборки" не было :). Привычка чистить за собой осталась даже с появление .NET, так что увольте.
ВК1C + .NET Framework 2.0#27 21.04.10 8:41
(26) Ни с автором ни с самой разработкой не знаком, очень похоже по задумке кстати. Я упор делал на метод ВыгрузитьСборки(), пришлось с ним повозиться. Это надо было для автоматического обновления модулей (сборок) через инет, соответственно, чтоб обновить надо выгрузить из памяти, а это работа с доменами приложений, мне мозг напрягла очень сильно... Это пробная попытка скрестить 1С с дотнетом, поэтому если что то не работает, кидаете лог в личку с описанием. Лог находится в "Администрирование->Просмотр событий", ну и за размером лога следите.
ВК1C + .NET Framework 2.0#23 19.04.10 11:22
Вот рабочий вариант:

Процедура ПриОткрытии()

ок = ПодключитьВнешнююКомпоненту("AddIn.LanguageCSharp");

Если ок = 0 тогда

Сообщить("Неудалось загрузить внешнюю компоненту");

КонецЕсли;

pluginsCSharp = СоздатьОбъект("AddIn.LanguageCSharp");

КонецПроцедуры
ВК1C + .NET Framework 2.0#20 16.04.10 18:09
Формат файла конфигурации (кодировка UTF-8)
<Plugins>
<Assembly>
<File>E:\Test\PluginsC#\Price.cs</File>
<References>
<Identity>System.dll</Identity>
<Identity>System.Data.dll</Identity>
<Identity>System.Drawing.dll</Identity>
<Identity>System.Web.dll</Identity>
<Identity>System.Web.Services.dll</Identity>
<Identity>System.Windows.Forms.dll</Identity>
<Identity>System.Xml.dll</Identity>
<Identity>E:\Тест\PluginsC#\TestPrice.dll</Identity>
</References>
</Assembly>
<Assembly>
Код
using System; using PluginsCSharp; /* //Класс для доступа к контексту 1С public class Context1C { public object Функция(string ИмяФункции,object [] ПараметрыФункции); public object Функция(string ИмяФункции); public void Процедура(string ИмяПроцедуры); public void Процедура(string ИмяПроцедуры,object [] ПараметрыПроцедуры); public object Свойство(string ИмяСвойства,object УстанавливаемоеЗначение); public void ОбработкаВнешнегоСобытия(string bstrSource, string bstrMessage, string bstrData); public void УстановкаРазмераБуфераОчередиСообщений(int размер); public int ПолучитьРазмерБуфераОчередиСообщений(); public void ОчиститьБуферОчередиСообщений(); public void УстановитьСтрокуСостояния(string ТекстСтрокиСостояния); public void СброситьСтрокуСостояния(); } */ //ВАЖНО!!! //Имена Методов и Свойств не должны повторяться в рамках коллекции всех загружаемых сборок namespace MyPlugin //Имя окружения может быть любым { //Все методы и свойства класса должны быть public, для доступа из 1С public class LanguageExtender //Имя класса любое { //Необходимо объявить поле типа контекст 1С в публичном доступе (public ОБЯЗАТЕЛЕН, без него не будет работать) public Context1C context = null; //Класс для доступа к контексту 1С (объявлен в PluginsCSharp) //Конструктор класса обязан инициализировать контекст 1С public LanguageExtender() { context = new Context1C(); } //..... Далее следует ваш произвольный код public string MyFunction() { return "Hello World!!!"; } public string MyProperty { get { return "Hello World!!!"; } } public string КаталогБазыДанных { get { if(context!=null) return context.Function("КаталогИБ",null).ToString(); return null; } } public string КаталогПрограммы { get { if(context!=null) return context.Функция("КаталогПрограммы").ToString(); return null; } } } }

<References>
<Identity>c:\Program Files\1Cv77_25\Bin\PluginsCSharp.exe</Identity>
</References>
</Plugins>

Прикрепленные файлы:

PluginsC#.xml
ВК1C + .NET Framework 2.0#19 16.04.10 17:52
>>+17 и еще, желательно примерчик хоть какой нить кинуть, хоть в стиле "хеллоу-ворд"
Процедура ПриОткрытии()


ок=ПодключитьВнешнююКомпоненту("AddIn.LanguageCSharp");
Если ок=0 Тогда
Сообщить("Не удалось подключить компоненту ");
КонецЕсли;

CSharp =СоздатьОбъект("AddIn.LanguageCSharp");

CSharp.ДобавитьСборкуВФайлКонфигурации(КаталогИБ()+"myconfig.xml",КаталогИБ()+"PluginsC#\mytestclass.dll");
CSharp.ЗагрузитьСборкиИзФайла(КаталогИБ()+"myconfig.xml");
Сообщить(CSharp.Справка()); //Получим информацию по загруженным сборкам
//CSharp.Test("Проверка"); //Проверка метода сборки



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

>>закладка не появляется, фреймворк стоит... ошибок при создании объекта нет.
>>конфа девственно чистая, без единого объекта
Закладка появится после, CSharp =СоздатьОбъект("AddIn.LanguageCSharp");
Закладка может гнать (в чем причина так и не нашел, стандартная реализация IPageблабла), поэтому файл конфигурации лучше править в блокноте.
ВК1C + .NET Framework 2.0#16 16.04.10 16:41
Не работает редактирование коменнтов