Имя: Пароль:
1C
1С v8
Как проверить что Ид нормальный для ЗначениеИзСтрокиВнутр(Ид)?
0 Помогите
 
30.05.12
11:42
Как проверить что Ид нормальный для ЗначениеИзСтрокиВнутр(Ид) чтобы не возникло ошибочной ситуации если в строке Ид не внутреннее представление данных?
1 Помогите
 
30.05.12
11:43
Попытку не предлагать
2 Помогите
 
30.05.12
12:16
Ап
3 H A D G E H O G s
 
30.05.12
12:17
Зачем?
4 Maxus43
 
30.05.12
12:19
ТипЗнч(ЗначениеИзСтрокиВнутр(Ид)) ?
5 quest
 
30.05.12
12:19
если попытку не предлагать, то разбирать { и } самому
6 Maxus43
 
30.05.12
12:20
да и криво так помоему, через ЗначениеИзСтрокиВнутр. задачу опиши лучше, ГУИД лучше передавать строкой, 36 символов.
7 Помогите
 
30.05.12
12:28
(4)  Так не сработает, ошибка возникнет до того как ТипЗнч выполнится
8 Помогите
 
30.05.12
12:30
(6) Как ГУИД получить?
9 Помогите
 
30.05.12
12:47
Ап?
10 Maxus43
 
30.05.12
12:48
(8) Ссылка.УникальныйИдентификатор()
11 quest
 
30.05.12
12:49
ты бы задачу подробней описал. может другое решение есть
12 Maxus43
 
30.05.12
12:49
Попытка Исключение в помощ при (8), задача не ясна
13 Помогите
 
30.05.12
12:52
(11) Мне задали на зачет сделать получение в одном текстовом поле идентификатора ссылки на элемент справочника и ввод вручную его в другое текстовое поле пользователем, с проверкой что введенный текст правильный, не используя попытку/исключение.
Про ГУИД интересно, как им пользоваться?
14 Помогите
 
30.05.12
12:52
(10) А, понятно.
15 Maxus43
 
30.05.12
12:56
(13) ГУИД не поможет, при преобразования строки в Новый УникальныйИдентификатор(СтрокаГуид) - тоже выдаст ошибку если не правильно ввели
16 quest
 
30.05.12
12:57
в первом окошке -
Ссылка = справочник.номенклатура.найтиПонаименованию("искомаяНоменклатура")
сообщить(ссылка.Уникальныйидентификатор());

в вотром окошке
значение = то что скопировали из первого окошка
ссылка = Справочник.Номенклатура.ПолучитьСсылку(новый УникальныйИдентификатор(значение));
если ссылка.пустая() тогда
сообщить("не нашли");
иначе
сообщить("нашли");
конецЕсли

как-то так примерно
17 Помогите
 
30.05.12
13:01
(16)А, так не пойдет. Потому что справочник может быть любой, не только Номенклатура. Поэтому придется еще и имя справочника передавать, это хреново
18 Maxus43
 
30.05.12
13:09
видимо в сторону (5) копать, парсить надо. чо за зачет такой?
19 Помогите
 
30.05.12
13:21
(18) Зачет по 1С )))
20 Maxus43
 
30.05.12
13:22
Текст вопроса полный до запятых в студию
21 DrShad
 
30.05.12
13:22
(19) звездишь, нет у нас никаких зачетов
22 Помогите
 
30.05.12
13:26
(20) Текст очень большой, и задачу я уже сделал. Просто мне дополнительно попросили вот такую проверку сделать которой не было в тексте задачи
(21) Вы тут при чем вообще?
23 Maxus43
 
30.05.12
13:28
(22) Преподавателю - незачет
24 DrShad
 
30.05.12
13:32
ни один даже самый продвинутый юзверь не сможет набрать с клавы гуид, а уж тем более ЗначениеВСтрокуВнутр(), которое в отличие от гуида имеет разную длину для разных объектов
25 Помогите
 
30.05.12
13:33
(24) это не важно
26 DrShad
 
30.05.12
13:35
(25) смысл тогда это реализовывать, если шанс что введут правильно 79 непонятных символов равен 0,0000000000001 процента?
27 Maxus43
 
30.05.12
13:36
(26) да такой же смысл, когда ты в школе считал производные. пригодилось в жизни? это ж зачет... но препод не понимает о чем говорит помоему
28 Помогите
 
30.05.12
13:36
(26) Для проверки знаний
29 DrShad
 
30.05.12
13:37
(27) ну а как тогда зачеи сдавать? при тестировании всегда будет неверный ввод
30 DrShad
 
30.05.12
13:38
имхо лучше проверять знания на реальных задачах, чем на каком-то бреде
31 Maxus43
 
30.05.12
13:38
(29) препод копи-паст между окнами сделает.
З.ы. тупо сравнить полеВвода1 и ПолеВвода2 не вариант?)
32 Maxus43
 
30.05.12
13:39
>>получение в одном текстовом поле идентификатора ссылки на элемент справочника и ввод вручную его в другое текстовое поле пользователем, с проверкой что введенный текст правильный, не используя попытку/исключение.
Да, решение в (31). сравнивай строки из ГУИДов просто. Абсолютно точное решение задачи
33 DrShad
 
30.05.12
13:40
лучше бы было преобразование строки "Справочник;Номенклатура;0000002516,Печеньки" в реальную ссылку в БД и чтоб для всех объектов
34 Помогите
 
30.05.12
13:40
(29) Тоесть сделать так?:
Функция ПроверкаПравильностиВвода(Строка)
Сообщить("Не верно");
Возврат ложь;
КонецФункции;
35 Помогите
 
30.05.12
13:42
(31) не вариант, поле ввода 1 может быть испорчено во время ввода в поле ввода 2
36 DrShad
 
30.05.12
13:42
(34) не ну если перед глазами есть верный текст и его нужно перенабрать, то шансы набрать правильно резко увеличиваются
37 Maxus43
 
30.05.12
13:42
(35) кто сказал?
38 DrShad
 
30.05.12
13:42
(35) вот как оно блеать может быть испорчено?
39 Maxus43
 
30.05.12
13:43
только чтение поставь там
40 Помогите
 
30.05.12
13:43
(37) теоретически вместо Ctrl+C можно нажать Ctrl+X
41 ptiz
 
30.05.12
13:44
Мне бы тоже решение этой задачи пригодилось.
Пример: работа со ЗначениеИзСтрокуВнутр() в транзакции, где Попытка/Исключение неприменима.
42 Maxus43
 
30.05.12
13:44
(40) Всё генита... Гениальное - просто, только чтение, сравнивай строки ГУИДов. Прпод пусть убъётся об стену если не устроит
43 Помогите
 
30.05.12
13:44
(39) Это не решит задачу проверки правильности ввода. Обман могут раскрыть, тогда я точно на осень останусь
44 DrShad
 
30.05.12
13:45
(43) а в той части задачи огроменной что ты уже сделал нет обманов?
45 Maxus43
 
30.05.12
13:45
(43) обман в (34), в (31) - четкое решение написанной задачи
46 Помогите
 
30.05.12
13:45
(44) нет. Всем что там есть я могу гордиться
47 Maxus43
 
30.05.12
13:46
(46) тока сюда код гордости не пиши, а то заклюют)
48 Помогите
 
30.05.12
13:46
(45) Сравнивать поля ввода не вариант. Поле ввода 1 может быть скопировано в блокнот, потом форма закрыта и открыта заново, и поле будет пустым.
49 Помогите
 
30.05.12
13:47
(47) И не думаю писать
50 DrShad
 
30.05.12
13:47
(47) +100500
51 DrShad
 
30.05.12
13:47
(48) тогда в (5) самы верный ответ
52 Maxus43
 
30.05.12
13:48
(41) пока идей нет. помоги автору сдать зачет - способ найдёш)
53 Maxus43
 
30.05.12
13:49
кстати ЗначениеИзСтрокуВнутр - достаточно тяжёлая функция, отказываюсь от неё где есть другие варианты
54 Buster007
 
30.05.12
13:52
(53) ща ) протестирую и выложу, если правильно )
55 Buster007
 
30.05.12
13:59
&НаКлиенте
Процедура ПроверитьГуид(Команда)
   
   ГУИДСсылки = ЛюбаяСсылка.УникальныйИдентификатор();
   
   ПроверитьГУИДСервер();
   
КонецПроцедуры

Процедура ПроверитьГУИДСервер()
   
   СтрокаПредставление = ЗначениеВСтрокуВнутр(ГУИДСсылки);
   
   СтрокаПредставлениеВведенногоГУИДа = ЗначениеВСтрокуВнутр(ПроверочныйГУИД);
   
   Если НЕ СтрокаПредставление = СтрокаПредставлениеВведенногоГУИДа тогда
       Сообщение = Новый СообщениеПользователю;
       Сообщение.Текст = "Не совпадает!";
       Сообщение.Сообщить();
   КонецЕсли;    
   
КонецПроцедуры

где ГУИДСсылки - тип Строка, поле ввода. Показывает уникальный идентификатор.
ПроверочныйГУИД - тип Строка, поле ввода. Сюда пользователь перепечатывает то что видит.

как-то так вроде.
56 vde69
 
30.05.12
14:00
решений довольно много, счас накидаю
57 Buster007
 
30.05.12
14:02
СтрокаПредставление = ЗначениеВСтрокуВнутр(ГУИДСсылки);
не, вот это можно заменить на
СтрокаПредставление = ЗначениеВСтрокуВнутр(ЛюбаяСсылка.УникальныйИдентификатор());
так будет правильней вроде
58 vde69
 
30.05.12
14:03
1. прямой доступ к таблицам и поиск в них
2. куда более приятное - это замена UID а в сущестующем обьекте и дальнейшее сравнение типа "Ссылка.Сылка = Null"
59 Buster007
 
30.05.12
14:13
правда я что-то не вижу смысла в использовании ЗначениеИзСтрокиВнутр или наоборот.
60 Maxus43
 
30.05.12
14:17
тут смысл задачи в том чтоб проверить соответствует ли произвольная строка (т.к. набирается вручную) какому-либо реальному гуиду в базе
61 Maxus43
 
30.05.12
14:18
могут набрать "ЯПоявилсяИзМамы", а Новый УникальныйИдентификатор(Строка) - дас ошибку. Попытка-Исключение нельзя
62 vde69
 
30.05.12
14:35
(61) может задача по 7.7 ??? там формат идентификаторов довольно простой, можно распарсить и выцепить отдельно тип и значение
63 Maxus43
 
30.05.12
14:39
(62) имхо преподаватель ставя такую задачу не понимает о чем говорит) может он бывший клюшечник... в 8-ке это тяжело уже сделать
64 Maxus43
 
30.05.12
14:42
не обязательно ГУИД, в нём нет типа тем более...
даже если юзать XMLСТрока(Ссылка) - там всё есть, но парсить тяжело
65 Maxus43
 
30.05.12
14:49
Автор, попробуй
XMLСтрока(Ссылка.УникльныйИдентификатор());
и проверяй с
XMLЗначение(СтрокаВведённаяЮзером)...
66 vde69
 
30.05.12
14:50
(65) будет ошибка потока, без корректного определения типа не взлетит
67 Maxus43
 
30.05.12
15:00
(66) да, проверил. Просто ошибка преобразования XML правда.
Не зная тип фиг чо сделаем. А если парсить ссылку - только для конкретной базы можно, в разных базах может отличаться определение типа по внутреннему идентификатору
68 Maxus43
 
30.05.12
15:02
Сувалку в студию:
1. Автор мудаг
2. Препод Автора Мудаг
3. Мистяне Мудаги, не могут придумать ничо
69 Помогите
 
31.05.12
05:59
4. 1С 8 Мудаг
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn