Доброго времени суток!
Если у Вас Ваши пользователи постоянно жалуются, что не могут найти в номенклатуре нужную позицию, то, возможно, проблема в неправильных наименованиях. А точнее, в смешении русских и английских букв в наименовании.
Предлагаю обработку, которая будет искать резкие переходы из русских в английские и наоборот. И показывать, где есть возможные ошибки. Пробелы и спец. символы можно использовать как разделители, и обработка не будет считать это за ошибки.
Выдает список всех подозрительных наименований. Здесь же можно зайти в редактирование и сразу поправить наименование.
Основной алгоритм:
ЭтоРусскаяБуква = Найти(строкаРусскихБукв,Символ)>0;
ЭтоАнглБуква = Найти(строкаАнглийскихБукв,Символ)>0;
Если позСимвола <> 1 Тогда
Если (этоРусскийТекст И ЭтоАнглБуква) ИЛИ (этоАнглийскийТекст И ЭтоРусскаяБуква) Тогда
стр = ТаблицаОшибок.Добавить();
стр.НомерСтроки = ВсегоСтрок + 1;
стр.Номенклатура = ВыборкаДетальныеЗаписи.Ссылка;
стр.ПозициявСтроке = позСимвола;
стр.ПравильнаяСтрока = Лев(ВыборкаДетальныеЗаписи.Наименование, позСимвола - 1);
Если этоРусскийТекст И ЭтоАнглБуква Тогда
стр.Примечание = "Англ. буква в русском тексте";
ИначеЕсли этоАнглийскийТекст И ЭтоРусскаяБуква Тогда
стр.Примечание = "Рус. буква в английском тексте";
КонецЕсли;
ВсегоСтрок = ВсегоСтрок + 1;
КонецЕсли;
КонецЕсли;
этоРусскийТекст = ЭтоРусскаяБуква;
этоАнглийскийТекст = ЭтоАнглБуква;
позСимвола = позСимвола + 1;
Проверено на следующих конфигурациях и релизах:
- 1С:ERP Управление предприятием 2, релизы 2.5.12.270
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.158.23