Код элемента справочника не уникальный!!!
29.04.2009
05:19
#1
Помогите.
В 1С торговля-склад у справочника стоит значение: длина кода 5 символов. В базе был создан справочник под кодом 99999, при создании следущего элемента справочника, предлагается код 10000(при попытке созранится выходит сообщение "код не уникальный!"). Что делать?
с 1 по 99999 используются около 30000 элементов, как сделать чтобы 1С предлагала код из пула 1-99999, из тех что не используется.
Возможно ли сделать кнопку, чтобы 1С предлагала уникальный код?
В 1С торговля-склад у справочника стоит значение: длина кода 5 символов. В базе был создан справочник под кодом 99999, при создании следущего элемента справочника, предлагается код 10000(при попытке созранится выходит сообщение "код не уникальный!"). Что делать?
с 1 по 99999 используются около 30000 элементов, как сделать чтобы 1С предлагала код из пула 1-99999, из тех что не используется.
Возможно ли сделать кнопку, чтобы 1С предлагала уникальный код?
29.04.2009
07:27
#2
Можно сделать миниотчет "СвободныйКод", который будет выводить вам уникальный код из вашего "пула".
29.04.2009
07:32
#3
"Я придумал сделать только такое, а вот как создать "отчет" или включить перебор номеров не знаю - не специалист. Кто нибудь кодом может помочь?
Процедура ПриНажатии()
Код = СчитатьКод;
СчитатьКод = ...
КонецПроцедуры"
Процедура ПриНажатии()
Код = СчитатьКод;
СчитатьКод = ...
КонецПроцедуры"
29.04.2009
08:37
#4
"Процедура ПриНажатии()
ТипКода = Метаданные.Справочник("Номенклатура").ТипКода;
ДлинаКода = Метаданные.Справочник("Номенклатура").ДлинаКода;
Если ДлинаКода = 0 Тогда
Возврат;
КонецЕсли;
МаксКод = """";
СчетчикЦикла = 0;
Для СчетчикЦикла = 1 По ДлинаКода Цикл
МаксКод = МаксКод + "9";
КонецЦикла;
МаскаКода = СтрЗаменить(МаксКод, "9", "0");
МаксКод = Число(МаксКод);
СпрНоменклатура = СоздатьОбъект("Справочник.Номенклатура");
СчетчикЦикла = 0;
Для СчетчикЦикла = 1 По МаксКод Цикл
Если СчетчикЦикла % 100 = 0 Тогда
Проц = Окр(СчетчикЦикла * 100 / МаксКод);
Состояние("Определение кода: " + Проц + "%");
КонецЕсли;
Если ТипКода = "Текстовый" Тогда
ТекКод = Лев(МаскаКода, ДлинаКода - СтрДлина(Строка(СчетчикЦикла))) + СчетчикЦикла;
Иначе
ТекКод = СчетчикЦикла;
КонецЕсли;
Если СпрНоменклатура.НайтиПоКоду(ТекКод) = 0 Тогда
Код = ТекКод;
Прервать;
КонецЕсли;
КонецЦикла;
КонецПроцедуры"
ТипКода = Метаданные.Справочник("Номенклатура").ТипКода;
ДлинаКода = Метаданные.Справочник("Номенклатура").ДлинаКода;
Если ДлинаКода = 0 Тогда
Возврат;
КонецЕсли;
МаксКод = """";
СчетчикЦикла = 0;
Для СчетчикЦикла = 1 По ДлинаКода Цикл
МаксКод = МаксКод + "9";
КонецЦикла;
МаскаКода = СтрЗаменить(МаксКод, "9", "0");
МаксКод = Число(МаксКод);
СпрНоменклатура = СоздатьОбъект("Справочник.Номенклатура");
СчетчикЦикла = 0;
Для СчетчикЦикла = 1 По МаксКод Цикл
Если СчетчикЦикла % 100 = 0 Тогда
Проц = Окр(СчетчикЦикла * 100 / МаксКод);
Состояние("Определение кода: " + Проц + "%");
КонецЕсли;
Если ТипКода = "Текстовый" Тогда
ТекКод = Лев(МаскаКода, ДлинаКода - СтрДлина(Строка(СчетчикЦикла))) + СчетчикЦикла;
Иначе
ТекКод = СчетчикЦикла;
КонецЕсли;
Если СпрНоменклатура.НайтиПоКоду(ТекКод) = 0 Тогда
Код = ТекКод;
Прервать;
КонецЕсли;
КонецЦикла;
КонецПроцедуры"
29.04.2009
08:49
#5
Большое спасибо дорогой друг - все работает. Если не сложно, то не посоветуешь как подкорректоровать код, чтобы он кода выбирал не с 1 по 99999, а с 10000 по 99999. (Мне важно чтобы код начинался с любой цифры кроме нуля).
Читают тему
(гостей: 1)