Ошибка в нумерации справочника

1. zzZodiaCcc 28.06.19 10:00 Сейчас в теме
У меня вопрос, может быть кто сталкивался, в базе абсолютная вся номенклатура создается программно, и при записи номер просто не задается:

 НоменклатураОбъект.Записать()


В один прекрасный день вылезает ошибка "Значение "00-000003456" поля Код не уникален", хотя запрет на изменения стоит у всех, кроме Админа, и ручками никто не лазает там, проверил по журналу регистрации, а номенклатура пронумерована нормально - "00-000003456" - естественно занят. А последний номер "00-00007456". Следовательно, номенклатура должна была присвоить номер "00-00007457", но стучится все равно в 00-000003456, при этом когда появляться ошибка, при попытке очередной записи, номер увеличивается каждый раз +1: 00-000003457, 00-000003458 и т.д, но они все заняты, и из предприятия в тестовой базе такая же картина при попытке записи - ошибка и предупреждение каждый раз номер +1. Стандартная обработка Универсальный подбор и обработка объектов 1С 8.3.epf не помогает. Справился только рекурсией с "насильной" записью(код ниже), номер очищался и снова пускал в запись пока в итоге не записался объект номенклатуры, кто-нибудь сталкивался с такой проблемой?
Хоть и вопрос решен нужна профилактика, чтобы подобных ситуаций не повторялось т.к. загрузка просто встает.
P.S. хоть и можно закинуть этот код в попытку при записи, все же хотелось бы узнать причины такого поведения...

&НаСервере
Процедура ПопыткаЗаписатьОбъект(Номенклатура)
	
	Если НЕ ЗаписатьНоменклатуру(Номенклатура) Тогда 
		Номенклатура.КодДляПоиска = "";
		Номенклатура.Код = "";
		ПопыткаЗаписатьОбъект(Номенклатура);
	КонецЕсли;	
		
КонецПроцедуры

&НаСервере
Функция ЗаписатьНоменклатуру(Номенклатура) 
	
	Попытка 
		Номенклатура.Записать();
		Возврат Истина;
	Исключение	
		Возврат Ложь;		
	КонецПопытки; 	
	
КонецФункции
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. zzZodiaCcc 28.06.19 10:03 Сейчас в теме
ну и плюс, если косяк будет не в коде номенклатуры, программный код просто зациклится...
3. qwed557 30 28.06.19 10:11 Сейчас в теме
ОбновитьНумерациюОбъектов (RefreshObjectsNumbering)
Выполняет обновление номеров в соответствии с номерами, записанными в базе данных. После вызова данного метода все выданные, но незаписанные номера, становятся невалидными т.к. не гарантируется их уникальность. Данный метод разрешено вызывать только администратору системы
user811769; +1 Ответить
4. user811769 13 28.06.19 10:32 Сейчас в теме
Напишите обработку с
ОбновитьНумерациюОбъектов(Метаданные.Справочники.Номенклатура);
и запустите один раз, все наладится.

Другой вопрос, почему эта ошибка возникает. Я для себя не нашла пока ответа.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот