Имя: Пароль:
1C
1С v8
Проверка строки на соответствие маски
,
0 kotokent
 
29.01.14
08:17
Здравствуйте, я создал справочник и в нем несколько реквизитов. Один из них ГосНомер.
ГосНомер - строка, при записи проверять что строка соответсвует формату гос номеров РФ. При этом проверка должна выполняться даже в случае записи элемента универсальными обработками...
Я установил маску: http://i031.radikal.ru/1401/7d/9840cd1b0694.png
Но он мне вводит не то что хотелось бы: http://s020.radikal.ru/i718/1401/46/297325192e15.png
Как это исправить?
И что за проверка в конце задания я не понял?
1 Wobland
 
29.01.14
08:18
>проверять что строка соответсвует формату
это тебе регвыражения изучать надо
2 Wobland
 
29.01.14
08:22
3 Wobland
 
29.01.14
08:24
4 kotokent
 
29.01.14
08:24
(1) это про маску строки или про проверку?
5 Wobland
 
29.01.14
08:28
(4) про проверку соответствия какой-то маске
6 kotokent
 
29.01.14
08:30
(5) ну уже понял, немного... а почему маска то корявит?
7 Wobland
 
29.01.14
08:33
(6) да не, как описано в документации, так и работает
8 kotokent
 
29.01.14
08:36
(7) там написано что если "X 999 XX   rus" ввести то будет 1-буква, потом 2 цифры и потом 2 буквы, а у меня все вводит
9 Wobland
 
29.01.14
08:37
(8) скопипасти сюда этот кусок документации
10 kotokent
 
29.01.14
08:39
(9) так я маску установил http://i031.radikal.ru/1401/7d/9840cd1b0694.png
11 kotokent
 
29.01.14
08:39
(9) без когда
12 kotokent
 
29.01.14
08:39
(9) в свойствах - "Маска"
13 kotokent
 
29.01.14
08:40
(11) без кода
14 Wobland
 
29.01.14
08:40
(8) где написано?
15 Бледно Золотистый
 
29.01.14
08:41
(8) Звездёшь.
X (латинского алфавита) - допустимо ввести произвольный символ;
16 Defender aka LINN
 
29.01.14
08:41
(8) Попробуй таки справку именно по 1С открыть.
"X (латинского алфавита) - допустимо ввести произвольный символ;" ©
17 kotokent
 
29.01.14
08:43
18 Wobland
 
29.01.14
08:44
(17) фраза " 1-буква, потом 2 цифры и потом 2 буквы" не найдена
19 kotokent
 
29.01.14
08:44
(16) (15) тогда невозможно просто так установить буквы, там такого нет в справке,
20 kotokent
 
29.01.14
08:45
(18) ты имеешь в виду код, так в какой тогда процедуре его писать чтобы установить шаблон строки
21 Wobland
 
29.01.14
08:49
(20) я имею в виду священную документацию. пора бы уже узнать, как она выглядит
22 kotokent
 
29.01.14
08:49
(21) я ее читаю
23 kotokent
 
29.01.14
08:56
Для того, чтобы использовать в маске один из специальных символов, нужно использовать перед ним символ "\".


не работает
24 kotokent
 
29.01.14
09:06
все... я запутался
25 kotokent
 
29.01.14
09:11
Как это сделать то?
26 Wobland
 
29.01.14
09:13
(25) забей на поле ввода, есть более мудрая задача: анализ строки
27 kotokent
 
29.01.14
09:14
(26) я вот не умею пользоваться RegExp
28 Wobland
 
29.01.14
09:15
(27) и у меня в жизни был такой период
29 Wobland
 
29.01.14
09:16
кстати, вдруг ком-объекта не будет? пиши тогда посимвольный перебор
30 kotokent
 
29.01.14
09:16
(28) мне надо отдельную процедуру делать с ним? или "ПриИзменении"?
31 Wobland
 
29.01.14
09:22
закрой глаза и представь, что формы у тебя нет. а проверять надо. как быть?
32 МишельЛагранж
 
29.01.14
09:23
(28) не путай новичка.
Если он фикси, так и то, может "потерять" dll-ку, а уж если "на выезде", то однозначно никаких библиотек. Потеряют и все крякнется.
Либо 1С вводит нормальную работу с масками, либо - писать самому анализ строки, как надо. И в отдельную функцию все это.
33 regniws
 
29.01.14
09:23
(26) Есть проблема анализа строки? решили использовать регулярные выражения? теперь у вас две проблемы.
34 МишельЛагранж
 
29.01.14
09:24
(30) сделай сам, потом будет проще.
Задача как раз для новичка.
35 CepeLLlka
 
29.01.14
09:27
Мне кажется я бы сделал проверку по кодам символов и ок..
36 Wobland
 
29.01.14
09:32
(35) русская часть таблицы не в одном месте лежит. так что тупо сравнение с>="а" и с<="я" подойдёт имхо
37 МишельЛагранж
 
29.01.14
09:58
(36) кода же в таблице не переезжают с места на место.
38 Wobland
 
29.01.14
10:08
(37) я за удобство проверки вхождения в один диапазон
39 EvgeniuXP
 
29.01.14
10:23
(1) не обязательно, берешь толстую форму с маской, заносишь в поле значение получаешь результат - сверяешь с исходной - одинакова? значит по маске :)
40 EvgeniuXP
 
29.01.14
10:24
(39) ес-стно программно всё это делаешь.
41 kotokent
 
29.01.14
11:07
т.е. в модуле написать отдельную процедуру ПроверкаСимволовГосНомер...?
но вопрос как маску задать кодом строке и как проверку символов организовать?
я код урвал, может поможет

Строка = Объект.ГосНомер;
Длина = СтрДлина(Строка);
Сч = 1;
Пока Сч<=Длина Цикл
     ТекСимвол = Сред(Строка, Сч, 1);
     Сч = Сч+1;
КонецЦикла;
42 Wobland
 
29.01.14
11:09
может, ТекСимвол в паре с Сч тебе показывает символ, находящийся на Сч-й позиции?
43 kotokent
 
29.01.14
11:11
(42) ну да...
44 Wobland
 
29.01.14
11:12
(43) тогда это хорошо. всегда можно узнать, буква он или цифра, правда?
45 kotokent
 
29.01.14
11:13
(44) ну да, а какой командой маску задать строке?
46 Wobland
 
29.01.14
11:13
(45) предлагаю перебирать символы
47 kotokent
 
29.01.14
11:15
(46) без маски получается
48 Wobland
 
29.01.14
11:17
(47) если ты под маской подразумеваешь свойство поля ввода, то забудь. формы у тебя нет
49 Sammo
 
29.01.14
11:18
Помимо regExp иногда работает проверка запросом

ВЫБРАТЬ
    &Стр
ГДЕ
    &Стр ПОДОБНО &Шаблон

В шаблон загоняешь шаблон строки в скулевом формате
50 kotokent
 
29.01.14
11:19
(48) под маской я подразумеваю номер автомобиля
51 Wobland
 
29.01.14
11:21
(49) а ведь отличный план
52 kotokent
 
29.01.14
11:25
как сравнить символ с буквой, команда какая?
53 kotokent
 
29.01.14
11:25
(51) (49) щас опять запутаете
54 Sammo
 
29.01.14
11:26
Правад в 49 два момента
1. Насколько я помню в гос номерах возможны не все буквы россикйского или английского алфавита, т.е. [A-Z] не взлетит. Как вариант собрать ее руками и проставить через ,
По цифрам [0-9] работать будет.
Да, и я не помню - можно ли в запросе указать 3 цифры подряд иначе чем [0-9][0-9][0-9] Когда разбирался пару лет назад что-то не нашел.

2. По умолчанию не работает для случаев, когда нужно фильтровать по регистру. Работает регистронезависимо
55 Wobland
 
29.01.14
11:26
(52) какие операции сравнения тебе известны?
56 kotokent
 
29.01.14
11:29
(55) -
57 Sammo
 
29.01.14
11:29
(53) с учетом момента, ято я не помню допутимый набор букв шаблон будет
Шаблон = "[A-Z] [0-9][0-9][0-9] [A-Z][A-Z]" - это без региона.
Но я бы не стал это делать. Т.к. могут быть номера выданные еще в советское время (некоторые до сих пор на них ездят) + у грузовых автомобилей/автобусов может формат отличаться + номера казахские, например. И т.п.
58 kotokent
 
29.01.14
11:36
(55) &НаКлиенте
Процедура ПроверкаСимволовГосНомер ()
    Строка = "[A-Z] [0-9][0-9][0-9] [A-Z][A-Z]";
    Строка = Объект.ГосНомер;
    Длина = СтрДлина(Строка);
    Сч = 1;
    Пока Сч<=Длина Цикл
        ТекСимвол = Сред(Строка, Сч, 1);
        Для Сч = 1 и Сч = 5 и Сч = 6
            ;
        КонецЕсли;    
        Сч = Сч+1;
    КонецЦикла;
КонецПроцедуры



я на верном пути?
59 kotokent
 
29.01.14
11:36
только что то он мне этот код вообще не видит
60 kotokent
 
29.01.14
11:37
может надо при событии каком то ее делать
61 kotokent
 
29.01.14
11:37
(55) например окончаниеВводаТекста?
62 Wobland
 
29.01.14
11:39
(57) я думаю, реальную задачу такому не доверят
63 kotokent
 
29.01.14
11:40
(62) что то херня какая то получилось в (58)
64 kotokent
 
29.01.14
11:44
(62)


&НаКлиенте
Процедура ГосНомерОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка)
    Строка = Объект.ГосНомер;
    Строка = "[A-Z] [0-9][0-9][0-9] [A-Z][A-Z]";
    Длина = СтрДлина(Строка);
    Сч = 1;
    Пока Сч<=Длина Цикл
        ТекСимвол = Сред(Строка, Сч, 1);
        Для Сч = 5 по Сч = 6 Цикл
            ;
        КонецЦикла;    
        Сч = Сч+1;
    КонецЦикла;
КонецПроцедуры


по этому коду обработчик не видит текст
65 Wobland
 
29.01.14
11:46
>проверка должна выполняться даже в случае записи элемента универсальными обработками
что будет с твоим окончанием ввода текста при универсальной обработке?
66 kotokent
 
29.01.14
11:47
(65) я не пойму что такое универсальная обработка
67 kotokent
 
29.01.14
11:54
(65) он по тексту проходит, но только по предыдущему... в смысле я первый раз ввел вася, обработчик его не увидел... второй раз ввел петя, обработчик увидел вася
68 Wobland
 
29.01.14
11:55
(66) такая обработка, запустив которую я смогу проставить "*** вам" во всех или некоторых элементах
69 kotokent
 
29.01.14
11:57
(68) Ммм... ну я пашел по пути который ты предложил, перебираю символы
70 kotokent
 
29.01.14
11:57
(68) только вот (67)
71 kotokent
 
29.01.14
11:58
&НаКлиенте
Процедура ГосНомерОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка)
    Строка = Объект.ГосНомер;
    Длина = СтрДлина(Строка);
    Сч = 1;
    Пока Сч<=Длина Цикл
        ТекСимвол = Сред(Строка, Сч, 1);
        ТекСимвол = "[A-Z]";
        Сч = Сч+1;
    КонецЦикла;
КонецПроцедуры
72 Wobland
 
29.01.14
12:00
(71) первый символ должен быть буквой или цифрой?
73 kotokent
 
29.01.14
12:01
(72) 1- буква, 3 цифры, 5 и 6 - буквы
74 Wobland
 
29.01.14
12:02
(73) как узнать, что мы сейчас работаем с первым символом?
75 kotokent
 
29.01.14
12:03
(74) обработчик показывает 1, а потом ТекСимвол становится 1-ым символом
76 Wobland
 
29.01.14
12:04
как узнать, является ли какой-то символ буквой?
77 kotokent
 
29.01.14
12:06
(76) хороший вопрос :)
78 Wobland
 
29.01.14
12:07
так и быть. преобразованный в верхний регистр, он будет больше или равен "А" и меньше или равен "Я"
79 kotokent
 
29.01.14
12:10
(78) ???
ты про специальные символы
80 Wobland
 
29.01.14
12:10
(79) нет. я про сравнение строк длиной 1. в 1С нет типа char, приходится работать со строкой
81 kotokent
 
29.01.14
12:13
(80) может его проще с числом сравнить
82 kotokent
 
29.01.14
12:14
(80) блин, я тоже не представлю как
83 Wobland
 
29.01.14
12:15
(81) предлагай. с каким?
84 kotokent
 
29.01.14
12:16
(83) ну вот если написать
85 kotokent
 
29.01.14
12:16
(83)

Процедура ГосНомерОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка)
    Строка = Объект.ГосНомер;
    Длина = СтрДлина(Строка);
    Сч = 1;
    Пока Сч<=Длина Цикл
        ТекСимвол = Сред(Строка, Сч, 1);
        Если Сч = 1 и ТекСимвол = "[0-9]" Тогда
            Сообщить ("аааааа");
        КонецЕсли;
        Сч = Сч+1;
    КонецЦикла;
КонецПроцедуры
86 Wobland
 
29.01.14
12:17
"[0-9]" - это строка такая длиной 3. и вовсе не число
87 Wobland
 
29.01.14
12:17
(86) *длиной 5, конечно
88 kotokent
 
29.01.14
12:18
(87) понял... но тогда как
89 Wobland
 
29.01.14
12:19
преобразованный в верхний регистр, он будет больше или равен "А" и меньше или равен "Я"
90 kotokent
 
29.01.14
12:23
(89) я даже в нете такого примерно выржения не нашел
91 Wobland
 
29.01.14
12:23
(90) правильно, я его только что сам сгенерировал. какое слово непонятно?
92 kotokent
 
29.01.14
12:25
(91) ааа... это мне так сравнить надо... блин, теперь "верхний регистр не понятно"
93 Wobland
 
29.01.14
12:26
какие функции для работы со строками есть в 1С?
94 kotokent
 
29.01.14
12:30
(93) ВРег(<Строка>) — Все символы строки функция преобразует в верхний регистр.
95 Wobland
 
29.01.14
12:33
теперь у тебя есть всё, чтобы узнать, не буква ли первый символ. справишься?
96 kotokent
 
29.01.14
12:33
(95) без тебя... нет
97 kotokent
 
29.01.14
12:34
(95) сейчас надо символ, преобразовать в верхний регистр и потом сравнить его с А и Я?
98 Ёпрст
 
29.01.14
12:34
(96) Вон из профессии!
99 Ёпрст
 
29.01.14
12:34
(97) догадливый.
100 Wobland
 
29.01.14
12:35
СТО
101 kotokent
 
29.01.14
12:39
(100) у меня проблема

&НаКлиенте
Процедура ГосНомерОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка)
    Строка = Объект.ГосНомер;
    Длина = СтрДлина(Строка);
    Сч = 1;
    Пока Сч<=Длина Цикл
        ТекСимвол = Сред(Строка, Сч, 1);
        Если ВРег(ТекСимвол)>="А" и ВРег(ТекСимвол)<="Я" Тогда
            Сообщить ("аааааа");
        КонецЕсли;
        Сч = Сч+1;
    КонецЦикла;
КонецПроцедуры


Он мне не видит то что ввожу сейчас, он выдит предыдущую запись, что делать?
102 Wobland
 
29.01.14
12:42
ну перевесь это дело на кнопку
103 kotokent
 
29.01.14
12:45
(102) не хотелось бы менять форму
104 kotokent
 
29.01.14
12:49
(102) может вставить это в кнопку "записать и закрыть", в процедуру призаписи?
105 Wobland
 
29.01.14
12:49
заведи себе ВнешняяОбработка1.epf и отлаживай там свой алгоритм, пока не позеленеешь
106 kotokent
 
29.01.14
12:50
(105) мне это в справочнике надо сделаеть
107 Wobland
 
29.01.14
12:51
(106) я понял
108 kotokent
 
29.01.14
13:00
как сделать так, чтобы если символ не подходит, то ошибка и все стиралось или нельзя было записать?
109 Wobland
 
29.01.14
13:02
алгоритм проверки соответствия уже есть?
110 kotokent
 
29.01.14
13:03
(109) делаю
111 Wobland
 
29.01.14
13:04
ждём-с
112 Wobland
 
29.01.14
13:04
можешь даже нарисовать себе булевскую функцию ГодныйНомер(КакаяТоСтрока) и вставлять её потом в разные места по вкусу
113 kotokent
 
29.01.14
13:08
(112) понять бы что такое булево
114 Wobland
 
29.01.14
13:09
(113) тип, включающий в себя два логических значения
115 kotokent
 
29.01.14
13:16
(111) ща, я алгоритм то накидал
116 МишельЛагранж
 
29.01.14
13:16
(113) булева алгебра. Вики.
117 МишельЛагранж
 
29.01.14
13:18
(113) "булева" функция - возвращает или Ложь, или Истина, и все.
118 МишельЛагранж
 
29.01.14
13:18
а вообще, не часто увидишь такую няньку на мисте ))
жду продолжения!!!
119 kotokent
 
29.01.14
13:21
(114) (116)

&НаКлиенте
Процедура ГосНомерПриИзменении(Элемент)
    Строка = Объект.ГосНомер;
    Длина = СтрДлина(Строка);
    Сч = 1;
    Пока Сч<=Длина Цикл
        ТекСимвол = Сред(Строка, Сч, 1);
        Если Сч = 1 или Сч = 5 или Сч = 6 Тогда
            Если ВРег(ТекСимвол)>="А" и ВРег(ТекСимвол)<="Я" Тогда
                Сообщить ("ДА"+Сч);
            Иначе
                //Отказ = Истина;
            КонецЕсли;
        КонецЕсли;
        Если Сч >= 2 и Сч <= 4 или Сч >= 7 и Сч <= 8 Тогда
            Если ВРег(ТекСимвол)>="0" и ВРег(ТекСимвол)<="9" Тогда
                Сообщить ("ДА"+Сч);
            Иначе
                //Отказ = Истина;
            КонецЕсли;
        КонецЕсли;
        Сч = Сч+1;
    КонецЦикла;
КонецПроцедуры
120 kotokent
 
29.01.14
13:22
(118) (114) теперь осталось отказ прописать... во как :)
121 Wobland
 
29.01.14
13:24
какие события бывают у объекта?
122 kotokent
 
29.01.14
13:25
(121) приизменении, открытие....
123 Wobland
 
29.01.14
13:26
(122) ложь
124 kotokent
 
29.01.14
13:27
(123) ну в свойиствах, там перед... призаписи написано и это (122)
125 Wobland
 
29.01.14
13:29
(124) в каких свойствах?
126 kotokent
 
29.01.14
13:29
(125) в свойствах поля
127 Wobland
 
29.01.14
13:34
(126) а при чём тут поле? я тайно ночью запущу универсальную обработку и переименую все твои номера в хрень. и даже это самое поле ни разу не увижу
128 kotokent
 
29.01.14
13:39
(127) получается что не для того написал процедуру
129 kotokent
 
29.01.14
13:43
(127) это надо сделать так, чтобы ни одна подписка на события не изменила форму, т.е. заблокировать все подписки?
130 kotokent
 
29.01.14
13:48
(127) или что
131 Питерский_
Никола
 
29.01.14
13:48
ТС тебе зряплату платят или энтузиазм ?
132 kotokent
 
29.01.14
13:54
(131) учусь - практика - диплом
133 Wobland
 
29.01.14
13:54
(129) подписка даже не знает, что на свете бывают формы
134 kotokent
 
29.01.14
13:56
(133) ну тогда я не понимаю о чем ты
135 Любопытная
 
29.01.14
13:59
(134)он о том, что проверять надо у объекта перед записью
136 Любопытная
 
29.01.14
14:00
(133)пы путаешь парня. Ему надо всего лишь организовать работу маски в поле формы, а ты про серьезные вещи вещаешь.
137 Wobland
 
29.01.14
14:00
(132) диплом по какоой специальность?
138 kotokent
 
29.01.14
14:03
(137) прикладная информатика в экономике
139 kotokent
 
29.01.14
14:03
(135) так у меня объект.ГосНомер, не?
140 kotokent
 
29.01.14
14:03
(136) типо поле
141 Wobland
 
29.01.14
14:05
Функция ЭтоБуква(с)
    Возврат с>="А" И с<="Я";
КонецФункции

Функция ЭтоЦифра(с)
    Возврат с>="0" И с<="9";
КонецФункции

Функция ГодныйНомер(стр)
    Для й=1 По СтрДлина(стр) Цикл
        с=ВРег(Сред(стр, й, 1));
        Если (й=1 ИЛИ й=5 ИЛИ й=6) И НЕ ЭтоБуква(с) Тогда
            Возврат Ложь;
        ИначеЕсли ((й>=2 И й<=4) ИЛИ й=7 ИЛИ й=8) И НЕ ЭтоЦифра(с) Тогда
            Возврат Ложь;
        КонецЕсли;
    КонецЦикла;
    Возврат СтрДлина(стр)=8;
КонецФункции
142 kotokent
 
29.01.14
14:09
(141) это ты мне написал как надо?
143 kotokent
 
29.01.14
14:10
(141) у меня что, вообще не то?
144 Wobland
 
29.01.14
14:10
(142) это я тряпочкой протёр (119)
145 kotokent
 
29.01.14
14:14
(144) а переменную "стр" надо где объявлять
146 Wobland
 
29.01.14
14:16
зачем прикладным экономистам программировать?
147 kotokent
 
29.01.14
14:16
(146) заставляют, да и диплом не просто же так проектирование сдавать
148 kotokent
 
29.01.14
14:17
(146) (145)
149 kotokent
 
29.01.14
14:18
(146) ты мне скажи где переменную объявить и как к этим функциям теперь обращаться
150 Wobland
 
29.01.14
14:19
151 kotokent
 
29.01.14
14:22
(150) :)
152 kotokent
 
29.01.14
14:24
(150)

&НаКлиенте
Процедура ГосНомерПриИзменении(Элемент)
    стр = Объект.ГосНомер;
    ГодныйНомер(стр);
КонецПроцедуры

Функция ЭтоБуква(с)
    Возврат с>="А" И с<="Я";
КонецФункции

Функция ЭтоЦифра(с)
    Возврат с>="0" И с<="9";
КонецФункции

Функция ГодныйНомер(стр)
    Для й=1 По СтрДлина(стр) Цикл
        с=ВРег(Сред(стр, й, 1));
        Если (й=1 ИЛИ й=5 ИЛИ й=6) И НЕ ЭтоБуква(с) Тогда
            Возврат Ложь;
        ИначеЕсли ((й>=2 И й<=4) ИЛИ (й=7 и й=8)) И НЕ ЭтоЦифра(с) Тогда
            Возврат Ложь;
        КонецЕсли;
    КонецЦикла;
    Возврат СтрДлина(стр)=8;
КонецФункции


не работает
153 Wobland
 
29.01.14
14:25
(152) а должно?
154 kotokent
 
29.01.14
14:27
(153) нет... функция не правильно вызвана

теперь я не пойму, мне надо как функцию вызвать
155 kotokent
 
29.01.14
14:31
(153) Верно?
156 Ёпрст
 
29.01.14
14:35
(154) ну и пиши ежели не годныйномер тогдашеньки Объект.ГосНомер =""...
157 kotokent
 
29.01.14
14:37
(156)
158 kotokent
 
29.01.14
14:37
(156)
&НаКлиенте
Процедура ГосНомерПриИзменении(Элемент)
    стр = Объект.ГосНомер;
    Если НЕ ГодныйНомер(стр) Тогда
        Сообщить("Введите нормер заново");
    КонецЕсли
КонецПроцедуры

Функция ЭтоБуква(с)
    Возврат с>="А" И с<="Я";
КонецФункции

Функция ЭтоЦифра(с)
    Возврат с>="0" И с<="9";
КонецФункции

Функция ГодныйНомер(стр)
    Для й=1 По СтрДлина(стр) Цикл
        с=ВРег(Сред(стр, й, 1));
        Если (й=1 ИЛИ й=5 ИЛИ й=6) И НЕ ЭтоБуква(с) Тогда
            Возврат Ложь;
        ИначеЕсли ((й>=2 И й<=4) ИЛИ (й=7 и й=8)) И НЕ ЭтоЦифра(с) Тогда
            Возврат Ложь;
        КонецЕсли;
    КонецЦикла;
    Возврат СтрДлина(стр)=8;
КонецФункции
159 kotokent
 
29.01.14
14:40
(156) (153)


&НаКлиенте
Процедура ГосНомерПриИзменении(Элемент)
    стр = Объект.ГосНомер;
    Если НЕ ГодныйНомер(стр) Тогда
        Объект.ГосНомер = "";
        Сообщить("Введите нормер заново");
    КонецЕсли
КонецПроцедуры

Функция ЭтоБуква(с)
    Возврат с>="А" И с<="Я";
КонецФункции

Функция ЭтоЦифра(с)
    Возврат с>="0" И с<="9";
КонецФункции

Функция ГодныйНомер(стр)
    Для й=1 По СтрДлина(стр) Цикл
        с=ВРег(Сред(стр, й, 1));
        Если (й=1 ИЛИ й=5 ИЛИ й=6) И НЕ ЭтоБуква(с) Тогда
            Возврат Ложь;
        ИначеЕсли ((й>=2 И й<=4) ИЛИ (й=7 и й=8)) И НЕ ЭтоЦифра(с) Тогда
            Возврат Ложь;
        КонецЕсли;
    КонецЦикла;
    Возврат СтрДлина(стр)=8;
КонецФункции

вот так проканало
160 kotokent
 
29.01.14
14:42
только проблема осталась обработкой
161 kotokent
 
29.01.14
14:43
чтобы проверка выполнялась даже в случаезаписиэлемента универсальной обработкой
162 Wobland
 
29.01.14
15:39
семь часов на реализацию соответствия шаблону. ещё и не самым оптимальным способом. ничо так, мне нравится. какой же ж счёт можно было б клиенту выкатить? ;)
163 catena
 
29.01.14
15:45
(113)Ты уверен, что твоя специальность информатика?
164 Wobland
 
29.01.14
15:55
(163) вот на защите-то конфуз будет..
165 МишельЛагранж
 
29.01.14
16:00
да лан, на фоне всего остального - человек еще старается что-то сделать....
65% одноэсников вообще не стараются. Ни капельки.
166 catena
 
29.01.14
16:01
Я уже не говорю о шедеврах

Процедура ГосНомерОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка)
    Строка = Объект.ГосНомер;
    Строка = "[A-Z] [0-9][0-9][0-9] [A-Z][A-Z]";


и

"обработчик не видит текст"
167 МишельЛагранж
 
29.01.14
16:04
(166) они имел ввиду, что код, который он прописал в процедуре, не выполняется.
168 МишельЛагранж
 
29.01.14
16:06
... так молодец, добил задачу :D
Правда, без Вобланда все б затухло. А тут, глядишь, втянется по-тихоньку...
Просто человек вообще не воспринимает эти ваши одноэсы как среду программирования, а как - экзотику с бананами )))
169 Wobland
 
29.01.14
16:06
(165) он хоть как-то старался, потому что мне никто не мешал ;)
170 EvgeniuXP
 
29.01.14
23:25
вот е-мае, (39) и (40) перепрочти еще раз и гемороя столько не надо писать :) три строки кода :)))
171 Wobland
 
30.01.14
04:16
(170) маску скажешь? в(49) надо смотреть
172 Любопытная
 
30.01.14
06:09
(168) у нас на специальности "прикладная информатика в экономике" 1с предприятиеи преподавалась на практических занятиях в одном из курсов экономики. И там давалось достаточно, чтобы иметь представление о 1с как о среде разработки. И если человек на дипломе не имеет представления о таких элементарных вещах, о каких спрашивает ТС, это значит, что образование его ну совсем коридорное. С таким дипломом дальше только на рынке фруктами торговать
173 kotokent
 
30.01.14
06:11
только проблема осталась обработкой, чтобы проверка выполнялась даже в случае записи элемента универсальной обработкой или она с этим кодом будет выполняться?
174 Wobland
 
30.01.14
06:13
(172) было высказано мнение, что на самом деле специальность автора вовсе не "прикладная информатика", а сам автор добросовестно заблуждается ;)
175 Wobland
 
30.01.14
06:14
(173) ты вообще в курсе, что форма - это прокладка между БД и юзером? технически вполне осуществимо вести всяческие учёты, совсем не открывая форм
176 kotokent
 
30.01.14
06:17
(175) ну через БД
177 Любопытная
 
30.01.14
06:20
(176) при записи проверяй, что у тебя в реквизите объекта. И если что-то не так, то шли лесом всех меняльщиков
178 Любопытная
 
30.01.14
06:21
Правда есть еще ОбменДанными.Загрузка = Истина...
179 Wobland
 
30.01.14
06:21
(177) перед
(178) а чо? пускай будет
180 kotokent
 
30.01.14
06:27
(179) (178) я думал мне надо не на &клиенте, а &На сервере писать это...

(178) эту коменду в конце кода вставить?
181 Wobland
 
30.01.14
06:28
(180) чем управляемый режим отличается от обычного?
182 Любопытная
 
30.01.14
06:29
(180) я думаю, тебе надо пойти и почитать документацию. Понять, что такое объект БД и чем он приципиально отличается от формы. Выяснить, что же означают магические слова НаКлиенте и НаСервере, к чему они относятся и как используются.
В общем, шли бы вы, молодой человек, учиться. Ну или диплом пишите исключительно теоретический какой-нибудь
183 kotokent
 
30.01.14
06:33
(182) вот я и учусь
184 kotokent
 
30.01.14
06:36
(181) управляемым режимом управляешь ты, а обычный управляет тобой
185 Wobland
 
30.01.14
06:44
интересно, а есть в науке понятие nullus cerebrum?
186 Wobland
 
30.01.14
06:45
как-то нет у меня сегодня настроения нянькаться. а тасовать предлагаемые куски кода (если за автора кто-то сделает) - тот ещё трэш
187 kotokent
 
30.01.14
06:47
(186) ты мне скажи просто как сделать, а я сам додумаюсь
188 Wobland
 
30.01.14
06:48
(187) ни разу не замечал, что я тебе иногда повторяю что-то? иногда даже одинаковыми словами
189 kotokent
 
30.01.14
06:52
(188) замечал... значит я тебя сейчас где то не понял
190 Wobland
 
30.01.14
06:59
все слова названы, есть куча материала к осмыслению. не бывает программистов без способности читать, осмысливать прочитанное и мыслить вообще. да, это больно и неприятно, но без этого не получится.
да и к пятому курсу уже пора уметь учиться
191 kotokent
 
30.01.14
07:04
(190) скажи где именно ты мне сказал про защиту от обработки?
192 Wobland
 
30.01.14
07:05
(191) -> (31), (48) ну и далее по ветке
193 kotokent
 
30.01.14
07:11
(192) будем думать
194 Wobland
 
30.01.14
07:25
Ле-Цзы учился стрелять. Попав в цель, попросил указаний у Стража Границ. Страж Границ задал вопрос:
   — Знаешь ли ты, почему попал в цель?
   — Не знаю.
   — Значит, ты ещё не овладел мастерством.
   Ле-Цзы ушёл, упражнялся три года и снова явился с докладом. Страж Границ спросил:
   — Знаешь ли ты, почему попал в цель?
   — Знаю, — ответил Ле-Цзы.
   — Теперь ты овладел мастерством! Храни и не забывай! Поступай так, изучая не только стрельбу, но и себя самого, и царство. Ибо мудрый человек познаёт не существование и гибель, а их причины.
195 kotokent
 
30.01.14
07:57
(194) во как :)
196 МишельЛагранж
 
30.01.14
20:03
(172)С таким дипломом дальше только на рынке фруктами торговать
- несмотря на over 10 лет программирования (10 - только на 1С) некоторые, не найдя у меня диплома а-ля как у ТС, указывают сразу на дверь.
197 МишельЛагранж
 
30.01.14
20:05
(184) управляемым режимом управляешь ты, а обычный управляет тобой
- ваши бы слова, да Нуралиеву в глаз.