Имя: Пароль:
1C
 
Словил такой баг - в строке символ STX (с кодом 2)
0 RomaH
 
naïve
16.11.17
14:12
Работаю с лабораторным анализатором
обмен через текстовые файлы и базу данных программно-аппаратного

и вот через год работы аппарат пишет в БД и в файл такой символ

1С его в коде нормально обрабатывает - присваивает строковому реквизиту и вываливается в ошибку при попытке записать документ в базу 1С

модуль формы документа:

        СтрокаДанных = СтрСоединить(МасивДанных,"&");
        
        СтрокаТЧ.Результаты = СтрокаДанных;
        
    КонецЦикла;
    
    Записать();

СтрокаТЧ.Результаты содержит символ "STX"

на Записать() выдает ошибку - что-то там про недопустимый символ XML
1 NorthWind
 
16.11.17
14:46
ну в принципе логично. XML это текстовый файл, т.е. там должен быть человекочитаемый текст. Ни в одной кодировке символ с кодом 2 не относится к текстовым человекочитаемым.
2 H A D G E H O G s
 
16.11.17
14:49
Функция ЗаменитьНедопустимыеСимволы(Текст) Экспорт
    ПозицияСимвола=1;
    Пока Истина Цикл
        ПозицияСимвола=НайтиНедопустимыеСимволыXML(Текст,ПозицияСимвола);
        Если ПозицияСимвола=0 Тогда
            Прервать;
        КонецЕсли;
        Текст=Сред(Текст,1,ПозицияСимвола-1)+"&"+Строка(КодСимвола(Сред(Текст,ПозицияСимвола,1)))+Сред(Текст,ПозицияСимвола+1);
    КонецЦикла;
КонецФункции
3 NorthWind
 
16.11.17
14:49
вам нужно при записи документа этот символ заменить уникальной последовательностью других, а при чтении сделать наоборот. Или  использовать бинарный файл.
4 RomaH
 
naïve
16.11.17
15:10
(2) это конечно хорошо
но получается в любой строке которую пишем в базу и которая получается из файла надо делать такую проверку
5 H A D G E H O G s
 
16.11.17
15:10
(4) ИИииии?
6 RomaH
 
naïve
16.11.17
15:14
(5) да как-то криво

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

а вот в базу писать не хочет...
7 alxxsssar
 
16.11.17
15:15
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший