Большой провал маленькой функции 1С

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Когда 1С задумалась о порабощении покорении мира, она добавила в платформу некоторые инструменты для работы с различными языками. Шаг был в верном направлении, но, к сожалению, была сделана серьезная ошибка, которая превратила простой инструмент по использованию фраз на разных языках в кошмар.

Рассказываю.

В новых релизах 1С появилась функция НСтр, вот пример ее использования:

Она позволяет пользователям, использующие разные языки, показывать сообщения на родном языке.

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

Поэтому 1С пришлось создавать инструменты для поиска таких фраз и массового редактирования.

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

Было бы неплохим решением, если бы функцию НСтр можно было заменить своей функцией МоёНСтр, тогда в одном месте можно было бы сделать все переводы. Но увы, платформа 1С нам такую возможность не предоставляет. Можно конечно заменить все вызовы НСтр на МоёНСтр, но в этом случае приходится снимать все модули, где встречаются вызовы этой функции, с поддержки.

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

Они добавляют целиком код процедуры, где встречается НСтр в расширение и там вносят правки. Хорошо, если разработчики обучены культуре использования ИзменениеИКонтроль, но я встречал и разработчиков которые всё пихают в директиву Вместо.

Для тех кто не особо разбирается в 1С, поясню на примере.

Исходный код:

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

По сути, одно неправильное решение по размещению фраз на разных языках привело к огромному количеству правок кода.

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

Но думаю, фирма 1С имеет своё мнение на этот счет и из-за этого ослиного упрямства международный рынок будет всё так же ей недоступен, как и ранее.

Думаю, не последним будет и мнение — как же так, если будет одна функция НСтр, туда же будут приходить все фразы, это будет работать мееееееееееедленно. Хотя скорость перебора даже 1000 фраз там будет занимать доли секунды. Но перфекционизм, как известно губителен.

Источник: https://habr.com/ru/post/673984/


Интересные статьи

Интересные статьи

В 2012 году в структуре Amazon возникла собственная студия по производству компьютерных игр. По замыслу Джеффа Безоса, Amazon Game Studios должна была стать успешной и эффективной час...
Если создатели сериалов про хакеров и киберпреступность не прорабатывают детали, перед экраном грустит один кибербезопасник. В 2020 году мир ИТ уже посмотрел «Мистера Робота» и «Кремниеву...
В преддверии старта занятий в новом потоке группы «Разработчик С++» подготовили перевод интересного материала. Большинство алгоритмов STL в C++ используют всего лишь одну функцию для выполне...
Вам приходилось сталкиваться с ситуацией, когда сайт или портал Битрикс24 недоступен, потому что на диске неожиданно закончилось место? Да, последний бэкап съел все место на диске в самый неподходящий...
Голосование по сокращенному синтаксису для функций завершено (51 "за", 8 "против"). Было: $result = array_filter($paths, function ($v) use ($names) { return in_array($v, $names); }); Ста...