Имя: Пароль:
1C
 
Подскажите как программно установить проверку уникальности кода в справочни
0 Platon
 
11.10.04
08:54
Необходимо изменить коды в одной из групп справочника но чтобы они были уникальны для всего справочникавопрос как это сделать.
Метод УстановитьНовыйКод(<префикс>) не проверяет на уникальность во всём справочнике по крайней мере если цикл внутри группы

   Если спр.НайтиПоНаименованию("Запчасти ОГМ",0,1) = 0 тогда
       Сообщить("Не найден");
       Возврат;
   Иначе
       Род=спр.ТекущийЭлемент();
   КонецЕсли;
   спр.ПорядокРеквизита("НомерР3");
   спр.ИспользоватьРодителя(Род);
   спр.ВыбратьЭлементы();
   Пока спр.ПолучитьЭлемент()=1 Цикл    
   спр.УстановитьНовыйКод("52");
спр.Записать();
КонецЦикла;
1 Diter
 
11.10.04
09:03
(0) Не может такого быть. чтобы УстановитьНовыйКод() давал дубль кода. Проверь ещё раз.
2 Diter
 
11.10.04
09:06
Может у тебя уже выбрана разрядность кода (число символов в коде)?
3 Platon
 
11.10.04
09:10
Я проверил и УстановитьНовыйКод()действительно присвоил существующий код.
Наверное дело в том что если присваиваеш код после ИспользоватьРодителя то он и контролирует уникальность внутри родителя.
Но как с этим боротся? :(
4 Diter
 
11.10.04
09:16
Как у тебя стоит уникальность кода в конфигураторе? В пределах подчинения или сквозная?
5 Diter
 
11.10.04
09:16
Всётаки проверь (2)
6 Platon
 
11.10.04
09:17
Разрядность кода по моему устанавливается толи по коду группы толи по коду первого элемента. Я меняю коды у уже существующих элементов с кодом тоже на 52.
7 Шмисный
 
11.10.04
09:20
у тя проблемы....
8 Diter
 
11.10.04
09:20
Ты не понял. Сколько у тебя символов разрешено в коде? Сколько занято сейчас? Может у тебя просто некуда добавлять "52" с сохранением уникальности.
9 F427
 
11.10.04
09:37
фигня какая то (с) Бекас...
10 Platon
 
11.10.04
09:38
(8)Да нет хватит. В справочнике элементов примерно 8000 из них чуть меньше 3000 с префиксом 52  а общая длина кода 8 символов т.е. ещё примерно 7000 кодов можно сгенерить с сохранением уникальности  только с префиксом 52 т.е. 52****
11 Diter
 
11.10.04
09:42
Тип кода?
12 Platon
 
11.10.04
09:50
(11)Текстовый
13 Diter
 
11.10.04
10:00
Раз тип текстовый, то разрядность у тебя  при вводе префикса номера уменьшается на два символа. Т.е. вместо 8 получается 6. если первые две цифры не "00" то будет возникать косяк с кодом (точнее с его уникальностью).
14 Platon
 
11.10.04
11:05
Похоже остаётся один вариант я сперва отключу контроль уникальности потом назначу всем элементам код равный "" затем в новом цикле назначу новый код как мне надо и потом в новом цикле проверю уникальность т.е если в друих родителях попадётся ещё одинаковый код то я снова изменяю код только у одного элемента
Может можно проще?
Программист всегда исправляет последнюю ошибку.