Проверка орфографии используя бесплатный «Яндекс.Спеллер» API

19.02.26

Интеграция - WEB-интеграция

Предлагается решение по проверке орфографии в текстовых полях 1С на базе бесплатного «Яндекс.Спеллер» API. Данный метод использует контекстное меню, и не требует исправления элементов формы. Потребуется внесение кода в модуль формы (рекомендуется использовать расширение 1С).

Файлы

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

Наименование Скачано Купить файл
Проверка орфографии используя бесплатный «Яндекс.Спеллер» API
.epf 11,83Kb ver:1.0.2
6 3 400 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

   Проверка орфографии в приложениях, которые нас окружают, уже давно стало обычным делом. Но тем не менее, в 1С такая возможность не реализована для полей редактирования текста. В представленной внешней обработке я предлагаю методику, которая позволяет с помощью расширения, выполнять проверку орфографии в любом количестве текстовых полей. Для этого нужно добавить ДВА общих модуля. Один для функций, выполняемых на клиенте, второй для функций, выполняемых на сервере. В модуль формы добавляется код инициализации данных для проверки орфографии, и события обработки кнопок контекстного меню. Предложенный метод не требует изменения элементов форм, добавления кода в модуль формы вполне достаточно.

   Механизм проверки орфографии использует бесплатное API «Яндекс.Спеллер», которое позволяет выполнять в сутки 10 тысяч обращений или обрабатывать 10 миллионов символов.

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

   Код открыт. Обработка демонстрирует методику организации проверки орфографии в текстовых полях. Количество обрабатываемых полей может быть любым. Подключение еще одного поля формы на проверку орфографии, потребует вызова ДВУХ функций инициализации:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ...
    ОбщегоНазначения_Сервер.ИнициализироватьОрфографию(Элементы,Команды,"Текст3");
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ...
    СтруктрураПроверкиОрфографии.Вставить("Текст3",Новый Структура("МасОшибок,ТекстПроверялся,ПутьКДанным",Новый Массив,Объект["Текст3"],"Текст3"));
    ИЛИ
    СтруктрураПроверкиОрфографии.Вставить("Текст3",Новый Структура("МасОшибок,ТекстПроверялся,ПутьКДанным",Новый Массив,Объект["Текст3"],"Объект.Текст3"));
КонецПроцедуры

 

Проверено на следующих конфигурациях и релизах:

  • Бухгалтерия предприятия, редакция 3.0, релизы 3.0.188.17

Вступайте в нашу телеграмм-группу Инфостарт

Обработка орфография бесплатное API Спеллер

См. также

WEB-интеграция Программист Бизнес-аналитик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

17568 руб.

20.12.2024    6529    28    4    

30

WEB-интеграция Программист 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Расширение для автоматизации передачи данных между сервисом Vetmanager с 1С: Бухгалтерия 3.0. Решение позволяет загружать документы и справочники из Ветменеджер в 1С:Бухгалтерию, сокращая время на ручной ввод данных и минимизируя ошибки.

24000 руб.

02.02.2021    23294    70    52    

43

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM / LOGICSTARS. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM / LOGICSTAR разных брендов в одной информационной базе в ручном и автоматическом режиме.

42700 руб.

03.08.2020    24573    37    26    

28

WEB-интеграция Системный администратор Программист Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена по API между конфигурацией 1С:Альфа-Авто 6 и порталом LogicStar. Позволяет работать с несколькими обменами LogicStar разных брендов (CHERY, OMODA, JAECOO, EXEED, TENET) в одной информационной базе в ручном и автоматическом режиме. Поддерживается выгрузка заказ-нарядов, реализаций товаров и товарных остатков.

20740 руб.

13.05.2025    2293    2    0    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. viktorsaratov 19.02.26 10:41 Сейчас в теме
В описании текст 2 раза)
2. MissionOnly 27 19.02.26 11:42 Сейчас в теме
(1) Спасибо, поправил.
3. viktorsaratov 19.02.26 13:16 Сейчас в теме
(2) еще не очень понятно по API Яндекс.Спеллер, необходимо получать токен? или логин пароль? Привязка к почте?
4. MissionOnly 27 19.02.26 13:18 Сейчас в теме
(3) Ни чего этого не нужно. Работает без этого.
viktorsaratov; +1 Ответить
5. sorokinda 27.04.26 14:25 Сейчас в теме
Всем привет, если нужно чтобы автоматически (как Т9, все менялось), добавьте в модуль, выполняющийся на клиенте, код:

Функция ИсправлениеОшибокОфографииСтрокаБезКоманды(Элем_ты, ИмяЭл, МасОшибок) Экспорт

	Перем Рез;
	Рез = Неопределено;
	Если ТипЗнч(МасОшибок) = Тип("Массив") Тогда
		Если МасОшибок.Количество() > 0 Тогда
			
			// Получаем исходный текст элемента
			ЭлемТекст = Элем_ты.Найти(ИмяЭл).ТекстРедактирования;
			
			// Будем накапливать изменения, применяя их последовательно
			// Чтобы позиции не смещались, применяем замены с конца массива
			// Для этого отсортируем ошибки по убыванию Pos
			КопияОшибок = Новый Массив;
			Для Каждого ТекОшибка Из МасОшибок Цикл
				КопияОшибок.Добавить(ТекОшибка);
			КонецЦикла;
			
			// Сортируем по убыванию позиции (чтобы замены с конца не сдвигали предыдущие)
			Для й = 0 По КопияОшибок.Количество() - 2 Цикл
				Для к = й + 1 По КопияОшибок.Количество() - 1 Цикл
					Если Число(СокрЛП(КопияОшибок[й].Pos)) < Число(СокрЛП(КопияОшибок[к].Pos)) Тогда
						Врем = КопияОшибок[й];
						КопияОшибок[й] = КопияОшибок[к];
						КопияОшибок[к] = Врем;
					КонецЕсли;
				КонецЦикла;
			КонецЦикла;
			
			Рез = ЭлемТекст;
			
			// Применяем замены с конца к началу
			Для Каждого Стру Из КопияОшибок Цикл
				НачПоз = Число(СокрЛП(Стру.Pos)) + 1;
				Длина = Число(СокрЛП(Стру.Len));
				
				// Проверяем, что текст на этой позиции совпадает с word
				Если Сред(Рез, НачПоз, Длина) = Стру.word Тогда
					// Формируем новую строку с заменой
					Если Найти(Стру.s, ";") > 0 Тогда
						// Если есть несколько вариантов через ";", берем первый?
						// Или тут логика выбора? Пока оставим как было:
						СтрСВариантами = СтрЗаменить(Стру.s, ";", Символы.ПС);
						// Для простоты берем первый непустой вариант
						ПервыйВариант = "";
						Для йй = 1 По СтрЧислоСтрок(СтрСВариантами) Цикл
							ТекСтр = СокрЛП(СтрПолучитьСтроку(СтрСВариантами, йй));
							Если ТекСтр <> "" Тогда
								ПервыйВариант = ТекСтр;
								Прервать;
							КонецЕсли;
						КонецЦикла;
						Замена = ПервыйВариант;
					Иначе
						Замена = Стру.s;
					КонецЕсли;
					
					// Применяем замену
					Рез = Лев(Рез, НачПоз - 1) + Замена + Сред(Рез, НачПоз + Длина);
				КонецЕсли;
			КонецЦикла;
			
		КонецЕсли;
	КонецЕсли;
	
	Возврат Рез;		
	
КонецФункции
Показать
6. MissionOnly 27 27.04.26 14:52 Сейчас в теме
(5) Если у ошибки один вариант исправления, то эта логика применима. Но если несколько, тогда лучше посмотреть варианты.
Для отправки сообщения требуется регистрация/авторизация