Подбор свободного кода справочника Номенклатура без захвата одного и того же кода несколькими операторами.
При использовании в справочнике Номенклатура конструкции подбора не занятых кодов менее максимального, при работе нескольких операторов возникла проблема захвата одного и того же кода, если не использовать Записать() при создании нового элемента.
- Описание
- Подробнее
Описание
Моё решение:
//==================================================================================
Процедура ВводНового(ПризнКопирования)
Спр = СоздатьОбъект("Справочник.Номенклатура");
ФП = СоздатьОбъект("Текст");
ТабКод = СоздатьОбъект("ТаблицаЗначений");
ТабКод.НоваяКолонка("КодНом","Число");
Файл = ФС.НайтиПервыйФайл(КаталогИБ()+"*.nomer");
Пока ПустаяСтрока(Файл) = 0 цикл
ТабКод.НоваяСтрока();
ТабКод.КодНом = Число(СокрЛП(Лев(Файл,СтрДлина(СокрЛП(Файл))-6)));
Файл = ФС.НайтиСледующийФайл();
КонецЦикла;
Если ТабКод.КоличествоСтрок() > 0 Тогда
ТабКод.ВыбратьСтроки();
Пока ТабКод.ПолучитьСтроку() = 1 Цикл
КН = Число(ТабКод.КодНом);
КонецЦикла;
Иначе
КН = 0;
КонецЕсли;
Для К = КН + 1 ПО 99999 Цикл
Если (Спр.НайтиПоКоду(К) = 0)Тогда
Код=К;
Прервать;
КонецЕсли;
КонецЦикла;
ФП.Записать(КаталогИБ()+Код+".nomer");
КонецПроцедуры
//=========================================================================================================================
В конец процедур ПриЗаписи() и ПриЗакрытии() вставляем:
ФС.УдалитьФайл(КаталогИБ()+Код+".nomer");