1С: проверка вилидности email и пароля

Ну например можно организовать вот так:

Функция ПарольСоответствуетТребованиям (Пароль) экспорт
	УстановитьПроверкуСложностиПаролейПользователей(Истина);
	ВременныйПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя();
	ВременныйПользовательИБ.АутентификацияСтандартная = Истина;
	ВременныйПользовательИБ.Имя = НСтр("ru = 'Временный пользователь'")+
	" (" + Строка(Новый УникальныйИдентификатор) + ")";
	ВременныйПользовательИБ.Пароль = Пароль;
	ХорошийПароль = Истина;
	Попытка
		ВременныйПользовательИБ.Записать();
	Исключение
		ХорошийПароль = Ложь;
	КонецПопытки;
	ВременныйПользовательИБ.Удалить();
Возврат ХорошийПароль;
КонецФункции
Функция ПроверкаВалидностиEmail(Адрес) Экспорт
    ЛатинскиеБуквы = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    Цифры = "0123456789";
    //ищем крайний справа символ @ для правильного выделения локальной и доменной части
    ИндексСобаки = Найти(Адрес,"@");
    //1. строка адреса вообще не содержит разделителя
    Если ИндексСобаки = 0 Тогда
        Возврат ЛОЖЬ;
    КонецЕсли;
    УрезаемаяСтрока = Сред(Адрес, ИндексСобаки+1);
    Пока Найти(УрезаемаяСтрока,"@") > 0 Цикл
        ИндексСобаки = ИндексСобаки + Найти(УрезаемаяСтрока,"@");
        УрезаемаяСтрока = Сред(УрезаемаяСтрока, ИндексСобаки+1);
    КонецЦикла;
    ДоменнаяЧасть = Сред(Адрес, ИндексСобаки+1);
    ЛокальнаяЧасть = Лев(Адрес, ИндексСобаки-1);
    //2. Проверяем длину локальной части
    Если СтрДлина(ЛокальнаяЧасть) < 1 ИЛИ СтрДлина(ЛокальнаяЧасть) > 64 Тогда
        Возврат ЛОЖЬ;
    КонецЕсли;
    //3. Проверяем длину доменной части
    Если СтрДлина(ДоменнаяЧасть) < 1 ИЛИ СтрДлина(ДоменнаяЧасть) > 255 Тогда
        Возврат ЛОЖЬ;
    КонецЕсли;
    //4. Проверяем что локальная части не начинается и не заканчивается на "."
    Если Лев(ЛокальнаяЧасть, 1) = "." ИЛИ Прав(ЛокальнаяЧасть, 1) = "." Тогда
        Возврат ЛОЖЬ;
    КонецЕсли;
    //5. Локальная части не содержит 2 или более "." подряд
    Если Найти(ЛокальнаяЧасть, "..") > 0 Тогда
        Возврат ЛОЖЬ;
    КонецЕсли;
    //Проверка доменной части
    //6. Доменная часть не начинается с точки
    Если Лев(ДоменнаяЧасть, 1) = "." Тогда
        Возврат ЛОЖЬ;
    КонецЕсли;
    //7. Доменная часть не содержит 2 или более "." подряд
    Если Найти(ДоменнаяЧасть, "..") > 0 Тогда
        Возврат ЛОЖЬ;
    КонецЕсли;
    //8. Проверка частей доменной части
    //каждая часть начинается с буквы и заканчивается буквой или цифрой
    //каждая часть длиной не более 63 символов
    ИдентификаторыДоменнойЧасти = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ДоменнаяЧасть, ".");
    Для Каждого ИдентификаторДомена ИЗ ИдентификаторыДоменнойЧасти Цикл
        Если СтрДлина(ИдентификаторДомена) > 63 Тогда
            Возврат ЛОЖЬ;
        КонецЕсли;
        Если Найти(ЛатинскиеБуквы, Лев(ИдентификаторДомена,1)) = 0
            //для доменов, нарушающих RFC 1035 п.2.3.1, например @1c.ru :)
            И Найти(Цифры, Лев(ИдентификаторДомена,1)) = 0
            Тогда
            Возврат ЛОЖЬ;
        КонецЕсли;
        Если Найти(ЛатинскиеБуквы, Прав(ИдентификаторДомена,1)) = 0 И Найти(Цифры, Прав(ИдентификаторДомена,1)) = 0 Тогда
            Возврат ЛОЖЬ;
        КонецЕсли;
    КонецЦикла;
    //Все проверки пройдены - радуемся
    Возврат ИСТИНА;
КонецФункции

1c: ошибка конвертирования в JSON значений с null

Сегодня словил чудный глюк. 1С при :

ЗаписьJSON = Новый ЗаписьJSON();
	ЗаписьJSON.УстановитьСтроку();
	ЗаписатьJSON(ЗаписьJSON, answer);
	JSONanswer = ЗаписьJSON.Закрыть();

В том случае, если внтури структуры answer есть значения с null, выдавал ошибку записи JSONanswer.

Решение:

при формировании ответа делаем проверку на null:

		|	ВЫБОР
		|		КОГДА ПользователиПриложения.КлиентЮрлицо.Код ЕСТЬ NULL
		|			ТОГДА """"
		|		ИНАЧЕ ПользователиПриложения.КлиентЮрлицо.Код
		|	КОНЕЦ КАК ЮрлицоКод

 

Настройка сервера GIT на CentOS 7.8

1)  Установим git:

yum install git

2) Установим gitweb:

git clone git://git.kernel.org/pub/scm/git/git.git
cd git/
make GITWEB_PROJECTROOT="/srv/git" prefix=/usr gitweb
sudo cp -Rf gitweb /var/www/

, где в переменную GITWEB_PROJECTROOT прописываем путь, где будут храниться репозитарии

3) Настроим Apache:

ServerName gitserver
DocumentRoot /var/www/gitweb
Options +ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
AllowOverride All
order allow,deny
Allow from all
AddHandler cgi-script cgi
DirectoryIndex gitweb.cgi

4) Возможно понадобиться установить дополнительно модули для Perl:

yum install perl-Digest-MD5 perl-CGI -y

5) Создание репозитария:

cd /srv/git
mkdir newrep
cd newrep
git init

Взаимодействие с HTTP сервисом 1с через PHP

Приём данных  и ответ от 1С :

Функция telegram_callbacktcallback(Запрос)
	 
  	ЧтениеJSON = Новый ЧтениеJSON; 
 	ЧтениеJSON.УстановитьСтроку(Запрос.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8)); 
 	JSONM = ПрочитатьJSON(ЧтениеJSON); 
 	ЧтениеJSON.Закрыть();	 
	
	
	HTTPОтвет = Новый HTTPСервисОтвет(200);
	HTTPОтвет.УстановитьТелоИзСтроки("Всем привет");
	HTTPОтвет.Заголовки["Content-Type"] = "text/html; charset=utf-8";
	Возврат HTTPОтвет;	

КонецФункции

Обращение к сервису 1С из PHP:

<?php
mb_internal_encoding("UTF-8");
$bodyz = file_get_contents('php://input');
$body =$bodyz;

$data=Date("d-m-Y H:i:s")." Ent:".serialize($body)."\n";
file_put_contents('telegram.log', $data, FILE_APPEND);

        $url = "https://сервер:80/путь/вызов";
        $ch = curl_init($url);
            curl_setopt($ch, CURLOPT_USERPWD, "ЛОГИН.:ПАРОЛЬ");
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));

            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS,$bodyz);
            $response = curl_exec($ch);
            var_dump($response);

        if(curl_errno($ch)){
            throw new Exception(curl_error($ch));
        };
        echo $response;
$data=Date("d-m-Y H:i:s")." Exit:".serialize($response)."\n";
file_put_contents('telegram.log', $data, FILE_APPEND);
?>

 

Жизнь замечательных грибов