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

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

</code>

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

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

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

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