Убрать лишние пробелы в наименованиях справочника

1. user1421521 25.09.20 13:59 Сейчас в теме
8.3, УТ 11.2
Добрый день. Подскажите, пожалуйста.
Написал обработку, которая удаляет лишние пробелы в Наименовании и НаименованиеПолное в справочнике Номенклатура. Почему-то она обработала только несколько позиций, а остальные не исправляет. Исправила только в поле Наименование, а НаименованиеПолное выводит с ошибкой "Реквизит недоступен для группы".
&НаКлиенте
Процедура ОбработатьНоменклатуру(Команда)
	ОбработатьНоменклатуруНаСервере();
КонецПроцедуры

&НаСервере
Процедура ОбработатьНоменклатуруНаСервере()
	Номенклатура = Справочники.Номенклатура;
	Выборка = Справочники.Номенклатура.ВыбратьИерархически();
	Пока Выборка.Следующий() Цикл
		//Объект = Выборка.ПолучитьОбъект();
		Номенклатура = Выборка.ПолучитьОбъект();
		//Объект.Наименование = СтрЗаменить(Объект.Наименование,"  "," ");
		НаименованиеНоменклатуры=СтрЗаменить(НаименованиеНоменклатуры,"  "," ");
		//Номенклатура.Наименование = СтрЗаменить(Номенклатура.Наименование, "  ", " ");
		//Номенклатура.НаименованиеПолное = СтрЗаменить(Номенклатура.НаименованиеПолное, "  ", " ");
		Попытка
			Номенклатура.Записать();
		Исключение
			Сообщить("Невозможно записать объект");
		КонецПопытки;
	КонецЦикла;
КонецПроцедуры
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 72 25.09.20 14:02 Сейчас в теме
(1)Потому что реквизита "НаименованиеПолное" для группы номенклатуры не существует, о чем вам 1С говорит прямым текстом.
ant1773; alex-l19041; +2 Ответить
3. uriah 17 25.09.20 14:03 Сейчас в теме
Почему-то она обработала только несколько позиций, а остальные не исправляет. Исправила только в поле Наименование, а НаименованиеПолное выводит с ошибкой "Реквизит недоступен для группы".

Нужно обрабатывать только элементы справочника.
alex-l19041; +1 Ответить
4. FatPanzer 25.09.20 14:03 Сейчас в теме
Проверяйте только элементы
Номенклатура.Наименование=СтрЗаменить(Номенклатура.Наименование,"  "," ");
Если НЕ Номенклатура.ЭтоГруппа Тогда
    Номенклатура.НаименованиеПолное = СтрЗаменить(Номенклатура.НаименованиеПолное, "  ", " ");
КонецЕсли;

А если в наименовании будет 3 пробела? А если 4?
alex-l19041; user1421521; +2 Ответить
5. user1421521 25.09.20 14:15 Сейчас в теме
(4) Сработало!! НаименованиеПолное пробелы удалил, но не удаляет в Наименовании :((

(4)
А если в наименовании будет 3 пробела? А если 4?

Вы правы, такое есть, но не соображу, как это сделать :(
6. nomad_irk 72 25.09.20 14:18 Сейчас в теме
(5)
Номенклатура.НаименованиеПолное = СокрЛП(Номенклатура.НаименованиеПолное)
reshkra; Sergynia; +2 Ответить
7. FatPanzer 25.09.20 14:19 Сейчас в теме
(5)
но не удаляет в Наименовании

Из твоего кода - не удалит. Ты же сам закомментировал сам с Наименованием.
10. user1421521 25.09.20 14:29 Сейчас в теме
(7) Раскомментил, не исправляет. Из 400+ исправил порядка 70.
Пробелы находятся также и между слов.
11. Sergynia 4 25.09.20 14:30 Сейчас в теме
(10) используйте СокрЛП или же (9). Описание функций смотрите в синтекс-помощнике.
13. FatPanzer 25.09.20 14:36 Сейчас в теме
9. independ 1520 25.09.20 14:21 Сейчас в теме
(5)
Массив=СтрРазделить(Наименование, " ", Ложь);
Наименование=СтрСоединить(Массив," ");
 
ant1773; alex-l19041; FatPanzer; SlavaKron; Sergynia; +5 Ответить
30. ant1773 5 28.09.20 12:28 Сейчас в теме
8. Sergynia 4 25.09.20 14:20 Сейчас в теме
Используйте функцию СокрЛП, так как могут присутствовать пробелы и по середине. У справочника есть реквезит Наименование.
12. FatPanzer 25.09.20 14:35 Сейчас в теме
(8)
СокрЛП, так как могут присутствовать пробелы и по середине.
СокрЛП удаляет пробелы посередине слова?
14. serg-lom89 76 25.09.20 14:40 Сейчас в теме
(12)слева и справа только
16. FatPanzer 25.09.20 14:41 Сейчас в теме
(14) Я в курсе, я просто хочу понять, что Сергуня имел ввиду, за что его так торкнуло...
18. serg-lom89 76 25.09.20 14:44 Сейчас в теме
(16)я так понимаю ,суть задачи:
наверное есть наименование
"Черный хлеб" и надо на выходе "Черный хлеб" ?
19. FatPanzer 25.09.20 14:47 Сейчас в теме
(18) Нет.
Есть "Черный       хлеб". Надо получить "Черный хлеб".
user1421521; +1 Ответить
26. AlexO 135 28.09.20 09:48 Сейчас в теме
(19) В цикле обрабатывается такое.
28. AlexO 135 28.09.20 09:53 Сейчас в теме
(16) ну, человек явно знает, о чем говорит, и понимает толк в синтЕкс-помощнике по обработке реквЕзитов.
15. Sergynia 4 25.09.20 14:41 Сейчас в теме
(12) нет, использовать Стрзаменить, нельзя так как она заменит пробелы во всей строке. Предположим есть номенклатура "Черный хлеб. ", Если использовать Стрзаменить, то результат будет "Черныйхлеб", но(9) предложил более интересное решение.
17. FatPanzer 25.09.20 14:42 Сейчас в теме
(15) Посмотри внимательно код автора. Заменяется " " на " ". Заменяется ДВА пробела на ОДИН. Это раз. И второе - какием образом СокрЛП решает проблему автора - убрать лишние пробелы в середине?
user1421521; +1 Ответить
20. Sergynia 4 25.09.20 14:49 Сейчас в теме
(17) соглашусь,что не заметил, но всё же Стрзаменить в решении данной задачи не использовать, так и СокрЛП решит не всё.
user1421521; +1 Ответить
22. user1421521 25.09.20 20:09 Сейчас в теме
(17) Все правильно говорите! Пробелы в середине не убираются. Обработка убрала пробелы только по краям. (9) Тоже по середине не убирает :(
23. independ 1520 25.09.20 21:35 Сейчас в теме
(22) может это не пробел, а например Символы.НПП или Символы.Таб (и проч.), тогда
Массив=СтрРазделить(Наименование, " "+Символы.НПП+Символы.Таб, Ложь);
user1421521; +1 Ответить
27. AlexO 135 28.09.20 09:51 Сейчас в теме
(22) В цикле обработай замену 2 пробелов на один до победного. Потом СокрЛП.
21. FatPanzer 25.09.20 14:49 Сейчас в теме
(15)
но(9) предложил более интересное решение.
Это известное и повсеместно применяющееся решение. Даже в БСП уже подобные механизмы зашиты.
25. AlexO 135 28.09.20 09:47 Сейчас в теме
(21) Да, это в стиле 1С: вместо внятной функции НайтиЗаменить - тасовать данные по строкам.
24. AlexO 135 28.09.20 09:45 Сейчас в теме
(15)Что там интересного? Замена двух пробелов на один через гланды?
29. dmrjan212 28.09.20 11:48 Сейчас в теме
Цикл тоже можно было сделать через попытку. Искать пробелы и исправлять, в случае ошибки - исключение и переход на новый элемент.
31. user1103553 19.12.20 08:39 Сейчас в теме
Здравствуйте, я вообще не понимаю в коде 1с помогите убрать все лишние пробелы в рабочем наименовании номенклатуры.
32. GSokolov 320 19.12.20 08:48 Сейчас в теме
(31) Если нет программиста, только ручками. И выявлять лишние пробелы в каждом месте каждой позиции, двигая курсор клавишами.
33. user1103553 19.12.20 09:04 Сейчас в теме
(32)можно и без сарказма если написал тут значит нужна помощь, но я заметил что тут все только и умеют умничать, а помочь людям ни кто не хочет.
35. ishelper 19.12.20 11:05 Сейчас в теме
(33)
я заметил что тут все только и умеют умничать, а помочь людям ни кто не хочет.
Людям - помогают, а вам - вряд ли. Почему - подумайте сами.
34. user1103553 19.12.20 09:04 Сейчас в теме
можно же объяснить куда нажать и какой код куда вставить. не совсем же без мозгов.
36. ishelper 19.12.20 11:07 Сейчас в теме
(34)
можно же объяснить куда нажать и какой код куда вставить
Можно. Но это может оказаться наподобие объяснения обезьяне: где взять гранату и как выдернуть чеку.
не совсем же без мозгов.
Не факт, не факт...
37. GSokolov 320 19.12.20 20:53 Сейчас в теме
(34) Если не совсем без мозгов (в смысле умения создавать обработки на 1С), то в пользовательском режиме можно в типовой обработке Групповое изменение реквизитов вставить нужный код для выбранного справочника Номенклатура. Какой именно код поможет это сделать, здесь и обсуждалось. Но если о программировании нет понятия, не стоит за это браться.
Оставьте свое сообщение

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