Проверка информационной базы 7.7 на некорректные символы

Поиск спецсимволов непосредственно в текстовых полях информационной базы 7.7.

Пришлось мне как-то долго и трудно настраивать перенос данных через XML из 7-й базы в 8-ю. И содержала 7-я база достаточное количество текстовых полей, содержащих спецсимволы, да еще и пользователи вносили новые поля путем копипастинга. А обмен был на разовый, а регулярный, и каждый раз после выгрузки проверять XML 8-й обработкой было очень неудобно.

Вот так и родилась обработка, позволяющая заранее, перед выгрузкой проверить базу, чтобы потом не искать в XML ошибки.

Добавлен выбор видов справочников и документов для обработки.

6 Comments

  1. serpent

    я во всех обменах использую следующую функцию…

    Функция ЗС(СтрочкаПереданная)
    
    Строчка       = СокрЛП(СтрочкаПереданная);
    СимволКавычки = Символ(34);
    СимволАмп     = Символ(38);
    
    Если Найти(Строчка, СимволАмп)<>0 или Найти(Строчка, «<«)<>0 или Найти(Строчка, «>»)<>0
    или Найти(Строчка, СимволКавычки)<>0 или Найти(Строчка, «‘»)<>0  Тогда
    Строчка = СтрЗаменить(Строчка,СимволАмп,»&»);
    Строчка = СтрЗаменить(Строчка,»<«,»<«);
    Строчка = СтрЗаменить(Строчка,»>»,»>»);
    Строчка = СтрЗаменить(Строчка,СимволКавычки,»"»);
    Строчка = СтрЗаменить(Строчка,»>»,»‘»);
    Конецесли;
    
    Возврат Строчка;
    КонецФункции
    

    Показать

    все строковые реквизиты при выгрузке прогоняю через нее….

    ИМХО а вносить изменения в строковые значения в базе 1С я считаю некорректными

    Reply
  2. tedkuban

    (1) serpent, если в строчном поле мусор, это может вылезти где-нибудь еще, не только при обменах. К тому же встречаются люди, которые пользуются штатными обменами вообще без специалистов, и когда у них обмен встает колом, не всегда есть возможность заказать его переписку.

    Reply
  3. skteks

    Здравствуйте, обработка вылетела — написала «Нехватка памяти» — как можно побороться? Может быть сделать проверку не по всем сразу справочникам, а предложить выбор — какие проверяем?

    Reply
  4. tedkuban

    (3) skteks, Ну и база у Вас… Я проверял на 30000 номенклатуры и сотнях тысяч документов… Очень устал, но попробую реализовать отбор, правда, срок не обещаю.

    Кстати, Вы с подробным протоколом запускали? Там вроде больше нигде память не расходуется.

    Reply
  5. tedkuban

    Добавлен выбор видов справочников и документов для обработки.

    Reply
  6. tedkuban

    Исправлена ошибка отображения изменяемых реквизитов справочников в протоколе. Для скачавших файл — текст исправления (строка 257 модуля формы):

    ТаблицаИсправлений.ВыбратьСтроки();

    Пока ТаблицаИсправлений.ПолучитьСтроку() = 1 Цикл

    Если спр.НайтиЭлемент(ТаблицаИсправлений.Элемент) = 1 Тогда

    //ЗаписьПротокола(«Изменение справочника «+ВидСпр+», элемент «»»+СокрЛП(спр.ТекущийЭлемент())+»»», реквизит «»»+ИмяРеквизита+»»», значение «»»+СтрокаПроверки+»»»»,»!!»,1);

    ЗаписьПротокола(«Изменение справочника «+ВидСпр+», элемент «»»+СокрЛП(спр.ТекущийЭлемент())+»»», реквизит «»»+ТаблицаИсправлений.Реквизит+»»», значение «»»+ТаблицаИсправлений.Значение+»»»»,»!!»,1);

    Попытка

    спр.УстановитьАтрибут(ТаблицаИсправлений.Реквизит,ТаблицаИсправлений.Значение);

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *