Имя: Пароль:
1C
 
уникальность кода
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
Всё получилось ...:))))пасиба всем за идеи..всех целую!
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан