В процессе ведения торгового учета часто возникает необходимость заполнения реквизитов контрагентов на нескольких языках. Например, при вводе данных на русском языке операторы интернет-магазина могут забывать или допускать ошибки при заполнении юридического наименования на украинском или английском языке, что критично для формирования корректных печатных форм первичной документации. В данной статье мы рассмотрим комплексный подход к автоматизации этого процесса, проанализируем доступные инструменты и разберем техническую реализацию через внешние API.
Прежде всего, нам необходимо определиться с методом получения данных. Существует три основных пути решения задачи:
Проанализируем наиболее гибкий вариант — интеграцию с сервисами машинного перевода.
Для реализации автоматического перевода в 1С:Управление торговлей нам потребуется написать процедуру, которая будет отправлять HTTP-запрос к выбранному сервису. Рассмотрим пример работы с API, где основным механизмом выступает объект HTTPСоединение.
Важным нюансом является доступность сервисов. Если сервер 1С находится в регионе, где доступ к ресурсам (например, Яндекса) ограничен, нам необходимо настроить соединение через прокси-сервер. Разберем программный код для выполнения такого запроса:
&НаСервере
Функция ПолучитьПереводТекста(ИсходныйТекст, ЦелевойЯзык = "uk")
// Параметры API (пример для Яндекс.Переводчика)
КлючAPI = "ВАШ_КЛЮЧ_API";
АдресРесурса = "translate.api.cloud.yandex.net";
ПутьКРесурсу = "/translate/v2/translate";
// Настройка прокси, если сервер 1С находится в заблокированной зоне
Прокси = Новый ИнтернетПрокси;
Прокси.Установить("https", "192.168.1.100", 8080, "ЛогинПрокси", "ПарольПрокси");
// Формируем тело запроса в формате JSON
ПараметрыЗапроса = Новый Структура;
ПараметрыЗапроса.Вставить("targetLanguageCode", ЦелевойЯзык);
ПараметрыЗапроса.Вставить("texts", ИсходныйТекст);
ПараметрыЗапроса.Вставить("folderId", "ID_ВАШЕГО_КАТАЛОГА");
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, ПараметрыЗапроса);
ТелоЗапроса = ЗаписьJSON.Закрыть();
// Создаем HTTP-соединение
HTTPСоединение = Новый HTTPСоединение(АдресРесурса, 443,,,,, Новый ЗащищенноеСоединениеOpenSSL(), Прокси);
// Подготовка заголовков
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "application/json");
Заголовки.Вставить("Authorization", "Bearer " + КлючAPI);
Запрос = Новый HTTPЗапрос(ПутьКРесурсу, Заголовки);
Запрос.УстановитьТелоИзСтроки(ТелоЗапроса);
Попытка
Ответ = HTTPСоединение.ОтправитьДляОбработки(Запрос);
Если Ответ.КодСостояния = 200 Тогда
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
РезультатСтруктура = ПрочитатьJSON(ЧтениеJSON);
Возврат РезультатСтруктура.translations[0].text;
Иначе
ЗаписатьЛогОшибки("Ошибка API: " + Ответ.ПолучитьТелоКакСтроку());
Возврат "";
КонецЕсли;
Исключение
ЗаписатьЛогОшибки("Ошибка связи: " + ОписаниеОшибки());
Возврат "";
КонецПопытки;
КонецФункции
В данном примере мы проанализируем структуру ответа и извлечем переведенную строку. Обратите внимание на использование ЗащищенноеСоединениеOpenSSL, так как современные API требуют работы по протоколу HTTPS.
Для юридических лиц в Украине наиболее правильным решением будет не перевод, а получение данных по коду ЕГРПОУ. Сервисы типа Opendatabot позволяют по API получить точное название организации на государственном языке. Это исключает риск некорректного перевода собственных имен компаний.
Принцип работы схож с обычным переводчиком: мы отправляем запрос, содержащий ИНН или код предприятия, и получаем в ответ структуру с официальным наименованием. Рассмотрим, почему это лучше:
При использовании классических переводчиков часто возникает проблема перевода аббревиатур (ООО, ЧП, АО). Для корректной работы в 1С мы рекомендуем создать вспомогательный Регистр сведений или просто таблицу соответствий.
Перед отправкой текста в API или сразу после получения результата, выполним программную замену:
Функция СкорректироватьОрганизационнуюФорму(ТекстНаименования)
Результат = ТекстНаименования;
// Заменяем русские сокращения на украинские аналоги
Результат = СтрЗаменить(Результат, "ООО ", "ТОВ ");
Результат = СтрЗаменить(Результат, "ЧП ", "ПП ");
Результат = СтрЗаменить(Результат, "ОАО ", "ВАТ ");
// Имена собственные
Результат = СтрЗаменить(Результат, "Владимир", "Володимир");
Результат = СтрЗаменить(Результат, "Николай", "Микола");
Возврат Результат;
КонецФункции
Такой подход позволяет совместить мощь машинного перевода с жестким соблюдением лингвистических правил конкретной страны. Выясним причину, по которой этот метод важен: API переводчика обучается на больших массивах данных и может предложить "литературный" вариант там, где требуется строгий "канцелярский" термин.
Чтобы оператору было удобно работать, процедуру перевода следует вызывать при событии ПриИзменении поля ввода основного наименования. Однако, не стоит делать перевод полностью автоматическим без возможности правки. Разберем по шагам идеальный сценарий взаимодействия:
ПриИзменении программа предлагает: "Заполнить юридическое наименование на украинском?".ПолучитьПереводТекста.Посмотрим на пример настройки в форме элемента справочника Контрагенты:
&НаКлиенте
Процедура НаименованиеПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.Наименование) И ПустаяСтрока(Объект.НаименованиеПолное) Тогда
ТекстПеревода = ПолучитьПереводНаСервере(Объект.Наименование);
Если Не ПустаяСтрока(ТекстПеревода) Тогда
Объект.НаименованиеПолное = ТекстПеревода;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Автоматизация перевода в 1С — это эффективный способ сокращения рутины и минимизации ошибок. Проанализировав ситуацию, можно сделать вывод, что для максимального качества стоит комбинировать методы: использовать официальные реестры для местных компаний и качественные API (DeepL или Яндекс) для иностранных партнеров, не забывая про предобработку организационных форм через словари замен. Это обеспечит юридическую чистоту документов и высокую скорость работы персонала.