1С: получаем список НКО с сервера minjust.gov.ru

Почему то у нас как всегда всё.. Государство требует проверять контрагента является ли он НКО, а инструментарий для этого не предлагает. Не, ну какой-никакой сервис у них был — можно было зайти на сайт, ввести в поле поиска название НКО и и получить результат — есть в списке это организация или нет. Но это согласитесь бред. «Автоматизировать процесс проверки?? А зачем? Куча бухгалтеров — бездельников, чего делать будет? ;)». Всего файла целиком скачать возможности не было. Поэтому приходилось парсить у них сайт, собирая по кусочками Excel файлы в одну кучу (была у них кнопка «экспорт текущей страницы»). Теперь сайт изменили..но лучше не стало. Возможности скачать весь файл целиком как не было так и не стало. Чуть поковыряв их страницу нашел как получить «сессионный ключ» и способ как передавать правильные POST параметры, чтобы получить кусочки JSON, кои потом можно склеить в единую базу. Результат вылился в обработку для 1С, которую можно скачать тут

1С Бухгалтерия 3.0.121.31: отправка письма

В данной версии БСП используемой в БУх, отправка письма производится так:

	тело="Прювет";
	ПараметрыПисьма = Новый Структура("Кому, Тема, Тело,ТипТекста", объект.email, "Абырвалг", тело,"HTML");
	РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(РаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись(),ПараметрыПисьма);

1С: POST запросы

POST запрос к какому то ресурсу в 1С можно организовать например примерно так:

&НаСервере
Функция СтруктураВСтрокуJSON(Данные)экспорт
	
		ЗаписьJSON = Новый ЗаписьJSON();
		ЗаписьJSON.УстановитьСтроку();
		ЗаписатьJSON(ЗаписьJSON, Данные);
		ответ=ЗаписьJSON.Закрыть();
		// заменим -999999999 на null раз уж 1С это не умеет
		ответ=стрЗаменить(ответ,"-999999999","null");
		возврат ответ;
	
КонецФункции
&НаСервере
Функция API_SendSMS(УРЛ,Логин,Пароль,Отправитель,Телефон,ТекстСмс,ВремяЖизни=360)экспорт
	Соединение=ПолучитьПараметрыСоединения(УРЛ,Логин,Пароль);
	answer=API_getSessionID(Соединение,Логин,Пароль);
	если answer.error=true тогда возврат answer;конецесли;	
	
	ПОСТ_Структура=Новый Структура("sessionId,sourceAddress,data,destinationAddress,validity");
	ПОСТ_Структура.sessionId=answer.result; 		 //идсессии,
	ПОСТ_Структура.sourceAddress=Отправитель;  		 //имяотправителя
	ПОСТ_Структура.destinationAddress=Телефон;		 //получатель(номер)
	ПОСТ_Структура.data=ТекстСмс;	 				 //текст сообщения
	ПОСТ_Структура.validity=ВремяЖизни; 			 //время жизни в минутах

	Заголовки = Новый Соответствие;
	Заголовки["Content-Type"] = "application/json";	
	Заголовки.Вставить("Connection", "keep-alive");	
	Заголовки.Вставить("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)");

	HTTPЗапрос = Новый HTTPЗапрос("/rest/Sms/Send",Заголовки);
	HTTPЗапрос.УстановитьТелоИзСтроки(СтруктураВСтрокуJSON(ПОСТ_Структура), КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
	
	Результат = Соединение.ВызватьHTTPМетод("POST",HTTPЗапрос);
	РезЗапроса=JSONВСтруктуру(Результат.ПолучитьТелоКакСтроку());
	если ТипЗнч(РезЗапроса)=Тип("Строка") тогда
		answer.error=true;
		answer.result=РезЗапроса;
		возврат answer;
	конецесли;	
	если ТипЗнч(РезЗапроса)=Тип("Структура") тогда
		answer.error=true;
		answer.result=РезЗапроса.Desc;
		возврат answer;		
	конецесли;	
	answer.error=false;
	answer.result=РезЗапроса[0];
	возврат answer;
	
КонецФункции

1С: Автоматическое сохранение данных на форме

Часто бывает ситуация, что необходимо во внешней обработке какие-то реквизиты позволять пользователю сохранять. Классический вариант — сохранять данные в пользовательских настройках, или придумывать иное место хранения. Но для этого нужны телодвижения со стороны программиста. С недавних пор (ну как с недавних, лет 5 уже 😉 ) , есть уже штатный способ, встроенный в платформу:

Автоматическое сохранение данных»В свойствах формы выбираем «Автоматическое сохранение данных» = использовать:

И далее проставляем в графе «Сохранение» галочки у тех реквизитов, которые необходимо сохранять:

1C: Генератор паролей

Функция ГенерацияСлучайногоПароля(длн)
    ГСЧ = Новый ГенераторСлучайныхЧисел(ТекущаяУниверсальнаяДатаВМиллисекундах());    
    СлучайнаяСтрока = "";
    Для Сч = 1 по длн Цикл        
        Набор = ГСЧ.СлучайноеЧисло(1,7);    
        Если Набор = 1 Тогда
            // это число
            СлучайныйСимвол = ГСЧ.СлучайноеЧисло(0,9);    
        ИначеЕсли Набор = 2 Тогда
            // это Большая буква латиницы
            СлучайныйСимвол = Символ(ГСЧ.СлучайноеЧисло(65,90));
        ИначеЕсли Набор >= 3 Тогда
            // это маленькая буква латиницы
            СлучайныйСимвол = Символ(ГСЧ.СлучайноеЧисло(97,122));
		КонецЕсли;			
        Если Набор >= 7 Тогда
            // это спецсимвол
			спецсимволы="!@#$&*()_-+[]^";
			поз=ГСЧ.СлучайноеЧисло(0,стрдлина(спецсимволы));
            СлучайныйСимвол =Сред(спецсимволы,поз,1);						
        КонецЕсли;
		
        СлучайнаяСтрока = СлучайнаяСтрока + СлучайныйСимвол;
    КонецЦикла;      
    Возврат(СлучайнаяСтрока);    
КонецФункции
1 8 9 10 11 12 37