Pull to refresh

Comments 48

А что делать тем у кого 1С на импортозамещенном линуксе работает?

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

отлично, я понимаю что можно и вручную проверять с орфографическим словарем

Я вообще клоню к тому что COM интерфейс в винде можно считать устаревшим, а в рамках существования Windows/Linux клиентов у 1С - особенно, его использование вообще должно быть только в самом крайнем случае

собственно это посыл автору статьи

да я не против, делайте вэб сервис, COM обертка в этом случае не главное, а вот проверять опечатки Вордом конечно круче

да, не судьба однако

да, согласен протупил в данном вопросе

но всёравно есть вариации

вебверсия 1С запущенная в Windows машине будет работать

А почему у вас dll не в макете зашита? Зачем эти пляски с регистрацией dll в ОС?

Патамушта она СОМ, а не НАТИВ, наверное, но это не точно.

помоему, 1С умеет импортировать COM объекты прямо из указанной библиотеки, я тоже не понял зачем ему глобальная доступность

а что значит в макете зашита? это куда?

Ну берете dll сохраняете в макет. Вызываете из макета как com объект и используете его функции. В итоге все хранится в конфигурации в базе данных.

эта ссылка на текст от 2006 года

Очень большая вероятность что он актуален до сих пор

Иронично, что в самой статье полно грамматических и пунктуационных ошибок

Ой прастите, извените, вы новерно даже не смогли дочетать до конца от отвращения)

дочетать мы смогли (гыыыыыы), и зометили, што у вас на последнем камшоте вместо зилёной галочки трёхугольный знак опасносте.

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

Ну ладно, обс@р принят, согласен. Но Вы хоть пример с ошибкой приведите пожалуйста, я исправлю. Даже специально проверил, вроде ничего редактор красным не подчеркивает.

Для начала вы уже сами исправили некоторые ошибки, например, в предложении «Решил копнуть глубже» (было «капнуть»). Собственно, эта ошибка в первом абзаце и бросилась в глаза, раскрывая иронию темы. Но вы сами уже исправили её, отчего замечание «я проверил, ошибок не нашёл» выглядит несколько неспортивно.

Если так угодно, вот пунктуационные ошибки в первых же абзацах. Так и быть, к повсеместному употреблению слова «функционал» я уже не придирался :)

Дальше тоже есть ошибки, в том числе, например, в выражении «это на много медленнее» слово «намного» пишется слитно. Также часто встречаются двойные пробелы, которые создают впечатление неряшливости.

Кстати говоря, эти ошибки порождали слова, имеющие в словаре, поэтому простая проверка по словарю не могла их найти.

Я не думаю, что стоит дальше продолжать, у меня не стояло задачи «до*ться до орфографии», просто рекомендую в дальнейшем готовить статьи немного тщательнее.

хорошо, спасибо

Тогда уж "Всем привет! Недавно...."

Этот код не работает, не публикует, как предполагается, событие OnComplete, 1С его не видит. И соответственно, если в 1С написать:

srv = Новый COMОбъект(“SpellChecker.ComService”);
ДобавитьОбработчик srv.OnComplete, Пикака;

в строке где ДобавитьОбработчик пытается найти событие srv.OnComplete, возникает ошибка.

Ну, как говорится, отрицательный результат тоже результат.

Пока друзья, надеюсь на жесткий обс@р.

парниша, события мало объявить в классе, их надо реализовать, где у тебя реализация? на сишарпе это делается через делегат, типа кусок кода который будет исполняться в другом потоке и может даже другом процессе. Где, мазафака, твоя реализация? ее нет, и при попытке подключить инвок - после этой строки там будет null, и ексепшен при вызове. А также инвок вызывается с фактическими параметрами. Статью зато написал, молодес.

Брателло), ты маленько про COM почитай сначала, а то обс@р не в тему получается)

да, кстати, я не пользуюсь делегатами для объявления события в шарпе последних версий, делаю это одной строкой public event Action<string> OnComplete

это объявление, а где реализация?

извините реализация чего? события? событие реализуется на клиенте

но если вы имеете в виду реализацию метода интерфейса, то в COM для событий применяется такая хитрость - в интерфейсе просто объявляем метод, а в классе тоже объявляем одноименное событие, ну и добавляем атрибут классу[ComSourceInterfaces(typeof(ISpellCheckerEvents))]

как бы ссылку на интерфейс, не наследуя, а просто указывая на связь

Но к сожалению, похоже сейчас в новом .Net 8 это уже не работает

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

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

Если же это про проверку написания команд - тогда прошу извинить. Это та сфера, в которой я ничего не умею.

Кстати! Обратите внимание на текст самой статьи. Вам не зря критические отзывы прилетели. Капать и копать имеют разный смысл. Как и слова простота и простата.

спасибо!)) сорри, да)) по делу, с капать я оплошал), исправлю сейчас.

и, кстати да, этот текст не про ошибки в коде, это пожалуй не мой уровень

В превью статьи ещё осталось "капнуть".

Почему com, а не native api?

Потому что 1Сник так научился, а когда им про 2024 год на дворе говоришь, обижаются и говорят "ну делайте сами".

Да я сам 1сник, хоть и бывший. Но тем не менее не понимаю, как в 2024 на серьёзных щах можно ком-компоненту делать вместо native api

Вообще то, понимаете, просто обидно, что все придираются к этому COM), а на самом то деле суть этой статьи не в нем. То, что меня удивило, и чем я захотел поделиться почти совсем не связано ни с 1С, ни с COM. Проверка орфографии зашита в саму Винду, и это можно пользовать в своем проекте, вот цимус. Конечно я поторопился и наделал ошибок в тексте, но думаю все же найдутся люди, кому пригодится вот эта штука https://github.com/amizerov/SpellChecker, а класс ComService из этого проекта можно выкинуть, сделать вэб сервис или подключить в 1С через native api (надо посмотреть что это).

Придираются потому что у вас пол статьи про com-реализацию.

native api (надо посмотреть что это).

Знаете, это очень многое объясняет.

а на C# можно написать ВК на NativeAPI? похоже 1С предлагает писать на C++

Видел бриджи в шарп на инфостарте. В джаву вроде тоже было, но публичного враппера не нашёл. Даже на делфи был враппер :)

Прогуглил как мог, на сегодняшний день, все что вижу рабочее с Native API, все на C++.

но думаю все же найдутся люди, кому пригодится вот эта штука https://github.com/amizerov/SpellChecker

Мне кажется, что этот репозиторий приватный

да, сорри, открыл

Потому что, как и написал в 1-ом абзаце, "мне понравилось решение на базе спелчекера, встроенного в Windows ", захотелось показать встроенную возможность Винды проверять опечатки, именно Винды, и только Винды. Поэтому использовал COM, для Винды он проще, а NativeAPI, больше для кросплатформенных решений, и на мой взгляд NativeAPI - очень сложно, совсем не для статейки такого уровня).

Цитата с сайта its.1c.ru Технология создания внешних компонент, раздел Создание компонент c использованием технологии Native API - "Каждый объект компоненты должен наследоваться от абстрактного класса IComponentBase (файл ComponentBase.h входит в комплект поставки) и реализовать все его методы. " Как я понимаю, это значит Native API компонент пишется на C++, на C# похоже никак, хотя, может использовать неуправляемый код можно?

Там же написано, что и COM вполне уместен для ВК.

Особенности разработки компонент с использованием COM

Компоненты, разработанные с использованием технологии COM, могут быть изначально не установлены на компьютере пользователя. Метод ПодключитьВнешнююКомпоненту(<МестонахожденияКомпоненты>, <ИмяМетки>, ТипВнешнейКомпоненты.COM), получает из информационной базы файл внешней компоненты, если последняя находится там, и вызывает функцию регистрации объектов компоненты DllInstall. Если регистрация "для пользователя" завершилась неудачно, то вызывается функция DllRegisterServer. Если пользователь ограничен в правах, то регистрация и подключение внешней компоненты может закончится неудачей. Разработчик должен предусмотреть возможность регистрации компоненты для пользователя, под его текущими правами. Если внешняя компонента имеет свой инсталлятор, то она должна регистрироваться для компьютера.

При регистрации компоненты вылетает ошибка

Скорее всего проблема в используемой библиотеке .net 8.0 (<TargetFramework>net8.0</TargetFramework>)
The target machine, like the development machine, had the .NET 8.0 runtime (x64) explicitly installed, but this installer does not bring the needed 32-bit binaries..

1 - командная строка должна быть запущена под админом
2 - проверьте что все файлы в папке, их там минимум 3 должно быть

и да Net8, попробуйте перекомпилировать под свою среду

Sign up to leave a comment.

Articles