Есть разные люди, грамотные и безграмотные. Есть безграмотные по разным причинам: от склада ума от собственной лени и т.д.
Мне вот, например, в школе на 5 давались все естественные науки, а вот по русскому, немецкому и английскому было 2. Такая же история потом была в универе, а потом и в аспирантуре. Ну и вот, имея 2 высших образования (физик и программист), я все тот же двоечник. А так как работаю на ПК, это все усугубляется в разы. Вот, собственно, в голове и возникла идея написания данного приложения.
Файлы
ВНИМАНИЕ:
Файлы из Базы знаний - это исходный код разработки.
Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы.
Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных.
Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Да, я видел в интернете компоненту, написанную на скриптах под платформу 8.1. но она достаточно специфична, мне хотелось написать что-нибудь попроще.
Данное приложение возможно запускать из командной строки с текстом, который необходимо проверить.
Пример строки из 1с 8
Процедура ПроверкаОрфографии(СтрокаД) Путьspeller = КаталогВременныхФайлов() + "YandexSpeller.V2.exe"; ФайлПроверка = Новый Файл(Путьspeller); Если НЕ ФайлПроверка.Существует() Тогда ФайлДвоичныеДанные = ПолучитьОбщийМакет("speller"); ФайлДвоичныеДанные.Записать(Путьspeller); КонецЕсли;
команда = Путьspeller + " " + СокрЛП(СтрокаД); ЗапуститьПриложение(команда,,Истина); КонецПроцедуры
&НаКлиенте Процедура ABC(Команда) Если ЗначениеЗаполнено(Объект[ЭтаФорма.ТекущийЭлемент.Имя]) Тогда ПроверкаОрфографии(СокрЛП(Строка(Объект[ЭтаФорма.ТекущийЭлемент.Имя]))); КонецЕсли; КонецПроцедуры
Изначально я хотел написать приложение, которое работает с COM, пока не хватает знаний в этой области. На данный момент пишу внешнюю компоненту.
Медиадисплей покупателя может отображать текущую покупку на кассовом месте, показывать видеорекламу, баннеры, во время простоя разворачивать рекламу на весь экран. Экран можно использовать в качестве графического меню-борда в кафе и видеовывески. В качестве устройства отображения можно использовать Android-планшеты, смарт-телевизоры с Android, мониторы или проекторы под управлением Windows или Linux-компьютера. Linux-версия успешно запускается на одноплатных компьютерах Raspberri Pi и Orange Pi. Настраивается ЛЮБОЙ ДИЗАЙН экрана при помощи встроенного графического редактора!
Решение можно масштабировать от одного экрана до тысяч экранов с централизованным управлением.
Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) .
Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит.
Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).
В современных корпоративных решениях на платформе 1С:Предприятие 8.3 всё чаще возникает потребность в визуальном моделировании и автоматизации бизнес-процессов с использованием нотации BPMN 2.0. Стандартные средства платформы не предоставляют полноценного редактора BPMN, однако интеграция открытой библиотеки bpmn-js позволяет реализовать интерактивное моделирование бизнес-процессов непосредственно в 1С.
В статье рассмотрены архитектура решения, пошаговая инструкция по сборке библиотеки из исходников для WebKit, а также примеры программного взаимодействия между 1С и JavaScript.
В статье описывается приложение-конструктор внешних компонент (native API). Конструктор упрощает процесс разработки за счет удобного добавления всех нужных функций и процедур в графическом режиме, с указанием их параметров и типов параметров. На выходе приложение генерирует готовый код на С++ и Rust и позволяет сразу приступить к реализации, без настройки API компоненты вручную.
Зачем же делать компоненту - есть же "разработчикам — встроить функцию проверки правописания в свое приложение с помощью API Яндекс.Спеллера (JavaScript или HTTP)" = = и делай спокойно через WebСервис (кстати получится неплохой пример использования Веб сервиса в 1С))))))
(1) вы наверное ошиблись - веб сервисы - это СЕРВЕР :)
А Вам нужен клиент, т.е. веб ссылки. А при работе с веб сервисом яндекса - я понял, что с 1С он нифига нормально работать не хочет.
А вот хттп запросы - это другое дело:)
Кроме того - почему я обратил внимание на это все - так как нам нужны веб ссылки, то значит, что их можно сделать программно,примеры есть в моей статье по веб сервисам. Т.е. не надо в конфигуратор лазить.
Так если рассуждать, вообще тогда делать не чего не надо, все уже есть в готовом виде и все уже придумано до нас. В массе своей процентов 80% пользователей вообще не программисты, они просто берут или готовое на этом сайте или че нить типовое юзают. Я столкнулся с тем что этим пользователям не очень просто встроить JavaScript в 1с или куда нить еще. Вот собственно для них и рассчитано данные приложения. Наверное гораздо проще будет в любой 1с запустить команду ЗапуститьПриложение(<СтрокаКоманды>, <ТекущийКаталог>, <ДождатьсяЗавершения>, <КодВозврата>) и получить какой то результат, не извращаясь с написанием скриптов и т.д.
Конечно было бы не плохо чтоб данный инструмент вернул что то в 1с, я вот с этим разбираюсь.
Да есть такое, но как это прописать "пользователю"?
1) Нужно добавить Конфигуратор=Общие=Web-Сервисы=YandexSpeller
2) Прописать запрос, обработать результат. В 1с не я вот так вот не на шел как по нормальному отработать гипертекст.
3) Совместить все это с текущим интерфейсом.
И я хочу сказать очень много народу из программистов 1с которые вообще не знают что такое Конфигуратор=Общие=Web-Сервисы и как с этим жить. Спасибо конечно за подсказку я сам не знал, попробую сейчас реализовать.
Не знаю может Вы меня не понимаете, я считаю что программисту в первую очередь нужно делать инструмент, который поможет уменьшить телодвижение другому "программисту".
Спасибо!
Но Сможете ли Вы подчеркнуть ошибку определенным цветом? Сможете ли вы вывести подсказку с выбором нужного варианта в гипертексте? Я думаю 1с нормально это не позволяет. Разве что поля делать вида hml документ и на чистом hml кодить.
Вот набросал
1. делаем новую Web-ссылку (см рис) вносим в источник
2. делаем кнопку проверки и процедуру к ней
&НаКлиенте
Процедура ПравописаниеWebСервис(Команда)
ФС = Эпикриз.ПолучитьТекст();
Если НЕ ЗначениеЗаполнено(ФС)Тогда
Возврат;
КонецЕсли;
Массив = ПравописаниеWebСервис_Сервер(ФС);
//далее делайте с массивом все что угодно
//Массив[0].ОшибочноеСлово //слово с ошибкой
//Массив[0].Ошибка // текстовое значение ошибки
//Массив[0].Замена // массив предлагаемых замен
КонецПроцедуры
3. делаем процедуру получения данных
&НаСервере
Функция ПравописаниеWebСервис_Сервер(ФС)
Массив = Новый Массив;
Прокси = WSСсылки.WSСсылкаПроверкиПравописания.СоздатьWSПрокси("http://speller.yandex.net/services/spellservice", "SpellService", "SpellServiceSoap");
ТипWSПараметра = Прокси.ФабрикаXDTO.Пакеты.Получить("http://speller.yandex.net/services/spellservice").Получить("CheckTextRequest");
WSПараметр = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра);
WSПараметр.text = ФС; //неиспользуемые параметры//WSПараметр.lang = "ru";//WSПараметр.options = 16;//WSПараметр.format = "html";
РезультатПроверки = Прокси.checkText(WSПараметр.text);
Индекс = 0;
Для каждого СтрокаОшибки Из РезультатПроверки.error Цикл
Структура = Новый Структура;
МассивОб = Новый Массив;
Если СтрокаОшибки.code = 1 Тогда //код ошибки
Структура.Вставить("Ошибка","Слова нет в словаре");
ИначеЕсли СтрокаОшибки.code = 2 Тогда
Структура.Вставить("Ошибка","Повтор слова");
ИначеЕсли СтрокаОшибки.code = 3 Тогда
Структура.Вставить("Ошибка","Неверное употребление прописных и строчных букв");
ИначеЕсли СтрокаОшибки.code = 4 Тогда
Структура.Вставить("Ошибка","Текст содержит слишком много ошибок");
КонецЕсли;
Структура.Вставить("ОшибочноеСлово",СтрокаОшибки.word);
МассивОб.Очистить();
Для каждого ВариантЗамены Из СтрокаОшибки.s Цикл //список предлагаемых замен
МассивОб.Добавить(ВариантЗамены);
КонецЦикла;
Структура.Вставить("Замена", МассивОб);
Массив.Вставить(Индекс,Структура);
Индекс = Индекс + 1;
Структура = Неопределено;
МассивОб = Неопределено;
КонецЦикла;
Возврат Массив;
//СтрокаОшибки.col = //начало слова с ошибкой от начала строки
//СтрокаОшибки.len = //длина слова
//СтрокаОшибки.pos = //?
//СтрокаОшибки.row = //индекс строки с ошибкой
КонецФункции
X
и все.....
(7) чтобы подчеркнуть ошибку - Новый ФорматированнаяСтрока(<Содержимое>, <Шрифт>, <ЦветТекста>, <ЦветФона>, <Ссылка>) ;