helpf.pro
Регистрация

v8: Active Directory и 1с зуп

tugev
01.11.2012 23:11Прочитано: 7567
Каким образом можно написать обработку, чтоб была синхранизация между Active Directory и 1с ЗУП, есть ли примеры
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
02.11.2012 00:14Ответ № 1
(0) tugev, а что именно надо?
я для своих админов сделал ежедневную выгрузку - подразделение, должность, фио, таб. номер, дата кадрового изменения
tugev
02.11.2012 07:05Ответ № 2
Хотелось бы увидеть, как осуществляется выгрузка из 1с в AD (ФИО, подразделение, должность) . Вы пишите про выгрузку, она автоматически работает? А загрузку из AD в 1с делали ? Смысл такой обработки в том, где раньше заведут запись о работники туда "мигрирует". А у вас из справочника физ лица выгружаются данные ?
Изменено 02.11.12 07:07:09 по причине: Ошибки
E_Migachev
02.11.2012 14:20Ответ № 3
(2) tugev, Сделано через регламентное задание (выгружается автоматом каждую ночь)
Вот код выгрузки в XML
Код 1C v 8.х
 //Выгрузка для AD
Процедура ВыгрузимДляAD() Экспорт
ПутьКФайлу = "D:\OBMEN\vAD_"+Формат(ТекущаяДата(),"ДФ=YYYYMMdd")+".xml";
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл(ПутьКФайлу, "UTF-8");
Запись.ЗаписатьОбъявлениеXML(); //<?xml version="1.0" encoding="UTF-8"?>
Запись.ЗаписатьНачалоЭлемента("orgstructure");
Запрос = Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| РаботникиОрганизацийСрезПоследних.Сотрудник,
| РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
| РаботникиОрганизацийСрезПоследних.Должность,
| РаботникиОрганизацийСрезПоследних.Период,
| РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Порядок КАК ПодразделениеОрганизацииПорядок,
| РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния,
| РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаПриемаНаРаботу КАК Прием,
| РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаУвольнения КАК Увольнение
|ИЗ
| РегистрСведений.РаботникиОрганизаций.СрезПоследних(&dateper, ) КАК РаботникиОрганизацийСрезПоследних
|
|УПОРЯДОЧИТЬ ПО
| ПодразделениеОрганизацииПорядок
|ИТОГИ ПО
| ПодразделениеОрганизации ИЕРАРХИЯ
|АВТОУПОРЯДОЧИВАНИЕ";
Запрос.УстановитьПараметр("dateper", ТекущаяДата());
Результат = Запрос.Выполнить();
Дерево = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
ОбойтиУровеньДереваAD(Дерево.Строки, Запись);
Запись.ЗаписатьКонецЭлемента();
Запись.Закрыть();
КонецПроцедуры


А это код выгрузки в CVS
Код 1C v 8.х
 //Выгрузка для AD
Процедура ВыгрузимДляADвCVS() Экспорт
Запрос=Новый Запрос;
Запрос.Текст="
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| РаботникиОрганизацийСрезПоследних.Сотрудник.Код КАК ТабНомер,
| РаботникиОрганизацийСрезПоследних.Сотрудник,
| РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,
| РаботникиОрганизацийСрезПоследних.Должность,
| РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния,
| ФИОФизЛицСрезПоследних.Фамилия,
| ФИОФизЛицСрезПоследних.Имя,
| ФИОФизЛицСрезПоследних.Отчество,
| РаботникиОрганизацийСрезПоследних.Период,
| РаботникиОрганизаций.Период КАК ПриемНаРаботу
|ИЗ
| РегистрСведений.РаботникиОрганизаций.СрезПоследних(&TekData, ) КАК РаботникиОрганизацийСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(&TekData, ) КАК ФИОФизЛицСрезПоследних
| ПО РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо = ФИОФизЛицСрезПоследних.ФизЛицо
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
| ПО РаботникиОрганизацийСрезПоследних.Сотрудник = РаботникиОрганизаций.Сотрудник
|ГДЕ
| РаботникиОрганизаций.ПричинаИзмененияСостояния = &ПричинаИзмененияСостояния
|АВТОУПОРЯДОЧИВАНИЕ
|";
Запрос.УстановитьПараметр("TekData", ТекущаяДата());
Запрос.УстановитьПараметр("ПричинаИзмененияСостояния",Перечисления.ПричиныИзмененияСостояния.ПриемНаРаботу);
Результат = Запрос.Выполнить();
Результат = Результат.Выбрать();
Путь = "D:\OBMEN\personal1C_"+Формат(ТекущаяДата(),"ДФ=YYYYMMdd")+".cvs";
Выгрузка = Новый ЗаписьТекста(Путь, КодировкаТекста.ANSI);
Пока Результат.Следующий() Цикл
Если Результат.ПричинаИзмененияСостояния = Перечисления.ПричиныИзмененияСостояния.Увольнение Тогда
Уволен = Формат(Результат.Период,"ДЛФ=D"); Иначе Уволен = "Работает"; КонецЕсли;
Выгрузка.ЗаписатьСтроку(Строка(Результат.Сотрудник.УникальныйИдентификатор())+Символы.Таб+Строка(Результат.ТабНомер)
+Символы.Таб+Строка(Результат.Фамилия)+Символы.Таб+Строка(Результат.Имя)+Символы.Таб+Строка(Результат.Отчество)
+Символы.Таб+Строка(Результат.Должность)+Символы.Таб+Строка(Результат.ПодразделениеОрганизации.ПолноеНаименование())
+Символы.Таб+Строка(Формат(Результат.ПриемНаРаботу,"ДЛФ=D"))+Символы.Таб+Строка(Уволен));
КонецЦикла;
Выгрузка.Закрыть();
КонецПроцедуры

Загрузку обратно из АD не делали - нет необходимости
Изменено 02.11.12 14:21:12
tugev
02.11.2012 14:51Ответ № 4
А этот файл Active Directory загружается с помощью скрипта ? А как анализирует, чтоб задвоенности не было по сотрудникам
E_Migachev
02.11.2012 15:09Ответ № 5
(4) tugev, как грузится понятия не имею *09, это уже делал Сам админ
а уникальность отлеживается по УникальныйИдентификатор()
tugev
02.11.2012 22:31Ответ № 6
Напишите, а с AD у вас выгрузка осуществляется ?
E_Migachev
02.11.2012 23:44Ответ № 7
(6) tugev, нет
tugev
03.11.2012 10:49Ответ № 8
Спасибо большое за ответы
Подсказка: Щелникни по Имени пользователя напротив ответа, и тем самым покажешь, что сообщение адресовано ему.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.