Рубрики: DEV

DEV

Добавление пользователя в Обновляторе-1С

Поступила интересная задача по автоматическому заведению пользователя сразу в несколько баз 1С Бухгалтерия 3.0 с помощью Обновлятора-1С.

При создании пользователя должны прописываться следующие параметры:
1. Имя пользователя.
2. Полное Имя.
3. Вход в программу разрешен = истина
4. Аутентификация 1С Предприятие = истина
5. Пароль для пользователя.
6. Потребовать смену пароля при входе = истина
7. Пользователю запрещено менять пароль = ложь
8. Пользователю запрещено восстанавливать пароль = ложь
9. Показывать в списке выбора = ложь
10. Электронная почта.

Права доступа:
1. Администратор
2. Главный бухгалтер
3. Открытие внешних отчетов.
4. Синхронизация с другими программами.

Решение есть и даже в нескольких вариантах, но все же пришлось повозиться со скриптом из-за электронной почты (она не мигрирует автоматически из пользователя конфигуратора в пользователя 1С БСП и просит закончить миграцию самостоятельно) и прав доступа через профили групп доступа.

В итоге родился следующий код:

#use "updater1c"

// ****************************************************************************
// Переменные модуля
// ****************************************************************************

Перем errors;		// Признак того, что при выполнении скрипта были ошибки.
Перем updater;	// Обновлятор, через который мы получаем информацию о базе,
				// а также вызываем различные функции обновлятора.
Перем connector; 	// Коннектор для подключения к базе.
Перем v8;		// Само подключение к базе через коннектор.

// ****************************************************************************
// Ваш код для выполнения обновлятором
// ****************************************************************************

Процедура Главная()

	ИмяПользователя = "Тест";
	ПолноеИмяПользователя = "Тестов Тест";
	Пароль = "123";
	ЭлПочта = "test@mail.ru";
	
	// создаём пользователя ИБ
	ПользовательИБ = v8.ПользователиИнформационнойБазы.СоздатьПользователя(); 
	ПользовательИБ.Имя = ИмяПользователя; 
	ПользовательИБ.ПолноеИмя = ПолноеИмяПользователя;
	ПользовательИБ.Пароль = Пароль;
	ПользовательИБ.ПоказыватьВСпискеВыбора = Ложь;
	ПользовательИБ.АутентификацияОС = Истина;
	ПользовательИБ.АутентификацияСтандартная = Истина;
	ПользовательИБ.ЗапрещеноИзменятьПароль = Ложь;
	ПользовательИБ.ЗапрещеноВосстанавливатьПароль = Ложь;
	ПользовательИБ.АдресЭлектроннойПочты = ЭлПочта;
	 
	Если v8.ПользователиИнформационнойБазы.НайтиПоИмени(ПользовательИБ.Имя) = Неопределено Тогда		
		ПользовательИБ.Записать();	
		Сообщить("Новый пользователь создан.");
	Иначе
		Сообщить("Пользователь с таким именем уже есть в базе!");	
		Возврат;
	КонецЕсли;
	
	// создаём пользователя в справочнике Пользователи
	Пользователь = v8.Справочники.Пользователи.СоздатьЭлемент();	
	Пользователь.Наименование = ПользовательИБ.ПолноеИмя;
	Пользователь.Недействителен = Ложь;
	
	ОписаниеПользователяИБ = v8.NewObject("Структура");
	ОписаниеПользователяИБ.Вставить("Действие", "Записать");
	ОписаниеПользователяИБ.Вставить("УникальныйИдентификатор", ПользовательИБ.УникальныйИдентификатор);
	ОписаниеПользователяИБ.Вставить("Имя", ИмяПользователя);
	ОписаниеПользователяИБ.Вставить("ПолноеИмя", ПолноеИмяПользователя);
	ОписаниеПользователяИБ.Вставить("АутентификацияСтандартная", Истина);
	ОписаниеПользователяИБ.Вставить("АутентификацияОС", Истина); 
	ОписаниеПользователяИБ.Вставить("Пароль", Пароль); 
	ОписаниеПользователяИБ.Вставить("Почта", ЭлПочта);
	ОписаниеПользователяИБ.Вставить("АдресЭлектроннойПочты", ЭлПочта);
	ОписаниеПользователяИБ.Вставить("ПоказыватьВСпискеВыбора", Ложь); 
	ОписаниеПользователяИБ.Вставить("ЗапрещеноИзменятьПароль", Ложь); 
	ОписаниеПользователяИБ.Вставить("ЗапрещеноВосстанавливатьПароль", Ложь); 
	ОписаниеПользователяИБ.Вставить("РежимЗапуска", "Авто");
	ОписаниеПользователяИБ.Вставить("ВходВПрограммуРазрешен", Истина);
	ОписаниеПользователяИБ.Вставить("ПотребоватьСменуПароляПриВходе", Истина);
	
	Пользователь.ДополнительныеСвойства.Вставить("ОписаниеПользователяИБ", ОписаниеПользователяИБ);
	Пользователь.Записать();
	
	//e-mail добавим через контактуню информацию
	ВидКонтактнойИнформации = v8.Справочники.ВидыКонтактнойИнформации.EmailПользователя;
	ТипКонтактнойИнформации = ВидКонтактнойИнформации.Тип;
	ЗначенияПолей = v8.УправлениеКонтактнойИнформацией.КонтактнаяИнформацияПоПредставлению(ЭлПочта, ВидКонтактнойИнформации);	
	
	v8.УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(Пользователь, ЗначенияПолей, ВидКонтактнойИнформации, ТипКонтактнойИнформации);
	Пользователь.Записать();

	ТекПользователь = Пользователь.Ссылка;
	
	// назначаем права пользователю ИБ
	ТекПрофиль = v8.Справочники.ПрофилиГруппДоступа.НайтиПоНаименованию("Администратор");
	v8.УправлениеДоступом.ВключитьПрофильПользователю(ТекПользователь, ТекПрофиль);
	
	ТекПрофиль = v8.Справочники.ПрофилиГруппДоступа.НайтиПоНаименованию("Главный бухгалтер");
	v8.УправлениеДоступом.ВключитьПрофильПользователю(ТекПользователь, ТекПрофиль);
	
	ТекПрофиль = v8.Справочники.ПрофилиГруппДоступа.НайтиПоНаименованию("Открытие внешних отчетов и обработок");
	v8.УправлениеДоступом.ВключитьПрофильПользователю(ТекПользователь, ТекПрофиль);
	
	ТекПрофиль = v8.Справочники.ПрофилиГруппДоступа.НайтиПоНаименованию("Синхронизация данных с другими программами");
	v8.УправлениеДоступом.ВключитьПрофильПользователю(ТекПользователь, ТекПрофиль);

КонецПроцедуры

// ****************************************************************************
// Служебные процедуры
// ****************************************************************************

Процедура ПриНачалеРаботы()

	errors = Ложь;
	updater = Новый Updater1C;
	connector = updater.CreateConnector();
	v8 = updater.BaseConnectNew(connector);
	
КонецПроцедуры

Процедура ПриОкончанииРаботы()

	Если v8 <> Неопределено Тогда
		Попытка
			ОсвободитьОбъект(v8);
			v8 = Неопределено;
		Исключение
		КонецПопытки;
	КонецЕсли;
	
	Если connector <> Неопределено Тогда
		Попытка
			ОсвободитьОбъект(connector);
			connector = Неопределено;
		Исключение
		КонецПопытки;
	КонецЕсли;
	
	Если updater <> Неопределено Тогда
		Попытка
			ОсвободитьОбъект(updater);
			updater = Неопределено;
		Исключение
		КонецПопытки;
	КонецЕсли;

	Приостановить(1000);

	Если errors Тогда
		ЗавершитьРаботу(1);
	КонецЕсли;

КонецПроцедуры

// ****************************************************************************
// Инициализация и запуск скрипта
// ****************************************************************************

ПриНачалеРаботы();

Попытка
	Главная();
	updater.КодПользователяВыполнился();
Исключение
	errors = Истина;
	Сообщить("<span class='red'><b>" + ОписаниеОшибки() + "</b></span>");
КонецПопытки;

ПриОкончанииРаботы();
DEV

Разработка Web-приложений и микросервисов на Go с Gin

Вве­де­ние

Се­год­ня мы по­ка­жем, как со­зда­вать веб-при­ло­же­ния и мик­ро­сер­ви­сы в Go с по­мо­щью фрейм­вор­ка Gin. Gin это фрейм­ворк, поз­во­ля­ю­щий умень­шить объ­ём ко­да, необ­хо­ди­мо­го для по­стро­е­ния та­ких при­ло­же­ний. Он по­ощ­ря­ет со­зда­ние мно­го­крат­но-ис­поль­зу­е­мо­го и рас­ши­ря­е­мо­го ко­да.

Мы рас­смот­рим со­зда­ние про­ек­та и сбор­ку неслож­но­го при­ло­же­ния с Gin, ко­то­рое бу­дет вы­во­дить спи­сок то­пи­ков и от­дель­ный то­пик.

Под­го­тов­ка

Пе­ред на­ча­лом ра­бо­ты убе­ди­тесь, что у вас уста­нов­ле­ны Go и ути­ли­та curl. Ес­ли curl не уста­нов­ле­на и вы не хо­ти­те ра­бо­тать с ней, ис­поль­зуй­те лю­бую дру­гую ути­ли­ту те­сти­ро­ва­ния API.

Что та­кое Gin?

Gin это вы­со­ко­про­из­во­ди­тель­ный мик­рофрейм­ворк, ко­то­рый ис­поль­зу­ет­ся для со­зда­ния веб-при­ло­же­ний и мик­ро­сер­ви­сов. С ним очень удоб­но де­лать ком­плекс­ную кон­вей­ер­ную об­ра­бот­ку за­про­сов из мо­ду­лей — мно­го­крат­но ис­поль­зу­е­мых ку­соч­ков ко­да. Вы пи­ше­те про­ме­жу­точ­ный слой при­ло­же­ния, ко­то­рый за­тем под­клю­ча­ет­ся в один или бо­лее об­ра­бот­чик за­про­сов или в груп­пу об­ра­бот­чи­ков.

Читать далее
DEV

Создание одностраничного веб-приложения на Go, Echo и Vue

Се­год­ня мы со­зда­дим неслож­ное при­ло­же­ние для ве­де­ния спис­ка за­дач. В нём мож­но бу­дет ука­зы­вать на­име­но­ва­ние за­да­чи, вы­во­дить со­здан­ные за­да­чи на экран и уда­лять за­да­чи.

Бэ­кенд при­ло­же­ния бу­дет на­пи­сан на язы­ке Go. Для луч­ше­го по­ни­ма­ния ма­те­ри­а­ла необ­хо­ди­мы хо­тя бы ми­ни­маль­ные зна­ния син­так­си­са и уста­нов­лен­ный Go.

Что­бы уско­рить со­зда­ние при­ло­же­ния, мы возь­мём мик­ро-фрейм­ворк Echo. А за­да­чи мы бу­дем хра­нить в ба­зе SQLite.

Фрон­тенд мы со­зда­дим на HTML5 с по­пу­ляр­ным Javascript фрейм­вор­ком VueJS.

Читать далее
DEV

Создание списка задач с Vue.js

Се­год­ня мы со­зда­дим при­ло­же­ние — спи­сок за­дач с Vue.​js, а та­к­же рас­смот­рим и дру­гие удоб­ные ин­стру­мен­ты для со­зда­ния со­вре­мен­ных веб-при­ло­же­ний.

Убе­ди­тесь, что у вас уста­нов­ле­на Vue CLI! Ес­ли нет, то уста­но­ви­те её ко­ман­дой

$ npm install --global vue-cli
Читать далее