Имя: Пароль:
1C
1С v8
Проверка наименования товара на наличие слов на русском языке
0 fantasy2
 
08.04.15
12:57
Надо чтобы в наименовании товара были слова на русском(украинском) языке.
Сейчас вижу только как проверку каждого символа наименования по коду символа, может есть какие-то другие варианты?
1 PR
 
08.04.15
12:58
(0) Зачем другие варианты?
2 butterbean
 
08.04.15
12:58
ну еще можно завести словарь из всех возможных слов и сравнивать с ним
3 PR
 
08.04.15
12:59
Еще можно сделать рабочее место оператора по проверке слов, да
4 DrShad
 
08.04.15
12:59
как по символам можно решить что слово на русском языке?
5 fisher
 
08.04.15
13:03
(0) Думаю, достаточно будет сориентироваться по парочке первых буквенных символов.
6 fisher
 
08.04.15
13:04
Проверка, ессно, на диапазоны кодов.
7 DrShad
 
08.04.15
13:05
(6) ну вот к примеру на русском "любовь", на украинском "любов" - как проверить?
8 butterbean
 
08.04.15
13:06
(0) просто ради интереса, какая цель??
9 Serg_1960
 
08.04.15
13:07
Как вариант, предложенный fisher, - проверить первый символ каждого слова из наименования.
10 fisher
 
08.04.15
13:08
(7) Насколько я понял, ему нужно просто кириллицу отличать, а не русский от украинского.
11 kosts
 
08.04.15
13:08

Функция ФункцияПроверкиСтрокиНаРусскиеСлова()
    
    Если Вопрос("В этом наименовании есть русские (украинские) слова?" "Наименование: " + Наменование, РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда
        Возврат Истина;
    Иначе
        Возврат Ложь;
    КонецЕсли;
    
КонецФункции
12 asdfg13
 
08.04.15
13:10
(7) еще есть буквы, которые и там и там одинаковые - "С", "Н", "М", "А", "К", "Х", "В", "Е", "Т", "О", "Р"
13 bolobol
 
08.04.15
13:11
Клининг менеджер консалтингового комьюнити. И буквы-то все русские...
14 DrShad
 
08.04.15
13:11
(12) ну их на самом деле гораздо больше
15 fantasy2
 
08.04.15
13:28
- СЛОВАРЬ ПОКА НЕ ВИЖУ КАК ПОДКЛЮЧАТЬ
ТОЧНЕЕ ГДЕ ЕГО ВЗЯТЬ
- ВИДЕЛ ФУНКЦИИ, КОТОРЫЕ С ПОМОЩЬЮ MS WORD ПРОВЕРЯЮТ ПРАВОПИСАНИЕ, МОЖЕТ В ТУ СТОРОНУ СМОТРЕТЬ?
16 Волшебник
 
модератор
08.04.15
13:29
(15) не ори, пломбы вылетят
17 Serg_1960
 
08.04.15
13:30
(15) Не ори, разбудил соседа :)
18 fisher
 
08.04.15
13:30
(15) ты это лучше задачу сформулируй внятно
19 fantasy2
 
08.04.15
13:31
Функция нужна бухгалтерии, т.к. по правилам, якобы, в наименовании налоговой накладной должны быть русские(украинские)слова. Есть программа M.E.DOC она "ругается" когда наименование товара всё на английском.
20 Serg_1960
 
08.04.15
13:31
А почему зациклились только на символах букв? В наименования полно всякой дряни кроме букв. Кавычки, запятые, точки в сокращениях...
21 zva
 
08.04.15
13:32
Надо чтобы в наименовании товара были слова на русском(украинском) языке.
22 zva
 
08.04.15
13:32
Товар.Наименование = " слова на русском(украинском) языке";
23 Зеленый пень
 
08.04.15
13:33
(3) +1
24 PR
 
08.04.15
13:33
Мда, рановато пятничную ветку раскручиваете
25 DrShad
 
08.04.15
13:35
(19) ругается то на ангельский!!! и причем тут русский/украинский?
26 bolobol
 
08.04.15
13:35
(21) Наименование= Наименование + ", н-на."
Ну, или любой другой неопределённый артикль. И проверку не надо.
27 fantasy2
 
08.04.15
13:35
у меня нет пока других вариантов, кроме как проверять по символам, разве что сделать чтобы было мин. 3-5"нужных" символов подряд.
28 Кай066
 
08.04.15
13:35
(19) нужно её декомпилировать и позырить как она это делает
29 Serg_1960
 
08.04.15
13:36
(19) Ааа, понятно :(

"Налоговая накладная должна заполняться на государственном языке"(цы). Подветка ветки о геополитике :(
30 Кай066
 
08.04.15
13:37
Нужно сказать операторам чтоб по русски писали, кто не будет, тому ицык
31 fantasy2
 
08.04.15
13:38
для программы M.E.DOC Товар.Наименование+" продукция" будет достаточно, но ещё есть бухгалтер + хотелось бы заставить менеджеров "доптсывать" наименования. А для них, боюсь, проверки только по символам будет маловато.
32 fantasy2
 
08.04.15
13:42
ну так что word никак не заставим проверять наименования?

Есть привет как проверяют орфографию через word
https://helpf.pro/faq8/view/453.html

Что скажете на счёт проверки наличия в наименовании русских(украинских) слов?
33 palpetrovich
 
08.04.15
13:43
(31) можно  создать ГлобальныйСписокЗапрещенныхБукв и проверять на них при вводе, тоггда не надо будет городить  цикл с проверкой кода символа
34 Serg_1960
 
08.04.15
13:47
Может поможет RegExp = Новый COMОбъект("VBScript.RegExp"); ?
35 fantasy2
 
08.04.15
13:48
Спасибо за участие.
буду пробовать подключать к этому word.
Не откажусь, если подскажете функцию word для этих целей
36 palpetrovich
 
08.04.15
13:49
+(33)  впрочем фигня, все-равно каждый символ прийдется проверять :)
так что
стр = СтрЗаменить(стр, " ", "");
Для инд=1 по СтрДлина(стр) Цикл
    КодСимвола = КодСимв(Сред(стр, инд, 1));
    Если (КодСимвола<192) или (КодСимвола>255) Тогда
        Сообщить("а буквы-то нерусские!");
        Прервать;
    КонецЕсли;
КонецЦикла;    

(34) о +1
37 Fish
 
08.04.15
13:50
только вот проблема: как определить, буква "i" - английская или украинская? :))
38 Волшебник
 
модератор
08.04.15
13:51
(37) буква-исключение
39 asdfg13
 
08.04.15
13:51
(0) А просто писать все наименования на том языке, на котором надо, вариант еще никто не предлагал?
40 DrShad
 
08.04.15
13:53
(34) +100500 проверять на регулярку и если нет ни одной буквы из кириллицы то в лес
41 fantasy2
 
08.04.15
13:53
Приши к компромису с бухгалтерами на счёт наличия в наименовании 5 символов подряд, если нет, тогда сообщение менеджеру, бухгалтеру и при выгрузке в m.e.doc
пока так, дальше посмотрим.
Ещё раз спасибо!
42 DrShad
 
08.04.15
14:00
(41) а с регулярками было бы красивее
43 aka AMIGO
 
08.04.15
14:02
(39) не выйдет..
и вот почему:
тётя-расчетчица зарплаты исправляла фио, не поменяв раскладку..
Ввела букву "А" на латинском, потом удивлялась, что в в списке справочника найти не может..
Когда ей указали на причину, она сказала только "Да какая разница!?!"

Так что вот, "разницы нет", и научить пожилых (и не очень) бушек, у которых думы на рабочем месте не о том, невозможно.
44 oslokot
 
08.04.15
14:18
(0) (43) Удалить все раскладки клавы кроме русского(украинского) языка
45 Кай066
 
08.04.15
14:22
(44) ага, ДжеФорс джитиикс 750 ай
46 Лефмихалыч
 
08.04.15
14:34
(19) ВЫБРАТЬ Ссылка из Справочник.Номенклатура ГДЕ Наименование ПОДОБНО "[A-z]"
47 Лефмихалыч
 
08.04.15
14:35
+(46) Оператор проверки строки на подобие шаблону
Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если значение выражения удовлетворяет шаблону – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ.

Следующие символы в строке шаблона являются служебными и имеют смысл, отличный от символа строки:

% (процент): последовательность, содержащая любое количество произвольных символов
_ (подчеркивание): один произвольный символ
[…] (в квадратных скобках один или несколько символов): любой одиночный символ из перечисленных внутри квадратных скобок
В перечислении могут встречаться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона.
[^…] (в квадратных скобках значок отрицания, за которым следует один или несколько символов): любой одиночный символ, кроме тех, которые перечислены следом за значком отрицания
Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки.

Если в качестве самого себя необходимо записать один из перечисленных символов, то ему должен предшествовать <Спецсимвол>. Сам <Спецсимвол> (любой подходящий символ) определяется в этом же операторе после ключевого слова СПЕЦСИМВОЛ.

Например, шаблон “%АБВ[0-9][абвг]_абв%” СПЕЦСИМВОЛ “\” означает подстроку, состоящую из последовательности символов:
буквы А; буквы Б; буквы В; одной цифры; одной из букв а, б, в или г; символа подчеркивания; буквы а; буквы б; буквы в.

Причем перед этой последовательностью может располагаться произвольный набор символов.
48 oslokot
 
08.04.15
15:02
Чиста ради любопытства, украинская и латинская "i" один и тот же символ? код?
49 aka AMIGO
 
08.04.15
15:10
Процедура Сформировать()
    Для ы=32 По 255 Цикл
        Сообщить(""+ы+"  "+Симв(ы));
    КонецЦикла;
КонецПроцедуры
50 asdfg13
 
08.04.15
15:11
(39) НЕ верь тетям-расчетчицам - прикинулись тупыми, бедными и несчастными, и развели тебя. Вот и вся проблема. Скажи им, что отсутствие ошибок премию получать каждый месяц в 200 рублей - уверен, проблемы не будет.
51 fantasy2
 
09.04.15
11:57
по всё закончилось функцией

Функция ПроверитьНаНаличиеРусскихСлов()
    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("КоличествоСимволовПодряд");
    стр = ПолеВвода1;
    стр = СтрЗаменить(стр, " ", "");
    КоличествоСимволовПодряд = 0;
    Для инд = 1 по СтрДлина(стр) Цикл
        КодСимвола = КодСимвола(Сред(стр, инд, 1));
        Если (КодСимвола<1040) или (КодСимвола>1103) Тогда
            КоличествоСимволовПодряд = 0;
            Сообщить(" "+Сред(стр, инд, 1)+" "+КодСимвола);
        Иначе
            Сообщить(" "+КодСимвола+" "+Сред(стр, инд, 1));
            
            КоличествоСимволовПодряд = КоличествоСимволовПодряд + 1;
        КонецЕсли;        
        Если КоличествоСимволовПодряд > 0 Тогда
            НовСтрока = ТЗ.Добавить();
            НовСтрока.КоличествоСимволовПодряд = КоличествоСимволовПодряд;
        КонецЕсли;
    КонецЦикла;
    ТЗ.Сортировать("КоличествоСимволовПодряд Убыв");
    КоличествоСимволовПодрядМакс = 0;    
    Если ТЗ.Количество() > 0 Тогда
        КоличествоСимволовПодрядМакс = ТЗ.Получить(0).КоличествоСимволовПодряд;
    КонецЕсли;    
    Если КоличествоСимволовПодрядМакс < 5 Тогда
        Предупреждение("В наименовании товара нет слов на русском языке",5);
        Возврат Ложь;
    Иначе
        Возврат Истина;
    КонецЕсли;
КонецФункции
52 Хоменко Валерий
 
09.04.15
12:03
Когда такое появилось, ко всем прежним латинским названиям стали автоматом добавлять в начало слово "Автомобиль".
53 User_Agronom
 
09.04.15
12:07
(0) Полная засада: по кириллице нельзя определить язык. Не то что литературный русский и мову, а встанет вопрос как отличить русское слово от, например, болгарского?
54 shpioleg
 
09.04.15
13:31
(51) Что-то ты сильно навернул. Даже ТЗ впендюрил.
Предлагаю проще вариант

Процедура КнопкаВыполнитьНажатие(Кнопка)
    ЧислоБуквПодрядМакс = 5;
    Если ПроверитьНаименованиеРус(Номенклатура.Наименование,ЧислоБуквПодрядМакс) Тогда
        Сообщить ("Отлично. Целых " + ЧислоБуквПодрядМакс + " букв подряд.");        
    Иначе
        Сообщить ("Ошибка! Я русский бы выучил только за то...");
    КонецЕсли;
КонецПроцедуры

Функция ПроверитьНаименованиеРус(Наименование,ЧислоБуквПодрядМакс = 5)
    НужноеЧислоБукв = ЧислоБуквПодрядМакс;    
    КоличествоСимволовПодряд = 0;
    ЧислоБуквПодрядМакс = 0;
    Для инд = 1 по СтрДлина(Наименование) Цикл
        Символ = Сред(Наименование, инд, 1);
        Если (Символ >= "а") И (Символ <="Я") Тогда
            КоличествоСимволовПодряд = КоличествоСимволовПодряд + 1;
        Иначе
            КоличествоСимволовПодряд = 0;            
        КонецЕсли;
        ЧислоБуквПодрядМакс = Макс(ЧислоБуквПодрядМакс,КоличествоСимволовПодряд);
    КонецЦикла;
    Возврат ЧислоБуквПодрядМакс >= НужноеЧислоБукв;
КонецФункции

Кстати, интересно почему "А" > "а",хотя по коду символа "а" > "А" ?