1С# - Расширяем код 1С кодом на C#

21.04.23

Разработка - Языки и среды

Вставки кода на C# внутри кода на 1С.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
AddIn_CSharp
.epf 17,48Kb ver:2.0
4
4 Скачать (7 SM) Купить за 3 650 руб.

Здрасьте!

Наверняка многие видели, что внутри исходников на языке C могут быть ассемблерные вставки:

 

 

Или на языке Pascal могут быть ассемблерные вставки:

 

 

Некоторые даже могут использовать asm в C#.

Подобное можно увидеть в различных ЯВУ.

Даже в 1С при работе с данными в СУБД очень часто используют вставки кода на языке запросов (отличном от основного языка по синтаксису и возможностям).

 

Пойдём дальше, копнём глубже и ... в 1С можно использовать вставки кода на языке C# (с применением внешней компоненты):

 

 

Пока это только концепт, но уже рабочий. С версии 2.0 это уже полноценное решение. Можно с помощью таких микроподпрограмм сильно расширить возможности работы в 1С. Например, ускорять тяжелые участки кода (т.к. 1с в алгоритмических задачах сильно проигрывает взрослым Языкам Высокого Уровня) или использовать алгоритмы, которые на 1с не написать за обозримое время.

 

Пока есть жесткие ограничения:

- во первых, компонента работает только через COM и только под Windows;

- во вторых, во встроенном коде на шарпе обязательно нужно использовать жёстко зашитые наименования для используемого пространства имён, имени класса и имени метода;

- в третьих, пока что не реализована передача значений между компонентой и кодом 1с;

- в четвертых, при написании чего-то большого придётся прибегать к различным ухищрениям, что даже простой вывод примитивного окна сообщений в Windows будет не так просто сделать.

// код для версии 1.0

ТекстПрограммыНаСиШарп = "
|using System;
|using System.Reflection;
|
|namespace CSCodeEvaler
|{
|  public class CSCodeEvaler
|  {
|    public void EvalCode()
|    {
|      Assembly a = Assembly.Load(""System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"");
|      Type classType = a.GetType(""System.Windows.Forms.MessageBox"");
|      MethodInfo mi = classType.GetMethod(""Show"", new[] { typeof(string) });
|      object[] par = new[] { ""Привет из 1С !"" };
|      mi.Invoke(null, par);
|    }
|  }
|}
|";


// код для версии 2.0

Компонента.ClearSettings();

Компонента.References = "System.dll;System.Windows.Forms.dll";
	
Компонента.Parameter0 = "Привет из 1С!";
Компонента.Parameter1 = 100;
	
ТекстПрограммыНаСиШарп = "
|using System;
|using System.Windows.Forms;
|
|namespace CSCodeEvaler
|{
|	public class CSCodeEvaler
|	{
|		public static void EvalCode(string msg, int p)
|		{
|			MessageBox.Show(msg + ""\nЭто работает на "" + p + ""%"");
|		}
|	}
|}
|";

Компонента.Run(ТекстПрограммыНаСиШарп);

Этот код нарисует окно:

 

 

Пока что это больше подходит для "поиграться" С версии 2.0 это подходит уже для полноценного применения, но если сообществу будет интересна данная тема, буду продолжать пилить дальше.


В приложенной обработке вы можете сами попробовать выполнить приведённый выше код. Также там есть примеры для использования в разных кейсах.

Протестировано на платформе 8.3.21.1644, но будет работать на любых платформах 8.2 и 8.3 .

 

 

Большое обновление! Версия 2.0 (от 21.04.2023)

- Реализована возможность передавать параметры в скрипт и получать результат из него (пока что поддерживаются только примитивные типы);

- Добавлена опция для передачи в скрипт ссылок (References) на библиотеки, в связи с чем отпадает необходимость использования отражения (Reflection) в коде, тем самым код становится короче и проще для понимания;

- Появилась возможность писать короткие односложные скрипты без пространства имён, наименования класса и метода (код будет исполняться в жёстко заданных namespace CSCodeEvaler -> class CSCodeEvaler -> void EvalCode());

- Можно использовать статические классы;

- Добавлен подсчет времени компиляции и выполнения скрипта.

 

 
 Методы компоненты:
 
 Свойства компоненты:

 

Например, для запуска любой программы достаточно написать

ТекстПрограммыНаСиШарп = "
|string path = @""Folder\program.exe"";
|System.Diagnostics.Process.Start(path);
|";

Компонента.RunScript(ТекстПрограммыНаСиШарп);

А для получения файла внутри GZip архива поможет такой код

Компонента.ClearSettings();

ПутьАрхива = "G:\db.gz";

Компонента.Parameter0 = ПутьАрхива;

ТекстПрограммыНаСиШарп = "
|using System;
|using System.IO;
|using System.IO.Compression;
|
|namespace CSCodeEvaler
|{
|	public class CSCodeEvaler
|	{
|		public static byte[] EvalCode(string path)
|		{
|			FileStream fs = new FileStream(path, FileMode.OpenOrCreate);
|			byte[] gzip = new byte[(int)fs.Length];
|			fs.Read(gzip, 0, (int)fs.Length);
|			
|			byte[] bin;
|
|			using (MemoryStream sourceStream = new MemoryStream(gzip))
|			using (MemoryStream targetStream = new MemoryStream())
|			using (GZipStream decompressionStream = new GZipStream(sourceStream, CompressionMode.Decompress))
|			{
|				decompressionStream.CopyTo(targetStream);
|				bin = targetStream.ToArray();
|			}
|			
|			return bin;
|		}
|	}
|}
|";

Компонента.Run(ТекстПрограммыНаСиШарп);

ИзвлеченныйФайл = Компонента.Result;

 

Для регистрации компоненты выполните

regasm OneSharp.dll /tlb /codebase

* нужны админские права. RegAsm.exe найдёте в C:\Windows\Microsoft.NET\Framework\v4.0.30319\

Разработано в MS Visual Studio Community 2019 под .NET Framework 4.8.1

 

Это моя 20-я юбилейная публикация. Не забывайте заходить в мой профиль, там вы найдёте ещё более интересные и практичные разработки, связанные с около 1с.

Зacим oтклaнивaюcь!

С# Си Шарп внешние компоненты COM AddIn

См. также

SALE! 15%

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    159389    872    399    

861

SALE! 15%

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 7140 руб.

20.08.2024    7764    55    22    

66

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    23430    68    45    

117

SALE! 15%

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8500 руб.

10.11.2023    10412    36    20    

61

SALE! 15%

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 19980 руб.

06.10.2023    15395    35    7    

70

SALE! 35%

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

4800 3120 руб.

14.01.2013    187971    1138    0    

912

SALE! 15%

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 12750 руб.

07.10.2021    17301    6    32    

42

Инструментарий разработчика Программист Платные (руб)

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

1800 руб.

21.02.2023    7694    8    35    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. tormozit 7229 07.04.23 10:58 Сейчас в теме
не реализована передача значений между компонентой и кодом 1с

Без этого область применения кажется очень узкой. Проще скомпилировать код в исполняемый файл и программно запустить его.
sewell; Lacoste4life; zebr; awk; olexi2012; user1243757; G_116449793522595596167; GreenDragon; cleaner_it; Darklight; +10 Ответить
2. SerVer1C 815 07.04.23 11:10 Сейчас в теме
(1) Можно. Но не везде разрешат компилировать exe'шники и запускать их в проде.
Данное решение стремится к "идеальной" внешней компоненте, т. е. вам не нужно будет создавать отдельную внешнюю компоненту для реализации каждого отдельного функционала, а достаточно прописать текстом в коде рабочий скрипт на шарпе, который будет скармливаться этой компоненте.
6. Darklight 33 07.04.23 14:13 Сейчас в теме
(2)Так не везде и разрешат подключать к 1С всякие левые компоненты, которые ещё и могут исполнять произвольный код в обход профилей безопасности!

Я так полагаю, что суть реализации - это подключение .NET Scripting на баз Roslyn. Насколько я понимаю - там вся фишка изначально затевалась на том, что скрипт можно предварительно анализировать - на предмет дозволенных инструкций (есть готовые обучающие материалы и вроде бы даже анализаторы для проектов на C# на эту тему) - без возможности установки ограничений на исполнение - такое решение становится очень небезопасным и вряд ли будет востребовано! Уж куда безопаснее скомпилировать нужный код во внешнюю компоненту и подключить фиксировано к конфигурации - на эту тему материалов на Инфорстарте предостаточно!
Тем более без доступа к контекст у 1C - а с этим то вся загвоздка.
Если задействован .NET Scripting - то там контекст подключается обычно через специальную структуру данных - через которую передаются внешние данные (и через неё же возвращаются - это один из самых простых вариантов из доступных). Контекст фиксирован. Могли бы - так же передавать внутрь хотя бы фиксированные передаваемые объекты 1С - через сериализацию - но им тогда нужна поддержка внутри компоненты - во что десериализовываться - а эта проблема ого-го какая масштабная! Но хотя бы поддержку основным типов данных от примитивов до коллекций, а так же хотя бы обобщённо ссылок, картинок и некоторых других особо важных и не шибок сложно-организованных универсальных типов - надо было бы сделать! Доступ же к СУБД, конечно удобнее делать через COM подключение, а в клиентском коде - возможно и обратное OLE подключение - и реализацию какой-то высокоуровневой надстройки-абстракции, доступной внутри скрипта.
Без этого - прям вообще всё очень кисло выходит!
Lacoste4life; awk; sandr13; loocka_; RustIG; +5 Ответить
43. SerVer1C 815 21.04.23 02:03 Сейчас в теме
(6)
прям вообще всё очень кисло выходит!

Подсластил в версии 2.0
10. RustIG 1747 07.04.23 16:18 Сейчас в теме
(2)через файлы можно обмениваться
34. Darklight 33 12.04.23 10:33 Сейчас в теме
(10)Вы из какого века?
Не, ну, да - конечно если объёмы передаваемых данных очень велики.... хотя и в этом случае просто файлы на диске - это не очень быстро - если это только не RAM-диск
А так - по сути что файлы, что строки аргументов - не велика разница - и то и то - просто массив символов! И там и там нужна сериализация/десериализация - а именно тут главная загвоздка на стороне ВК.
5. SeiOkami 3515 07.04.23 13:24 Сейчас в теме
(1) В принципе, можно в темп дирректорию кидать файлик с сериализованным значением (XML, JSON) и имя файла подставлять в скрипт.
Но вообще я это не писал, ибо жуткий костыль
42. SerVer1C 815 21.04.23 02:01 Сейчас в теме
(1)
Без этого область применения кажется очень узкой

Передача значений между компонентой и кодом 1с реализована в версии 2.0
3. Obertone 77 07.04.23 13:05 Сейчас в теме
Данная тема конечно интересна. Тем более, что известно про запуск из 1С кода C#, который был в скрипте PowerShell.

Один пример этого приведён здесь: https://infostart.ru/public/1523127/
sandr13; cleaner_it; +2 Ответить
4. RustIG 1747 07.04.23 13:12 Сейчас в теме
(0) а можете набор готовых полезняшек (плагинов) предоставить?
в таком формате: берем такой код - получаем вот это...
9. SerVer1C 815 07.04.23 15:18 Сейчас в теме
(4) я даже растерялся, что тут можно предложить. Для этого лучше зайти на Гитхаб и черпать информацию там. C# достаточно мощный язык (только драйвера и ОСи не написать), не вижу практического смысла тут приводить какие-то полезняшки, если каждый может сам взять под свои требования нужный кусок кода.
11. RustIG 1747 07.04.23 16:20 Сейчас в теме
(9)ясно, понял, согласен
52. Brawler 458 04.03.24 19:59 Сейчас в теме
(9) Были проекты операционных систем написанные на неких вариациях C# которые могли работать напрямую с железом и обрабатывать исключения процессора и не только, так что не нужно так быстро заявлять что C# слаб)) Он мощен и красив, только сейчас более узка специфика применения, но то ли еще будет!

Cosmos (операционная система)
Материалы в инете есть, можно пошукать.
Есть примочки для Visual Studuio позволяющие типа начать писать сразу под эту ОС.
53. SerVer1C 815 05.03.24 08:29 Сейчас в теме
(52)
так что не нужно так быстро заявлять что C# слаб))

Может сначала перечитаете коммент??

Под C# я имел ввиду классическую реализацию под платформу .NET, где используется виртуальная машина. Не представляю, как тут можно реализовать ОС.

А если внимательно читать, то на главной странице проекта Cosmos ясно написано: "Cosmos is not an operating system in the traditional sense"
54. Brawler 458 05.03.24 08:53 Сейчас в теме
(53) То исследовательский проект, который показал некие результаты, сделаны некие выводы. Может в будущем мы увидем полноценные ОС написанные на С# и весь софт тоже. А пока явно тягость обратной совместимости с кучей ПО давит на производителей типа Майкрософт
55. SerVer1C 815 05.03.24 09:00 Сейчас в теме
(54) Виртуальной машиной в .NET должна управлять операционная система. Так что на C# никогда не напишут полноценную ОС.
56. Brawler 458 05.03.24 09:27 Сейчас в теме
(55) А что мешает виртуальной машине и быть операционной системой написанной на самом же С#? Ведь и сейчас С# написан на С#. Вся суть даже не в С#, а в том что это именно .NET операционная система, безопасность все дела...
7. Darklight 33 07.04.23 14:26 Сейчас в теме
1С при работе с данными в СУБД очень часто используют вставки кода на языке запросов (отличном от основного языка по синтаксису и возможностям).

Это совсем не вставка кода - увы - это просто текстовый скрипт в строке! И в C# работа с запросами примерно такая же - тоже через строки.
Вставка кода запросов в C# - это расширение LINQ - синтакс запроса
Ниже пример из справки Микрософт
Смотри //Query syntax
class QueryVMethodSyntax
{
    static void Main()
    {
        int[] numbers = { 5, 10, 8, 3, 6, 12};

        //Query syntax:
        IEnumerable<int> numQuery1 =
            fr om num in numbers
            wh ere num % 2 == 0
            orderby num
            sel ect num;

        //Method syntax:
        IEnumerable<int> numQuery2 = numbers.Wh ere(num => num % 2 == 0).OrderBy(n => n);

        foreach (int i in numQuery1)
        {
            Console.Write(i + " ");
        }
        Console.WriteLine(System.Environment.NewLine);
        foreach (int i in numQuery2)
        {
            Console.Write(i + " ");
        }

        // Keep the console open in debug mode.
        Console.WriteLine(System.Environment.NewLine);
        Console.WriteLine("Press any key to exit");
        Console.ReadKey();
    }
}
Показать

В коде выше искажены слова From, Select и Where - стоит пробел - это движок Инфостарта их ставит - ничего не могу поделать

Ну и с СУБД там аналогично идёт работа через Enity Framework

Правда такой синтаксис запросов не стал популярным среди разработчиков ,NET - те предпочли синтаксис вложенных (точечных) методов Fluent interface на методах расширений LINQ
Смотри в примере выше //Method syntax
Причина проста - лаконичнее (особенно в простых выборках) и мощнее - за счёт глубокого использования анонимных лямбда-выражений и возможности подключать готовые функции)
8. SerVer1C 815 07.04.23 15:13 Сейчас в теме
(7)
Это совсем не вставка кода - увы - это просто текстовый скрипт в строке!
Позволю с вами не согласиться. Это всё же есть исходный код, только на другом языке программирования. Хоть он здесь и сейчас заключен в строковую константу, но в другой среде он будет успешно транслироваться/компилироваться и выполняться. К чему придираться к словам? Ваши умения философствовать в комментариях лучше направить на написание новых интересных публикаций.
35. Darklight 33 12.04.23 10:44 Сейчас в теме
(8)Я не придираюсь - просто Вы же сами в статье приводите примеры реальной ставки в код (которую поддерживает тот или иной ЯП изначально) - но далее же приводите уже не вставку кода - а просто передачу строки с некиимии инструкциями некоему исполнителю - технически это другое!
У вставки в код есть неоспоримые преимущества - как минимум:
1. Цветовая подстветка синтаксиса
2. Контроль синтаксиса на этапе "компиляции" или операции контроля синтаксиса, и вообще на этапе прямого ввода
3. Быстрый ввод а-ля "интелисенс"
4. Гибкая интеграция с остальным кодом (хотя бы с переменными, хотя порой и с функциями), или какая-либо ещё привязка к контексту
5. Поддержка рефакторинга (в т.ч. общего - да хоть то же переименование переменных)

Замечу, что некоторые фишки такие инструменты как Снегопат поддерживают и для текстовых строк языка запросов 1С - но очень ограничено

Есть и недостаток: очень большая сложность (тут зависит от базового ЯП) динамической генерации вставленного кода в рантайм! Но я так скажу - скорее всего такая потребность - это результат плохого дизайна или слабости сборщика-препроцессора (IDE) - в 98% такая генерация должна быть статической (выполняться на стадии компиляции/сборки) - вот такое решение и хотелось бы иметь... но это я так - просто лирика!
BillySwat; +1 Ответить
27. GreenDragon 10.04.23 02:38 Сейчас в теме
(7) инфостарт юзает фильтрацию ввода, судя по всему. Защита от всяких sql инъекций, походу. Вот же затейники )))
12. TSSV 1151 07.04.23 16:34 Сейчас в теме
Мне тоже нравится C#. Может быть, пока Вы далеко не продвинулись, начать писать open source платформу на C#, чего уж мелочиться? Думаю к этой затее многие с удовольствием бы подключились. В целом по поводу C# - сейчас в России нет легальной возможности хостить свои веб-проекты на Windows - серверах, так как Microsoft ушла из России. Можно конечно под Linux выпускать и VS это умеет, но для тех кто как я привык к Windows - это проблема. Так что перспективы C# сейчас как бы туманны. #1 open source C#
32. zebr 32 11.04.23 10:33 Сейчас в теме
(12)
свои веб-проекты на Windows - серверах, так как Microsoft

сейчас в России нет легальной возможности хостить свои веб-проекты на Windows - серверах, так как Microsoft ушла из России


есть импортозамещение через Турцию, например

А простые проекты на C# без использования Windows-специфики (такой как GDI) - прекрасно работают под Linux, в контейнерах, например
33. TSSV 1151 11.04.23 14:14 Сейчас в теме
(32) Я все это знаю, тоже изучал вопрос, по Windows хостингу есть левые варианты и в России. Речь идет о перспективах технологии, если это все надолго, то возможно нужно искать что-то другое, чтобы без таких извращений обойтись - привыкли уже что все чинно и благородно :)
36. Darklight 33 12.04.23 10:46 Сейчас в теме
(12)Вот я давно хочу! Очень давно хочу! Может и напишу!
Но - одним опенсорсом тут не выедешь. Уже пробовали "2S" - делать - всё загнулось - без бабла такой проект не потянуть!

По поводу C# и Linux - никаких проблем там нет - актуальный .NET 7 (со времён .NET Core) прекрасно работает и на Linux и на macOS и на мобилках! Даже ASP.NET Core есть - который на Linux поднять можно.
И кроссплатформенное GUI есть - правда пока в большей степени только стороннее (типа Avalonia UI, Uno Platform). Там и под WEB можно проект скомпилировать (в UNO Platform; а в фреймворке Alanonia UI это пока только разработке)
NicolasCage; TSSV; +2 Ответить
41. TSSV 1151 12.04.23 14:41 Сейчас в теме
(36)
напишу!

Кажется, что времена Напишу прошли. Наступили времена "Напишем". Например, современная наука движется уже не гениями - одиночками, а международными научными сообществами, то есть ученые уже научились так работать. Вероятность того, что один специалист будет обладать всеми необходимыми для создания минимально жизнеспособного продукта компетенциями, мала, а требования к уровню продуктов растут. Плюс, даже если такой продукт кем-то создан, то возникает задача его продвижения. А в случае широкого сообщества участников, а это могут быть тысячи специалистов, одновременно решается задача продвижения - все у себя захотят такой продукт при случае внедрить, хотя бы в исследовательских целях. Потенциал факультативной деятельности огромен - практически каждый постоянно тихо пилит что-то гениальное. Как таким сообществам возникнуть, организоваться и далее эффективно функционировать - ВОПРОС.
13. siamagic 07.04.23 20:19 Сейчас в теме
Где самое главное - польза, замеры на участках кода которые ощутимо оправдывают очередное изуверство.
14. SerVer1C 815 07.04.23 21:11 Сейчас в теме
(13) Предоставляйте ваши алгоритмы на 1с и шарпе, будем вместе с вами их мерить.
19. dhurricane 08.04.23 16:56 Сейчас в теме
(14) Так о том и речь: как часто встречается задача, реализованная без запроса к БД, исключительно на встроенном языке 1С, и при этом критичная ко времени выполнения? Не могу вспомнить из своей практики ни одной из них. То ли были когда-то настолько давно, что забыл о них, то ли ни разу не приходилось решать подобные задачи.

Потому-то вопрос и адресован к Вам: Вы своей разработкой решали какую-то конкретную прикладную задачу, или Вам важен был сам процесс разработки, и цели нет?
cleaner_it; +1 Ответить
30. alexey-simf 17 11.04.23 00:24 Сейчас в теме
(19)
Кластеризация результата запроса?
31. dhurricane 11.04.23 00:53 Сейчас в теме
(30) Да, возможно. Правда кажется, что код получится через чур объемный, чтобы его хранить вот так в строке. Ну и в конце концов есть АнализДанных.
50. SerVer1C 815 21.04.23 11:42 Сейчас в теме
(31) Можно сложные алгоритмы запихать в управляемую сборку (DLL) и вызывать конечный метод для обработки в пару строк кода.
44. SerVer1C 815 21.04.23 02:08 Сейчас в теме
(19) Изначально идея была в том, что я сам себя взял на "слабО", смогу ли я реализовать механизм выполнения C# кода прямо из строковой константы, как, например, можно выполнить vbscript код. А сейчас я вижу будущее этой компоненты как универсальную внешнюю компоненту - не нужно под каждую задачу писать, компилировать, регистрировать и т.п., а достаточно только написать/изменить код.
15. alex_sayan 51 08.04.23 09:36 Сейчас в теме
Это какое-то возвращение в средние века. Встпвленный код на шарпе становится тупым текстом: без подсветки синтаксиса, контекстной подсказки, проверок синтаксиса и прочей современной атрибутики прогоаммирования
16. SerVer1C 815 08.04.23 11:05 Сейчас в теме
(15) А вот для подсветки синтаксиса и контекстной подсказки интегрируют в 1С MS Monaco.
17. alexey_kurdyukov 165 08.04.23 11:08 Сейчас в теме
Традиционный метод писать скрипты на JS/VBS и запускать через WSH уже немодный?
45. SerVer1C 815 21.04.23 02:10 Сейчас в теме
49. alexey_kurdyukov 165 21.04.23 03:12 Сейчас в теме
18. PerlAmutor 155 08.04.23 15:27 Сейчас в теме
Когда уже в платформу встроят поддержку компонент на базе WebAssembly.
Darklight; sandr13; +2 Ответить
20. Green2 29 08.04.23 18:23 Сейчас в теме
Если бы я расширял 1С, то наверно написал бы отдельный сервис с применением вебсервисов, а потом этот вебсервис вызывал бы из 1С.
Например, на Node.JS Получится кросплатформенно, работает и на Windows и на Linux.
NicolasCage; sandr13; papami; +3 Ответить
23. papami 56 09.04.23 08:29 Сейчас в теме
(20) тот же .NET Core тоже кросплатформенно и тоже C#
21. brunet 40 08.04.23 21:20 Сейчас в теме
Только одна проблема. Почти все программисты 1с не знают С#
NeLenin; mrChOP93; sandr13; +3 Ответить
22. Green2 29 08.04.23 23:11 Сейчас в теме
(21) Максимальной скорости на ассемблере можно достигнуть.. Разве что на ассемблере тяжело алгоритмы писать.
Я сочинял программы и на ассемблере и на C# и считаю, что встроенный язык платформы считает что надо и не зачем что то городить.
46. SerVer1C 815 21.04.23 02:11 Сейчас в теме
(22) Ну попробуйте, например, склеить PDF файлы или вытащить из PDF текст с помощью только одной 1с
NicolasCage; +1 Ответить
48. alexey_kurdyukov 165 21.04.23 03:11 Сейчас в теме
(46) пользуюсь для такого утилитами командной строки, а не костылями
24. =Kollega= 5 09.04.23 14:32 Сейчас в теме
Вот главный вопрос, что за алгоритм такой супер-пупер сложный, что на C# он прям таки взлетит, а на 1с будет долго работать и его никак не изменить или упростить. Учитывая, что входные параметры надо как-то подготовить, а результат получить обратно.
47. SerVer1C 815 21.04.23 02:15 Сейчас в теме
(24) Например, компьютерное зрение
25. sandr13 35 10.04.23 00:26 Сейчас в теме
Не C# надо, а С++! И компилировать и потом вызвать где надо из 1С экзешник!
51. NeLenin 14 11.05.23 15:35 Сейчас в теме
(25) лучше не экзешник, а dll. Можно выбрать любой язык, который это позволяет. Даже Паскаль. А там - те самые вставки на ассемблере ))
26. sandr13 35 10.04.23 00:26 Сейчас в теме
А может сразу писать всё на С++?
28. SGordon1 10.04.23 09:22 Сейчас в теме
А почему именно C#, может жабаскрипт интереснее выйдет?
37. Darklight 33 12.04.23 10:55 Сейчас в теме
(28)На JS Вы и так можете - создаёте HTML поле - и запускаете там свой скрипт (загружаете HTML с нужным скриптом) - статьи были - ах да - только на клиенте
Вне браузерного окна это уже Node.js - но к нему наверное тоже ВК-оболочку прикрутить можно
29. mixperm 68 10.04.23 14:31 Сейчас в теме
Бесполезно! Если что-то на Си хочешь написать, то прикрути туда http сервис и делай из 1С запрос к нему, это будет явно быстрей чем поднятие ком
38. Darklight 33 12.04.23 11:05 Сейчас в теме
(29)Тут есть свои нюансы.
COM - лишь долго подымается (это разово), и может не очень шустро работает - но хранит текущий контекст и кешируется. Не кроссплатформенно!
HTTP-сервис - не хранит контекст (для его хранение уже не хило так надо за морочиться) и требует HTTP-сервером, и настройку публикации; скорость вызова сильно зависит от скорости работы с HTTP-сервером, и скорости восстановления контекста(если он нужен). Кроссплатформенно!
Но бесспорно - сейчас чаще всего интеграция софта организуется через HTTP-сервисы!
Но это если говорить о софте. Если опуститься до уровня библиотек - то лучше нативная интеграция. Вот только у 1С эти нативные ВК - этот ещё тот геморой и куча ограничений (низкоуровневый ЯП С++ тут всё очень усложняет)!
COM-компоненты это вообще жесть - но порой в 1С без них сложно обойтись!
39. mozz 148 12.04.23 11:40 Сейчас в теме
в 2011 что-то подобное делал https://infostart.ru/public/84246/

у меня компонента может возвращать в 1С результат обработки полученного из 1С значения. Так что можете у меня подсмотреть, код открытый.
40. mozz 148 12.04.23 12:05 Сейчас в теме
А, не, посмотрел у меня просто com activeX, с вызовом из 1С и с возвратом в 1С результата.
57. NicolasCage 14.06.24 10:47 Сейчас в теме
(2) SerVer1C, спасибо вам за проделанную работу. Прочитав вашу статья я буд то глотнул свежего воздуха) Хотел узнать: есть продолжение статьи?
58. SerVer1C 815 14.06.24 10:56 Сейчас в теме
(57) Спасибо! В планах есть идея написать статью про конвертацию голоса в текст с помощью данной компоненты.
Оставьте свое сообщение