Имя: Пароль:
1C
1C 7.7
v7: Почему не работает код?
0 Boleev v2
 
09.10.12
10:12
Есть вот так код    

Если (ИмяПользователя()="Пользователь_1")
   или    (ИмяПользователя()="Пользователь_2")
   или    (ИмяПользователя()="Администратор")
   или    (ИмяПользователя()="Бухгалтер")
   Тогда

но почему то условие срабатывает только когда
(ИмяПользователя()="Администратор")
(ИмяПользователя()="Бухгалтер")
1 Starhan
 
09.10.12
10:14
Значит код работает.
2 ale-sarin
 
09.10.12
10:14
Может СокрЛП поможет
3 Boleev v2
 
09.10.12
10:17
(1) 50/50
4 Somebody
 
09.10.12
10:19
(3) в отладчике посмотри , не бывает 50/50
5 dk
 
09.10.12
10:20
ну еще Врег иногда помогает к обеим частям условия
6 GLazNik
 
09.10.12
10:21
А вообще проверка на имя пользователя это моветон
7 ЧеловекДуши
 
09.10.12
10:23
ГуаноКод в процессе :)
8 Starhan
 
09.10.12
10:23
(3)100% просто в других случаях имя пользователя не равно выше перечисленным. (Убедись в отладчике)

п.с.
Кстате даже если имя не равно выше перечисленным код работает!
9 ЧеловекДуши
 
09.10.12
10:24
(3)Значит вам в дворники :)
10 aka AMIGO
 
09.10.12
10:28
Если (Найти(ИмяПользователя(),"Пользователь_1")>0)
а так короче:
Если (Найти(ИмяПользователя(),"Пользователь")>0)
11 Boleev v2
 
09.10.12
10:28
(6,7) спокуха, это временное явление
(9) дык я есть дворник, убирался под окнами офиса, спросили компьютер знаю, ответил, что да, вот сейчас мучаюсь.
12 Джинн
 
09.10.12
10:29
За такой код увольнять нужно с волчьим билетом.
13 Boleev v2
 
09.10.12
10:29
(12) не занудствуй, см (11)
14 GLazNik
 
09.10.12
10:30
(11) нет ничего более постоянного, чем временное (с) не помню кто :)
15 Boleev v2
 
09.10.12
10:30
(12) не знаешь как сделать, так и скажи.
16 Boleev v2
 
09.10.12
10:31
(14) Энштейни вроде
17 GLazNik
 
09.10.12
10:32
(15) да собственно уже все сказали... проблема или в разных регистрах или пробелах... а еще может быть имя пользователя указано с использованием английских букв (a,o,e)
18 Boleev v2
 
09.10.12
10:34
(17) прописывал пользователю имя заново так что исключено
19 Somebody
 
09.10.12
10:35
(18) значит, являешься свидетелем чуда, если исключено.
20 Boleev v2
 
09.10.12
10:35
(19) аха. ни много не мало.
21 Джинн
 
09.10.12
10:36
(15) Вы таки считаете, что сделать через жопу - это лучшее решение?
22 GLazNik
 
09.10.12
10:37
(18) Истина где-то рядом (с) агент Малдер
23 Boleev v2
 
09.10.12
10:38
(21) чувак, ты не в теме.
24 Джинн
 
09.10.12
10:41
(23) Боюсь, что это Вы не в теме.

Хотя в Вашем подходе есть и плюс - Вы всегда будете обеспечены работой. При каждом изменении имени пользователя непременно нужно будет ковырять в 100500 местах кода, иначе ни хрена работать не будет. Вас просто не смогут уволить.
25 mr_K
 
09.10.12
10:42
(12) Такой код с точки зрения ITSM/ITIL может быть в качестве "workaround", т.е. иметь права на существование ))
А вы сразу на человека накинулись
26 Boleev v2
 
09.10.12
10:43
(24) ты не понимаешь о чем ты говоришь. поступать надо исходя из ситуации, а это приходит с опытом.
27 lucifer
 
09.10.12
10:43
перед условием
сообщить(ИмяПользователя());

и смотри что не так
28 GLazNik
 
09.10.12
10:44
(27) а отладчик, о котором писали в (4), уже религия запрещает использовать?
29 Boleev v2
 
09.10.12
10:46
(28) в том то и дело, что в отладчике все ок
(27) выводит мне имена указанные в (0)
30 Zhuravlik
 
09.10.12
10:46
(1)
стр = "Пользователь_1, Пользователь_2, Администратор, Бухгалтер";
Если Найти(стр, СОКРЛП(ИмяПользователя())) > 0 Тогда
...
Иначе

Сообщить("Не найден пользователь """ + ИмяПользователя() + """");

КонецЕсли

Кавычки для того, чтобы увидеть - есть ли пробелы в имени. Если не находит, значит ИмяПользователя другое, или у тебя еще что-то там в остальной части кода.
Т.е. что-то другое не работает.
31 GLazNik
 
09.10.12
10:47
Тогда (19) прав. Можешь организовывать новую секту...
32 Джинн
 
09.10.12
10:48
(26) Это не опыт, это руки.

(30) Либо символ на латинице внутри имени :)
33 mr_K
 
09.10.12
10:51
СОКРЛП(ВРЕГ(СтрЗаменить(СтрЗаменить(...)))) и меняешь все схожие по написанию англ. и русские буквы.
34 Boleev v2
 
09.10.12
10:54
(32) вот зануда. Начальство поставило задачу немедленно закрыть доступ к одной из обработок. Сменой прав это можно сделать, но немедленно не получится, потому как на названии права описан доступ ко многим реквизитам в базе.
35 mrParadox
 
09.10.12
10:56
Динамическим обновлением базы балуешься?
36 Boleev v2
 
09.10.12
10:58
(35) сэмь сэмь
37 GLazNik
 
09.10.12
11:00
(36) в клюшках тоже есть для этого возможности... правда не официальные :)
(34) а вообще... нефиг идти на поводу у начальства... мало ли что оно сказало. Делать нужно сразу правильно и на века.
38 Джинн
 
09.10.12
11:02
(34) Ставлю бутылку кефира, что Вы затем не вернетесь и не исправите этот быдлокод. Типа "работает и Бог с ним... нужно немедленно другие задачи решать...". Через полгода конфигурация превратится в небольшую помойку. И кому-то подвалит счастье ее разгребать.

PS Правильные вещи надо делать правильно
39 Boleev v2
 
09.10.12
11:09
(37) когда перед тобой лежит паяльник в руку толщиной спорит мало кому захочется
40 Boleev v2
 
09.10.12
11:10
(38) по себе людей не судят
41 zak555
 
09.10.12
11:10
(0) используй ПравоДоступа
42 PuhUfa
 
09.10.12
11:16
(39) ты пишешь код под угрозой паяльником? -)))
43 GLazNik
 
09.10.12
11:19
(42) да врет он все...
а по существу уже все сказали. и условие работает. И скорее всего таки ИмяПользователя()<>"Пользователь_1".
44 VladZ
 
09.10.12
11:20
(0) Лучше так не делать.
45 hhhh
 
09.10.12
11:35
всё-таки символ подчеркивания видимо лишний.
46 VladZ
 
09.10.12
11:49
+44 Попробую объяснить почему... Итак, начнем сначала: любая задача должна решаться в широком смысле. Задача в (0) звучит так "Дать определенным пользователям определенную возможность". Сравните с трактовкой "Дать пользователям Администратор, Бухгалтер и Пользователь определенную возможность". Допустим, быстрее сделать, как в (0). Но это впечатление обманчиво. Да и быстрее не значит лучше. Допустим, фирма растет и развивается, и то что нужно было только "Администратору, Бухгалтеру и Пользователю" вдруг стало нужно "Менеджеру, Кладовщику" и еще кому-нибудь. И что делать? Лезть в код и снова править??? Бесстолково и бессмысленно... Как в анекдоте про "нелепые делодвижения"...
47 Boleev v2
 
09.10.12
11:54
(46) еще один. в данном случае речь по универсальность не идет
48 palpetrovich
 
09.10.12
12:05
(47) имена пользователей в код сам писал или копи/пасте из "Администрирование-Пользователи" в конфигураторе?
49 Boleev v2
 
09.10.12
12:08
(48) сначала копипастел. потом когда перестала работать сам писал.
Потому отключил внешнию 1срр  и все заработало
50 palpetrovich
 
09.10.12
12:08
а вообще, если не хочешь курочить конфигурацию создавая нечто типа справочник ПраваПользователей, заведи текстовый файл, откуда и будешь читать пользователей и определять их доступ. И дешеов и сердито, в любой момент можешь убрать или дать доступ ...главное спрятать  его подальше от других ;)
Основная теорема систематики: Новые системы плодят новые проблемы.