Имя: Пароль:
1C
1C 7.7
v7: Непонятная ситуацция с кодом в 7.7
0 lanc2233
 
26.02.15
00:06
Скажите, как в такой функции может в принципе возникать ошибка "Код не уникален" ?

Функция ПолучитьЦвет(КодЦвета,Цвет)
    
    Спр = СоздатьОбъект("Справочник.Цвета");
    Если Спр.НайтиПоКоду(КодЦвета) = 0 Тогда
        Спр.Новый();
        Спр.Наименование = Цвет;
        Спр.Код = КодЦвета;
        Спр.Записать();
    КонецЕсли;
    Возврат Спр.ТекущийЭлемент();
    
КонецФункции
1 Злопчинский
 
26.02.15
00:08
Кривые руки залезли в код спавочника и убрали лидирующие нули при текстовом коде
Или исчерпался разрядность при числовом коде
2 Новый участник
 
26.02.15
00:08
НайтиПоКоду сколько имеет параметров?
Справочник иерархический?
3 Злопчинский
 
26.02.15
00:10
Первая причина упрощенно говоря ведет к переполнению разрядной сетки с отсечением правого символа в результате получается опаж
4 Злопчинский
 
26.02.15
00:11
(2)  сие непринципиально
Потому как сводится к вышеописанному в итоге
5 lanc2233
 
26.02.15
00:12
Справочник пустой, не иерархический.

Понял причину, код в справочнике цифровой а передавалось текстовое значение.
6 Злопчинский
 
26.02.15
00:15
Обучаловка
Например имеем текстовый код длиной три символа
Штано нумереуем
001
002
099
100
101

Теперь какойто колокольчик убрал лидир нули
Получается

001
002
10
11
98
99
Следующти дб 100
Но это не влазит в две позиции зарезервированные как 99 это упрощенно
В результате 100 усекается до двух знаков
Получается 10
Код неуникальный
2 + 2 = 3.9999999999999999999999999999999...