Изменение наименование в справочнике Номенклатура

1. VALENTINA__8 19.01.21 18:55 Сейчас в теме
Добрый день.
Изменяю наименование в справочнике Номенклатура, убираю лишний пробел, если их два вместе. Но при Записи выходит ошибка: Рабочее наименование Не уникально. НА самом деле больше такого наименования нет, он просто не дает записать. Почему? Прилагаю код

УдаляемаяСтрока = "  ";
	Выборка = Справочники.Номенклатура.Выбрать();
	Пока Выборка.Следующий() Цикл
		ВыборкаНоменклатура = Выборка.ПолучитьОбъект();
		ИзмененноеНаименование = Строка(ВыборкаНоменклатура.Наименование);
		ИзмененноеНаименованиеПолное = Строка(ВыборкаНоменклатура.НаименованиеПолное); 
		Если СтрНайти(ИзмененноеНаименование, УдаляемаяСтрока) > 0 Тогда
			ВыборкаНоменклатура.Наименование = Строка(СокрЛП(СтрЗаменить(ИзмененноеНаименование, УдаляемаяСтрока," "))); 
			Сообщить(ВыборкаНоменклатура.Наименование);
			ВыборкаНоменклатура.Записать();
		КонецЕсли;
	КонецЦикла;
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Guyer 21 19.01.21 19:02 Сейчас в теме
При записи идёт контроль рабочего наименования.
В УНФ и в УТ это опция может быть отключена.
Рабочее наименование по-моему отдельным полем идёт. Точно не помню, но однозначно если 1С пишет что Рабочее наименование не уникально значит есть дубль.
Можете отладчиком посмотреть.
3. pyrkin_vanya 497 19.01.21 19:03 Сейчас в теме
Судя по всему есть. Убедитесь на 100%, что у вас в справочнике нет номенклатуры с новым наименованием.
Или тупо написать
ВыборкаНоменклатура.ОбменДанными = Истина;

Проверка не должна происходить.
4. VALENTINA__8 19.01.21 19:16 Сейчас в теме
Контроль стоит галка. Точно нет. В ручную я могу удалить пробел и записать в данной номенклатуре
5. FatPanzer 19.01.21 20:04 Сейчас в теме
А зачем вы каждый раз получаете объект, если потом не всегда его записываете?
umberto_nobile; +1 Ответить
11. VALENTINA__8 20.01.21 08:19 Сейчас в теме
(5) Но попробую)) Надеюсь будет лучше))) Спс
6. user783001 19.01.21 20:20 Сейчас в теме
а почему вы не меняете полное наименование перед записью объекта. при получении объекта вы его считываете но не меняете? да и получать объект лучше перед записью после проверки условий.
9. VALENTINA__8 20.01.21 08:06 Сейчас в теме
(6) Это резоно. Думаете, будет работать быстрее? Доли секунды на один раз - как бы без разницы)
7. user783001 19.01.21 20:24 Сейчас в теме
УдаляемаяСтрока = "  ";
    Выборка = Справочники.Номенклатура.Выбрать();
    Пока Выборка.Следующий() Цикл
       
        ИзмененноеНаименование = Строка(Выборка.Наименование);
        ИзмененноеНаименованиеПолное = Строка(Выборка.НаименованиеПолное); 
        Если СтрНайти(ИзмененноеНаименование, УдаляемаяСтрока) > 0 Тогда
            ВыборкаНоменклатура = Выборка.ПолучитьОбъект();
            ВыборкаНоменклатура.Наименование = Строка(СокрЛП(СтрЗаменить(ИзмененноеНаименование, УдаляемаяСтрока," "))); 
ВыборкаНоменклатура.Наименованиеполное = Строка(СокрЛП(СтрЗаменить(ИзмененноеНаименованиеполное, УдаляемаяСтрока," "))); 
            Сообщить(ВыборкаНоменклатура.Наименование);
            ВыборкаНоменклатура.Записать();
        КонецЕсли;
    КонецЦикла;
Показать


как то так
8. user868505 19.01.21 21:32 Сейчас в теме
Вы меняете Наименование, а ошибка - по Рабочему наименованию.
Возможно, когда вы меняете Наименование просто в форме, то у вас сразу изменяется рабочее, а когда вы делаете это программно, то соответствующие процедуры формы не срабатывают, и Рабочее наименование не меняется.

И да, с полным наименованием непонятно, что вы делаете.
10. VALENTINA__8 20.01.21 08:08 Сейчас в теме
Всем спасибо, реально нашла Дубль. Просто допишу свою обработку тоже на проверку дубля. Рабочее наименование - это есть просто Наименование в УТ) Тема закрыта)
Оставьте свое сообщение

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