1С: Нечитаемые символы в табличном документе

А вот нежданно и негаданно, оказывается что в табличный документ нельзя помещать некоторые нечитаемые символы. Если это произошло, то 1С при стандартном табдок.Показать();, тоже покажет…ошибку:

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

Пришлось внедрять функцию, которая чистит строку от «мусора», и фильтровать размещение данных в параметры макета через неё:

Функция УдалитьНечитаемыеСимволы(ВхСтрока) Экспорт
   // Удаляем переносы строк
   ИсхСтрока = СтрЗаменить(ВхСтрока,  Символы.ПС,   " "); // Перевод строки
   ИсхСтрока = СтрЗаменить(ИсхСтрока, Символы.ВК,   " "); // Возврат каретки
   ИсхСтрока = СтрЗаменить(ИсхСтрока, Символы.НПП,  " "); // Неразрывный пробел \xA0
   ИсхСтрока = СтрЗаменить(ИсхСтрока, Символы.ПФ,   " "); // Перевод формы (страницы).
   ИсхСтрока = СтрЗаменить(ИсхСтрока, Символы.ВТаб, " "); // Символ табуляции (вертикальной)
   ИсхСтрока = СтрЗаменить(ИсхСтрока, Символы.Таб,  " "); // Символ табуляции (горизонтальной).
   ИсхСтрока = СтрЗаменить(ИсхСтрока, Символ(182),  " "); // Символ параграфа
   ИсхСтрока = СтрЗаменить(ИсхСтрока, Символ(176),  " "); // Символ градуса
   ИсхСтрока = СтрЗаменить(ИсхСтрока, Символ(160),  " "); // Неразрывный пробел симв.

   // Удаляем маркеры списков
   ИсхСтрока = СтрЗаменить(ИсхСтрока, "•", "-"); // маркер 1
   ИсхСтрока = СтрЗаменить(ИсхСтрока, "◦", "-"); // маркер 2

   // Удаляем спец.HTML и Word
   ИсхСтрока = СтрЗаменить(ИсхСтрока," ", " "); //  HTML-пробел
   ИсхСтрока = СтрЗаменить(ИсхСтрока,"&",  " ");  // Раскодировать (& → &).
   //ИсхСтрока = СтрЗаменить(ИсхСтрока, "&lt;", " "); // экранированное представление символа <
   //ИсхСтрока = СтрЗаменить(ИсхСтрока, "&gt;", " "); // экранированное представление символа >
   ИсхСтрока = СтрЗаменить(ИсхСтрока, "¶", " "); // абзац симв.
   ИсхСтрока = СтрЗаменить(ИсхСтрока, "�",  ""); // битый символ

   // Удаляем все управляющие символы (ASCII 0–31), \x01и \x0B
   Для i = 0 По 31 Цикл
       ИсхСтрока = СтрЗаменить(ИсхСтрока, Символ(i), "");
   КонецЦикла;

   // Удаляем лишние пробелы по краям
   ИсхСтрока = СокрЛП(ИсхСтрока);

   // Удаляем двойные пробелы внутри строки
   Пока Найти(ИсхСтрока, "  ") > 0 Цикл
       ИсхСтрока = СтрЗаменить(ИсхСтрока, "  ", " ");
   КонецЦикла;
   Возврат ИсхСтрока;  //Возвращает очищенную строку (тип: Строка)
КонецФункции

1С: Аутентификационный контекст клиента отсутствует в рабочем процессе

Данная ошибка возникла у меня, когда я в фоновом задании попытался вставить данные во внешнюю базу данных. Хотя если просто на сервере выполнять кусок когда вида:

	зап=внешниеисточникиданных.ОтчетыДля1С.Таблицы.reports_1c_public_raw_ias.СоздатьОбъект();	
	зап.communal="1"
    зап.Записать();	

То всё корректно отрабатывалось. Решением оказалось: перед любой операцией со внешним источником данных в фоновом задании проверять установлено ли соединение, и если нет — предварительно его устанавливать:

	состояние=ВнешниеИсточникиДанных.ОтчетыДля1С.ПолучитьСостояние();
	если состояние=СостояниеВнешнегоИсточникаДанных.Отключен тогда
		УстановитьПривилегированныйРежим(Истина);		
		Соединение = Новый ПараметрыСоединенияВнешнегоИсточникаДанных;    
		Соединение.АутентификацияОС=ложь;
		Соединение.АутентификацияСтандартная=ложь;
		Соединение.ИмяПользователя="укацукацу";
		Соединение.Пароль="цукаукацук";
		Соединение.СтрокаСоединения="DRIVER={PostgreSQL Unicode}; Data Source=PostgreSQL35W; SERVER=цукацука; PORT=5432; DATABASE=reports_1c; UID=цукацукацу; PWD=укацукацук";
		Соединение.СУБД="PostgreSQL";
		
		ВнешнийИсточник=ВнешниеИсточникиДанных.ОтчетыДля1С;
		ВнешнийИсточник.УстановитьОбщиеПараметрыСоединения(Соединение);
		ВнешнийИсточник.УстановитьПараметрыСоединенияПользователя(ПользователиИнформационнойБазы.ТекущийПользователь(),Соединение);	
		ВнешнийИсточник.УстановитьОбщиеПараметрыСоединения(Соединение);
		ВнешнийИсточник.УстановитьПараметрыСоединенияСеанса(Соединение);
		ВнешнийИсточник.УстановитьСоединение();
	
	конецесли;

PHP: Перевести из HEX В DEC

Оказывается перевести большое число из HEX в DEC, посредством PHP весьма затруднительно. Есть команда base_convert, но документация честно предупреждает, что если число большое — перевод будет «не точным» (ну на самом деле лучше бы вообще ошибку выдавали перевода, чем «не точную»). Поэтому пришлось использовать костыль с вызовом утилиты Linux:

echo "ibase=16;02496884004462130E23F941"|bc

Android Studio: обработка сайтов с сертификатом Минкомсвязи в webview компоненте приложения

При попытке отобразить в webview компоненте сайт с сертификатом выданным Минкомсвязи, возникает ошибка проверки SSL соединения, т.к. этому корневому сертификату система не «доверяет». В частности ошибка возникает в настоящий момент при процессинге платежей банка Тинькофф и Сбербанк. В настоящий момент существует путь заставить компонент webview корректно проходить проверку сертификата на таких сайтах. Для этого в файл манифеста приложения необходимо добавить строчку вида:

<application
        android:networkSecurityConfig="@xml/network_security_config"
...

А так-же в папке ресурсов добавить папку xml, и разместить там файл network_security_config.xml:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config>
        <domain includeSubdomains="true">ru</domain>
        <trust-anchors>
            <certificates src="@raw/root"/>
            <certificates src="@raw/sub"/>
            <certificates src="system"/>
            <certificates src="user"/>
        </trust-anchors>
    </domain-config>
</network-security-config>

Сертификаты Минкомсвязи, соответственно нужно положить в android/src/res/raw. Скачать их можно тут

В результате проведенных манипуляций, все сайты в зоне ru, будут сначала проверяться при помощи сертификата Минкомсвязи, а в случае не успеха — встроенными сертификатами системы и установленными сертификатами пользователя.

1с временная таблица уже существует

Сия ошибка оказывается может возникать и при банальном присутствии в табло отладчика записи вида:

Запрос.Выполнить()

😉 Минут 20 копья ломал пока выяснил в чем проблема

1 2 3 4