Поиск недопустимых символов в наименовании элементов справочников

12.03.21

Задачи пользователя - Поиск данных

Если вы столкнулись с ошибкой "Текст XML содержит недопустимый символ в позиции...", то эта публикация для вас.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Поиск недопустимых символов в наименовании элементов справочников:
.epf 7,25Kb ver:1.0
135 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Если данные справочника были загружены из какой-то внешней системы, есть большая вероятность, что эти данные будут содержать недопустимые символы. И в какой-то момент, например, при выводе информации на форму может возникнуть ошибка:

 

Текст XML содержит недопустимый символ в позиции 0

 

Вычислить элементы, содержащие недопустимые символы не просто. Внешне эти символы могут быть похожи на обычные буквы русского или английского алфавита. При попытке вывести их в таблицу или список значений будет появляться ошибка.

Для облегчения поиска была написана эта обработка.

На форме обработки нужно выбрать вид справочника:

 

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

 

И нажать кнопку "Найти недопустимые символы".

В списке будут выведены коды элементов справочника, содержащих недопустимые символы:

 

Список кодов элементов, наименования которых содержат недопустимые символы

 

И сообщение о том, сколько всего элементов было найдено.

Тестировалось на платформе 8.3.17.1549.

Вступайте в нашу телеграмм-группу Инфостарт

обработка загрузка импорт xml недопустимый символ

См. также

Информационная безопасность Поиск данных ServiceDesk, HelpDesk Журналы и реестры данных 1С 8.3 Россия Бухгалтерский учет Бюджетный учет Налоговый учет Управленческий учет Платные (руб)

Полный контроль над изменениями в 1С без нагрузки на вашу базу. Мгновенный доступ к истории изменений, удобное сравнение и откат данных в один клик. Простой отчет с визуальным отображением изменений Откат на любую версию объекта в два клика История изменения данных хранится во внешней базе

180000 руб.

05.09.2025    5065    2    1    

3

Мастера заполнения Поиск данных Инструментарий разработчика Подбор и обработка объектов 1С 8.3 1С 8.5 Платные (руб)

Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигационной ссылки/представления документа для автоподбора; для разработчиков доступны поиск по GUID и полному имени предопределённого. Работает в управляемых формах и подключается в большинстве конфигураций 1С 8.3/8.5.

6000 руб.

25.02.2026    4759    16    1    

20

SALE! 15%

Файловый обмен (TXT, XML, DBF), FTP Поиск данных Инструменты администратора БД Корректировка данных Системный администратор Программист 1С:Предприятие 8 1C:Бухгалтерия 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Данная обработка позволит Вам легко и просто, а главное - быстро, выполнить сравнение данных между ЛЮБЫМИ базами (и РИБ, по правилам конвертаций) по контрольным суммам выбранных объектов баз 1С, работающих на платформах 8.3 и выше. Удобный и понятный интерфейс в виде "мастера". Высокая скорость сравнения достигается за счет специального алгоритма расчета контрольной суммы объекта/записи и сравнения по данным суммам объектов 2х баз через файл. Имеется возможность выбора реквизитов, по которым система будет сравнивать объекты. Сравнение количества записей в движениях документов, возможность сравнивать данные по правилам конвертации и не только! Выбор объектов конфигурации для КАЖДОГО узла в отдельности с индивидуальным отбором для каждого объекта конфигурации, работа с FTP, сохранение или загрузка настроек, сохранение или загрузка результата сравнения, регистрация на обмен объекта и его движений. (Обновление от 12.11.2024, версия 2.2-2.5)

24400 20740 руб.

27.10.2017    46905    32    15    

50

Учетные задачи Поиск данных Подбор и обработка объектов 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

1.обработка позволяет автоматически вычислить дубли и привести их к единому наименованию во всех документах. 2.так же есть возможность в документах поменять счета учета для номенклатуры. Например разные бухгалтера оформляют поступление одного и того же товара - один занес на 10.01, второй на 41.01 в результате в ОСВ у нас минусы. В обработке есть возможность наглядно увидеть такие ошибки и тут же их поправить не бегая по всем документам. Достаточно поставить галочку у номенклатуры и указать счет учета который надо найти и счет учета на который надо его заменить. Обработка сама вычислит документы в которых номенклатура с галочкой была задействована и заменит счета учета. Что бы не было излишнего изменения документов, в обработке указываются типы документов, где операция замены счета разрешена (например Поступление ТМЦ, Реализация, Отчет о розничных продажах, возврат покупателю итд.)

7320 руб.

05.06.2026    482    2    0    

4

Поиск данных Программист Пользователь 1С 8.3 1С:Библиотека стандартных подсистем Абонемент ($m)

Умное сравнение табличных документов с визуальной подсветкой. В отличие от стандартного сравнения, обработка ищет отличия по ключевому значению, игнорируя сдвиги строк. Результат — цветовая маркировка добавленных, удаленных и измененных строк прямо в документе + точный лог расхождений по каждой ячейке.

1 стартмани

27.04.2026    1355    15    war41k    5    

16

Поиск данных Нейросети Программист Бесплатно (free)

Практический кейс исследовательской разработки (R&D) с использованием искусственного интеллекта и нейросетей в 1С для поиска по прайсам поставщиков. Рассматривается гибридный поиск (Hybrid Search: векторный + полнотекстовый), позволяющий находить товары по смыслу, а не по буквам — даже при сленге, опечатках и разном написании. Решение работает полностью локально, без облаков, и интегрируется с 1С.

14.01.2026    3298    Prepod2003    14    

13

Поиск данных 1С:Предприятие 8 1С:Библиотека стандартных подсистем Абонемент ($m)

Расширение добавляет возможность в 1С в любых полях и отборах выбирать значения не только Код, Наименование или Номер, но и Уникальный идентификатор, Навигационную ссылку, Объект не найден, Представление документа.

2 стартмани

18.08.2025    8225    40    sapervodichka    14    

77
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. RocKeR_13 1480 12.03.21 10:35 Сейчас в теме
Ну да, а можно в групповой обработке выполнить простенький алгоритм с опцией "Объект записывается: в коде алгоритма"

ТекНаименование = Объект.Наименование;
НедопустимыйСимвол = НайтиНедопустимыеСимволыXML(ТекНаименование);
Пока НедопустимыйСимвол > 0 Цикл
	ЛеваяЧасть = ?(НедопустимыйСимвол = 1, "", Лев(ТекНаименование, НедопустимыйСимвол-1));
	ПраваяЧасть = ?(НедопустимыйСимвол = СтрДлина(ТекНаименование), "", Сред(ТекНаименование, НедопустимыйСимвол+1)); 
	ТекНаименование = ЛеваяЧасть+"_"+ПраваяЧасть;
	НедопустимыйСимвол = НайтиНедопустимыеСимволыXML(ТекНаименование);
КонецЦикла;
Если Объект.Наименование <> ТекНаименование Тогда
	Объект.Наименование = ТекНаименование;
	Объект.Записать();
КонецЕсли;
Показать
CepeLLlka; voneska7; xoisim; +3 Ответить
2. Nicholas 950 12.03.21 10:58 Сейчас в теме
(1) Тоже хороший вариант. Спасибо!
3. RocKeR_13 1480 12.03.21 10:59 Сейчас в теме
4. MVK80 13.03.21 09:30 Сейчас в теме
(0), в БСП всё уже давно есть. Просто выбирайте, что вам нужно:
ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыXML(Текст, СимволЗамены)
Или
ОбщегоНазначенияКлиентСервер.УдалитьНедопустимыеСимволыXML(Текст)
COMPER; ZDmitry83; Apolonov-Erik; Alex17; triviumfan; +5 Ответить
5. Nicholas 950 15.03.21 08:22 Сейчас в теме
(4) Да, тоже хороший вариант для исправления, но прежде чем исправлять - нужно сначала найти.
6. MVK80 15.03.21 08:48 Сейчас в теме
(5), ну по хорошему надо не допускать их появление :), то есть проверять/исправлять этими процедурами при загрузке извне и только потом записывать. Ну и бывают невидимые недопустимые символы. Что даст поиск визуально в которой не видно в чем проблема?
Ну в целом, если вам прям так нужен поиск без исправления, то взять за основу одну из процедур скопировать и убрать исправление и оставить только поиск это быстро. Ну допустим, вам прям надо взглянуть, какие элементы выдают ошибки для анализа какого-то. Но в вашей обработке еще напрашивается кнопочка удалить и/или заменить недопустимые символы :). Или еще одна кнопочка - это показать коды недопустимых символов, чтобы понять что это прилетело, если визуально не видно.
triviumfan; +1 Ответить
7. Nicholas 950 15.03.21 08:53 Сейчас в теме
(6) Пожалуй, даже сделаю, немного погодя, кнопочки: "удалить", "заменить", "показать коды". Спасибо за идею!
8. GetNight 48 30.04.21 14:15 Сейчас в теме
Я бы сделал так:

Функция XMLУдалитьНедопустимыеСимволы(СтрокаXML, СимволЗамены = "") Экспорт
#Если НЕ ВебКлиент Тогда
	Пока Истина Цикл
		Позиция = НайтиНедопустимыеСимволыXML(СтрокаXML);
		Если Позиция Тогда
			Символ = Сред(СтрокаXML, Позиция, 1);
			СтрокаXML = СтрЗаменить(СтрокаXML, Символ, СимволЗамены);
		Иначе
			Возврат СтрокаXML
		КонецЕсли
	КонецЦикла
#КонецЕсли
КонецФункции
Показать


Если одинаковых символов несколько - нет смысла гонять циклом, лучше удалять их все сразу.
В подавляющем большинстве случаев символ удаляем, поэтому функцию так и назовём.
А если вдруг нужно символ не удалять, а заменить, используем второй параметр.

П.С. с удивлением обнаружил в УПП функцию ОбщегоНазначенияКлиентСервер.УдалитьНедопустимыеСимволыXML, она поражает своей атмосферностью...
посмотреть


позаимствовал оттуда #Если НЕ ВебКлиент (я так понимаю, добавили его не просто так ;)
и назвал свою чуть иначе, чтобы не вылетало с ошибкой
Для отправки сообщения требуется регистрация/авторизация