Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Значение поля Код не уникально

Значение поля Код не уникально
Я
   R0mbes
 
31.05.12 - 13:03
Кто может подсказать в чем может быть проблема?
Есть справочник номенклатура, в нем 211 000 позиций , длина кода  = 8 знаков, т.е. еще 2 свободных разряда, но при записи элемента справочника программа ругается что значение поля "Код" не уникально!
   Buster007
 
1 - 31.05.12 - 13:04
значит кто-то поменял код вручную )
   Kavar
 
2 - 31.05.12 - 13:04
(1)+1
Делать перенумерацию кодов.
   ale-sarin
 
3 - 31.05.12 - 13:05
(0) Ищите номенклатуру с длиной кода не 8, а меньше.
   Александр_Тверь
 
4 - 31.05.12 - 13:05
(2) хороший совет. Особенно если есть обмен с 10 базами (1С не 1С), и синхронизация по коду.
   R0mbes
 
5 - 31.05.12 - 13:06
(1) а как отследить неверный код ? я делаю сортировку у меня последний элемент 00211....
По идеи должен браться последний и прибавляться 1
   rbcvg
 
6 - 31.05.12 - 13:06
ПоискИЗаменаДублирующихсяЭлементов.epf
   Kavar
 
7 - 31.05.12 - 13:10
(4) Можешь что-то другое предложить? в любом случае перенумеровывать надо, хотя бы начиная с "кривого" элемента.
   R0mbes
 
8 - 31.05.12 - 13:10
(6) дублей нету, только что запустил ее
   R0mbes
 
9 - 31.05.12 - 13:11
(7) так как найти этот кривой элемент ?
   inka
 
10 - 31.05.12 - 13:11
(8) его и не должно было быть. объект же не записывается
   Александр_Тверь
 
11 - 31.05.12 - 13:12
(7) а ты из (0) понял в какой это момент происходит?
Может у него обработка, которая по своему алгоритму выдает номер?
Может у него при обмене в каких-то базах коды совпали...
и т.д. и т.п.
   inka
 
12 - 31.05.12 - 13:12
А если поискать объект с кодов который хотите записать?
   inka
 
13 - 31.05.12 - 13:13
(9) - отсортируйте по коду и поищите коды с длиной меньше 8
   Kavar
 
14 - 31.05.12 - 13:16
(9) При создании нового элемента какой-то код же присваивается? вот его и ищи.
   R0mbes
 
15 - 31.05.12 - 13:19
(14) в отладчике на событии "Перед записью" значение поля код = "   ",
(9) я отсортировал по коду но не могу никак найти код с длиной меньше 8 =(
   R0mbes
 
16 - 31.05.12 - 13:19
(14) как узнать какой код присваивается ?
   inka
 
17 - 31.05.12 - 13:20
(15) - поищите код оканчивающийся на букву
   inka
 
18 - 31.05.12 - 13:20
(16) - Посмотреть :)
   R0mbes
 
19 - 31.05.12 - 13:23
(18) событие "ПриУстановкеНовогоКода" там посмотреть ?
   Vitamax3
 
20 - 31.05.12 - 13:26
Как вариант. Если при создании спр.Номенклатура создается ещё
зависимый справочник - например ЕдиницаИзмерения, и там кто-то пошуровал ручками по коду, то ошибка может иметь отношение ко второму справочнику. ИМХО.
   R0mbes
 
21 - 31.05.12 - 13:27
(20) спасибо за наводку, сейчас гляну )
   R0mbes
 
22 - 31.05.12 - 13:48
(20) не там все чисто (
   Irek-kazan
 
23 - 31.05.12 - 13:50
база случаем не на сиквеле?
   R0mbes
 
24 - 31.05.12 - 13:52
(23) на чем ?))) клиент - серверный вариант работы (база на MSSQL)
   Irek-kazan
 
25 - 31.05.12 - 13:54
ну тогда прямой запрос к базе на предмет задвоения
Select count(code), code
from table
group by code
having count(code)>1
   Случайный прохожий
 
26 - 31.05.12 - 13:56
(25) не проканает. В данный момент в базе нет задвоения. Задвоение создается при попытки записи нового элемента.
   Vitamax3
 
27 - 31.05.12 - 13:56
(25) так он и не может записать дубль
   Vitamax3
 
28 - 31.05.12 - 13:57
(0) какая конфигурация?
   inka
 
29 - 31.05.12 - 13:57
(27) - Все таки поищите код оканчивающийся на букву
   Irek-kazan
 
30 - 31.05.12 - 13:58
Может тады профайлерем посмотреть что пытается записать в базу в момент создания элемента?
 
 
   Случайный прохожий
 
31 - 31.05.12 - 13:59
После сортировки как выглядит код последнего элемента? Полностью напиши (с пробелами и т.п)
   Vitamax3
 
32 - 31.05.12 - 13:59
+(31) и первого
   hhhh
 
33 - 31.05.12 - 14:01
(22) отсортируйте справочник по коду, тогда самый нижный элемент и будет то, что вы ищете.
   R0mbes
 
34 - 31.05.12 - 14:21
Последний элемент : "00211746  "
Первый элемент:     "00000001  "
(29) запустил такую обработку:
<code>

Процедура КнопкаВыполнитьНажатие(Кнопка)
    Запрос = новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    Номенклатура.Код КАК Код
                   |ИЗ
                   |    Справочник.Номенклатура КАК Номенклатура
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    Код";
    Результат = запрос.Выполнить().Выбрать();
    й=0;
    Пока Результат.Следующий() Цикл
        й=й+1;
        Код = Результат.Код;
        Попытка
        
            Номер = Число(Код);
            Код = СокрЛП(Код);
            Если СтрДлина(Код)<8 Тогда
                Сообщить(Код);
            КонецЕсли;    
        
        Исключение
            Сообщить(Код);
        
        КонецПопытки; 
    КонецЦикла; 
    
    сообщить(й);
КонецПроцедуры

</code>

В результате не выдало ошибок. Т.е. все коды можно перевести в число
(30) А как это сделать ?
   R0mbes
 
35 - 31.05.12 - 14:24
(28) конфигурация комплексная автоматизация
   Vitamax3
 
36 - 31.05.12 - 14:24
Попробуй ручками в карточке с последним кодом поставить
00211747 и записать.
   R0mbes
 
37 - 31.05.12 - 14:25
Может и правда дело не в этом справочнике, а в каком то другом ?
   R0mbes
 
38 - 31.05.12 - 14:25
(36) секунду
   Vitamax3
 
39 - 31.05.12 - 14:26
(37) если запишет, то в другом 99% ;)
   R0mbes
 
40 - 31.05.12 - 14:28
записал, потом при следующем создании выдал другую уже ошибку , ура что-то становится яснее:

В данной транзакции уже происходили ошибки
"Не удалось записать единицу хранения остатков: {Справочник.Номенклатура.Форма.ФормаЭлемента.Форма(1396)}: Ошибка при вызове метода контекста (Записать): Значение поля "Код" не уникально"
   Vitamax3
 
41 - 31.05.12 - 14:36
А в (0), что без открытия формы создавал?
   R0mbes
 
42 - 31.05.12 - 14:37
(41) с открытие но ошибка только сейчас выдалась ..
не понимаю где теперь искать концы
   Случайный прохожий
 
43 - 31.05.12 - 14:40
Ищи подвох в единицах хранения остатков :)
   Vitamax3
 
44 - 31.05.12 - 14:44
+(43) повтори свою обработку для справочника ЕдиницыИзмерения
и выдай первый код и последний
   R0mbes
 
45 - 31.05.12 - 14:50
(44) я сделал как ты и сказал  в (36) - присвоил последнему элементу справочника "ЕдиницыИзмерения" код на единицу больше и все заработало, спасибо тебе !!!! Но причину я так и не могу понять, мистика ))

Спасибо всем ! я уже 2 часа вожусь с этой проблемой !!!! если бы не вы... было бы гораздо дольше =)
   Vitamax3
 
46 - 31.05.12 - 14:57
(45) )))  "2 часа вожусь" ветка с 13:03 по 14:50 - быстро ты сдался однако.
   R0mbes
 
47 - 31.05.12 - 15:15
(46) ну мои знания через 30 минут иссякли ! я перепробывал все что знал ) а на этом форуме обитают профи =)) мне это очень нравится !
   Vitamax3
 
48 - 31.05.12 - 15:29
(47) заходи ещё. Набирайся опыта сидя на мисте. Если шефа убедишь )))

P.S. А коды не выложил по ЕдиницыИзмерения ((.
Мистика как то напрягает, может вылезти боком.
   R0mbes
 
49 - 01.06.12 - 00:40
(48) Да босс одобрил это дело, мистика это точно. а коды там ничего подозрительного не было цифры и вначале и в конце...


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.