При работе на экспорт в конфигурации 1С:Управление торговлей 11 (УТ 11) часто возникает задача формирования печатных форм, таких как Invoice, на языке контрагента. Основная трудность заключается в том, что стандартных полей «Наименование» и «Наименование для печати» недостаточно, если компания торгует с партнерами из разных стран (например, требуются переводы на английский, испанский или немецкий языки). Рассмотрим, как правильно организовать хранение тысяч наименований и автоматизировать их подстановку в документы.
В современных версиях конфигураций, базирующихся на Библиотеке стандартных подсистем (БСП) версии 3.1 и выше (это актуальные релизы УТ 11.5, ERP 2.5 и КА 2.5), разработчики уже предусмотрели готовый механизм. Проанализируем, как его включить и использовать.
Разберем по шагам процесс активации:
Английский).После включения этой опции в справочнике Номенклатура и Характеристики номенклатуры появятся дополнительные возможности. Рядом с основным наименованием в карточке товара отобразится специальный значок (глобус) или дополнительные поля НаименованиеЯзык1, НаименованиеЯзык2. Эти поля являются общими реквизитами, что обеспечивает высокую скорость работы и возможность полнотекстового поиска по иностранным названиям.
Если ваша конфигурация находится на старой версии или сильно кастомизирована, и внедрение БСП 3.1 пока невозможно, оптимальным решением будет использование Регистра сведений. Рассмотрим структуру такого решения.
Создадим новый регистр сведений НаименованияНаИностранныхЯзыках со следующей структурой:
Объект (тип СправочникСсылка.Номенклатура, СправочникСсылка.ХарактеристикиНоменклатуры) и Язык (тип СправочникСсылка.Языки или созданное перечисление).Наименование (тип Строка, длина 1024).Преимущество этого метода перед использованием Дополнительных сведений заключается в удобстве получения данных запросом и отсутствии загромождения плана видов характеристик.
Этот способ кажется самым простым в реализации («без программирования»), но мы не рекомендуем его для больших объемов данных (более 5000 позиций). Причина в том, что выборка дополнительных реквизитов в запросах для печатных форм требует соединения с таблицей ДополнительныеРеквизитыИСведения, что усложняет код и замедляет формирование отчетов при массовой печати инвойсов.
Выясним, как правильно выводить данные в Инвойс. Автор темы предложил отличный алгоритм «каскадной» проверки, который мы рекомендуем реализовать в модуле внешней печатной формы (ВПФ).
Проанализируем пример кода для получения наименования с учетом приоритетов:
Функция ПолучитьПредставлениеНоменклатурыДляЭкспорта(ТоварСсылка, НужныйЯзык)
// 1. Пытаемся найти перевод на целевой язык (например, испанский)
НаименованиеПеревод = ПолучитьЗначениеИзХранилища(ТоварСсылка, НужныйЯзык);
Если НЕ ПустаяСтрока(НаименованиеПеревод) Тогда
Возврат НаименованиеПеревод;
КонецЕсли;
// 2. Если перевода нет, пытаемся найти английский вариант
ЯзыкАнглийский = Справочники.Языки.НайтиПоНаименованию("English");
НаименованиеEN = ПолучитьЗначениеИзХранилища(ТоварСсылка, ЯзыкАнглийский);
Если НЕ ПустаяСтрока(НаименованиеEN) Тогда
Возврат НаименованиеEN;
КонецЕсли;
// 3. Если и английского нет — возвращаем штатное русское наименование
Возврат ТоварСсылка.НаименованиеПолное;
КонецФункции
В этом примере функция ПолучитьЗначениеИзХранилища будет обращаться либо к общему реквизиту (в случае БСП 3.1), либо к созданному нами Регистру Сведений.
Для автоматизации процесса необходимо знать, на каком языке печатать документы для конкретного клиента. Посмотрим, где это лучше хранить:
Партнеры или Контрагенты добавим Дополнительный реквизит ЯзыкПечатныхФорм.Чтобы не переводить 5000 позиций вручную, можно воспользоваться API сервисов автоматического перевода (Яндекс.Переводчик или Google Translate). В штатном механизме мультиязычности современных версий 1С уже встроена кнопка автоматического перевода в карточке номенклатуры. Если вы используете свое решение на регистрах, рекомендуем написать простую обработку, которая:
Длина строк: Обратите внимание, что стандартные поля наименований часто ограничены 150 символами. Для международных контрактов может потребоваться очень длинное техническое описание. При создании своих реквизитов или регистров устанавливайте длину 1024 символа или используйте тип Строка неограниченной длины.
Характеристики: Не забудьте, что перевод может требоваться не только для самой номенклатуры, но и для ее характеристик (цвет, размер, исполнение). Штатный механизм мультиязычности в БСП поддерживает характеристики «из коробки», а при создании своего регистра обязательно добавьте характеристику в измерения.
Поиск: Огромным плюсом штатных реквизитов БСП является то, что менеджеры смогут искать товар в подборе документов, вводя английское название прямо в строку поиска. При использовании регистра сведений стандартный поиск работать не будет — придется кастомизировать форму выбора номенклатуры.
Таким образом, если ваша версия 1С:Управление торговлей позволяет, используйте штатный механизм мультиязычности БСП. Это наиболее стабильный и поддерживаемый путь, который решит задачи поиска, хранения и вывода данных на иностранных языках с минимальными затратами на разработку.