![]() |
![]() |
![]() |
|
уникальность кода | ☑ | ||
---|---|---|---|---|
0
Julietta
25.10.05
✎
11:26
|
Подскажите,как программно можно определить уникальность кода при вводе нового элемента справочника?
|
|||
1
ZolotarevAA
25.10.05
✎
11:32
|
(0) Попробовать поискать объект с таким кодом в БД :)
|
|||
2
Julietta
25.10.05
✎
11:36
|
Пробую,недостаточно этого условия,какие еще предложения?:)
|
|||
3
ZolotarevAA
25.10.05
✎
11:38
|
(2) В каком смысле "недостаточно" ?
Объект с указанным кодом в БД или есть, или его нет совсем. Тут ошибиться невозможно. (С) (Винни Пух). |
|||
4
колодина
25.10.05
✎
11:39
|
как это - недостаточно? не находит элемент с таким кодом, а на самом деле он есть?
|
|||
5
ottto
25.10.05
✎
11:39
|
Методом рупора
|
|||
6
Julietta
25.10.05
✎
11:40
|
Вот так?
РезультатПоиска=Справочники.Контрагенты.НайтиПоКоду(Код); Если (РезультатПоиска.Пустая()=Ложь) тогда Предупреждение("Запись с кодом " + Код + " уже существует в справочнике!",4); Отказ = Истина; ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.Код; |
|||
7
ZolotarevAA
25.10.05
✎
11:43
|
(6) Используй условие
Если Не(РезультатПоиска=Неопределено) тогда |
|||
8
ZolotarevAA
25.10.05
✎
11:45
|
2 (6) В свете приведенного кода странным выглядит замечание (2).
|
|||
9
Julietta
25.10.05
✎
11:47
|
Я жешь говорю вам,что если в текущей строке табличного поля такой же код то неверное условие это...неспрашивала если бы всё красиво было
|
|||
10
ottto
25.10.05
✎
11:49
|
Метод рупора.
Попытка Исключение КонецПопытки; |
|||
11
ZolotarevAA
25.10.05
✎
11:50
|
(9) Прокомментируй пжлст. (4)
|
|||
12
Sonic_vlad
25.10.05
✎
11:51
|
что то я не понял (9)
|
|||
13
Sonic_vlad
25.10.05
✎
11:52
|
можно использовать НайтиСтроки(), если строк больше 1 то тогда код существует.
но это условие если ты вводишь в форме списка элемент |
|||
14
Julietta
25.10.05
✎
11:54
|
Ну смотрите,в справочнике есть запись с кодом например 302,просто открываем форму элемента этой записи нажимаем ОК и всё,сразу выпадет наше условие ,но это неверно,другой случай когда новый элемент,там конечно всё сработает как надо,значит всетаки недостаточно проверить только на поиск..надеюсь так понятно :)
|
|||
15
колодина
25.10.05
✎
11:56
|
так Вам надо при добавлении проверять элемента? вы и проверяйте тогда....
|
|||
16
Sonic_vlad
25.10.05
✎
11:58
|
емае
|
|||
17
Julietta
25.10.05
✎
11:58
|
я проверяю ПередЗаписью
|
|||
18
Sonic_vlad
25.10.05
✎
11:58
|
Процедура ПриОткрытии()
Если ЭтоНовый() тогда проверитьуникальностьКода() |
|||
19
Julietta
25.10.05
✎
12:02
|
А если изменение ?
И почему нельзя в событии ПередЗаписью это сделать? |
|||
20
Sonic_vlad
25.10.05
✎
12:02
|
Только что проверил-
Процедура ПередЗаписью(Отказ) Найдено=Справочники.Контрагенты.НайтиПоКоду(Код); КонецПроцедуры если код уникален то Найдено =Неопределено |
|||
21
Sonic_vlad
25.10.05
✎
12:04
|
но это в случае ввода нового элемента, а так при открытии запонимай код, и если СтарыйКод<>НовыйКод тогда проверяй
|
|||
22
Julietta
25.10.05
✎
12:07
|
(21) а подругому никак да?
|
|||
23
Sonic_vlad
25.10.05
✎
12:08
|
ну сравнивай - НайтиПокоду и НайтиПоНаименованию
|
|||
24
Sonic_vlad
25.10.05
✎
12:11
|
можно еще запросом -
"ВЫБРАТЬ | Контрагенты.Ссылка |ИЗ | Справочник.Контрагенты КАК Контрагенты |ГДЕ | Контрагенты.Ссылка <> &Ссылка | И Контрагенты.Код = &Код" примерно так |
|||
25
Julietta
25.10.05
✎
12:13
|
(23)бырр..нехочу так....вот как то в семерке всё было очень просто
Если (Спр.НайтиПоКоду(Код,0)=1 ) и (Спр.ТекущийЭлемент()<>ТекущийЭлемент()) тогда Предупреждение(""); КонецЕсли; и всё работало..:) |
|||
26
Sonic_vlad
25.10.05
✎
12:13
|
так это тоже самое :))
|
|||
27
Julietta
25.10.05
✎
12:16
|
ты про запрос?
|
|||
28
Sonic_vlad
25.10.05
✎
12:17
|
Надено = Спр.НайтиПоКоду(Код)
Если Надено<>Ссылка тогда |
|||
29
Sonic_vlad
25.10.05
✎
12:17
|
(27) угу про запрос
|
|||
30
Sonic_vlad
25.10.05
✎
12:19
|
+ (28) НО!!! если у тебя первым найдется твой элемент то условие не сработает
|
|||
31
Julietta
25.10.05
✎
12:19
|
Блин ненравиться мне это НО :))
|
|||
32
Sonic_vlad
25.10.05
✎
12:21
|
(31) юзай запрос :)
|
|||
33
Sonic_vlad
25.10.05
✎
12:23
|
(25) и что в 7ке твое условие срабатывало без всяких НО?
|
|||
34
Julietta
25.10.05
✎
12:28
|
Да работает,везде у нас эти усовия стоят и всё работает,давным давно :)
ща поюзаю |
|||
35
Sonic_vlad
25.10.05
✎
12:29
|
(34) смотри (30), будет одинаково для обоих платформ
|
|||
36
Julietta
25.10.05
✎
12:31
|
Ага,пасибо большое
|
|||
37
Sonic_vlad
25.10.05
✎
12:34
|
ответь на (33)
|
|||
38
ZolotarevAA
25.10.05
✎
13:18
|
(25) Или со мной что-то не так, или еще с кем-то.
Указанный код для 7.7. не содержит !ничего такого, что нельзя сделать в 8.0. Абсолютно. Можно и через запрос, можно и без запроса. Не вижу ни одного места, вызывающего сомнения. |
|||
39
Sonic_vlad
25.10.05
✎
13:21
|
(38) указанный код как в 77 так и в 8ке правильно работать не будет
|
|||
40
ZolotarevAA
25.10.05
✎
13:24
|
(39) Потому что перед записью нового элемента ТекущийЭлемент() отсутствует.
А насчет "правильно" - так это как задачу поставить. |
|||
41
Sonic_vlad
25.10.05
✎
13:28
|
ну если у тебя есть у же один справочник с кодом 001, ты мееняешь уже у записанного данного элемента код на 001, какова вероятность того что НайтиПоКоду найдет первый элемент а не текущий?
з.ы. вопрос был проверить код при изменении кода у записанного элемента |
|||
42
Sonic_vlad
25.10.05
✎
13:31
|
хотя..чето я торможу..элемент ведь еще не записан и соответственно код у него старый :)
|
|||
43
ZolotarevAA
25.10.05
✎
13:32
|
(41) Предлагаю не менять код у уже записанного справочника. По-моему, нет таких оснований (исключая процедуру перекодировки всего справочника, при добавлении, скажем, префикса).
|
|||
44
Sonic_vlad
25.10.05
✎
13:33
|
(43) ну это ты (0) скажи :)
|
|||
45
ZolotarevAA
25.10.05
✎
14:03
|
(44) Лучше не буду. Вообще забавно, что ответ на ветку содержится в первом же комментарии, но в силу непреодалимых обстоятельств я пишу уже 45-й комментарий.
Завязываю. |
|||
46
Julietta
26.10.05
✎
09:06
|
Всё получилось ...:))))пасиба всем за идеи..всех целую!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |