helpf.pro
Регистрация
 +2 
Распечатать

1С 8.x : Создание XML файла выгрузки Работников организации с Группировкой по Подразделению

Нужен XML файл выгрузки данных вида(выделю как код 8-рки, т.к. выделение xlm кода нет):
Код 1C v 8.х
 <?xml version="1.0" encoding="UTF-8"?>
<orgstructure>
<department dep_id="7ebb913c-e9c6-11dc-a4f2-0017311416a1" dep_name="генеральный директор" dep_code="П100">
<orgposition user_id="ba68bb79-c377-11dc-a4ca-0017311416a1" user_position_id="ba68bb78-c377-11dc-a4ca-0017311416a1" user_position="генеральный директор" user_is_active="1"/>
</department>
<department dep_id="8132fe4a-0789-11dd-887b-001d60f0496c" dep_name="Бухгалтерия" dep_code="П200">
<orgposition user_id="21448456-15b0-11dd-80a1-00145e3710ab" user_position_id="3c948267-df80-11dc-a4e8-0017311416a1" user_position="специалист" user_is_active="0"/>
<orgposition user_id="d299614a-df9d-11dc-a4e8-0017311416a1" user_position_id="53082fda-edf4-11dd-af3e-00145e3710ab" user_position="заместитель главного бухгалтера" user_is_active="1"/>
<orgposition user_id="8132fe6c-0789-11dd-887b-001d60f0496c" user_position_id="d299614d-df9d-11dc-a4e8-0017311416a1" user_position="секретарь" user_is_active="1"/>
<orgposition user_id="2e81c20e-f190-11dc-a4fb-0017311416a1" user_position_id="2e81c20d-f190-11dc-a4fb-0017311416a1" user_position="бухгалтер" user_is_active="0"/>
<orgposition user_id="ba68bb7e-c377-11dc-a4ca-0017311416a1" user_position_id="53082fd9-edf4-11dd-af3e-00145e3710ab" user_position="главный бухгалтер" user_is_active="1"/>
<orgposition user_id="9893f85a-0403-11df-a872-00215aa545b4" user_position_id="53073825-e5e6-11dc-a4ef-0017311416a1" user_position="делопроизводитель" user_is_active="1"/>
</department>
<department dep_id="6bb91f72-e077-11dd-bf56-00145e3710ab" dep_name="Отдел Продаж" dep_code="П300">
<department dep_id="6bb91f73-e077-11dd-bf56-00145e3710ab" dep_name="Клиентский сервис" dep_code="П310">
<orgposition user_id="02ad5122-e231-11dd-bf56-00145e3710ab" user_position_id="6bb91f6c-e077-11dd-bf56-00145e3710ab" user_position="Специалист" user_is_active="1"/>
</department>
<department dep_id="6bb91f74-e077-11dd-bf56-00145e3710ab" dep_name="Менеджеры" dep_code="П320">
<orgposition user_id="02584921-с235-11dd-bf56-00145e3710ab" user_position_id="7bb98f6c-e577-11dd-bf56-00145e3710ab" user_position="Менеджер" user_is_active="1"/>
</department>
</department>
</orgstructure>


Вот код:
Код 1C v 8.х
 Процедура ОбойтиУровеньДерева(Строки, Запись)
Для каждого Строка из Строки Цикл
Если ПустаяСтрока(Строка(Строка.Сотрудник)) Тогда
Запись.ЗаписатьНачалоЭлемента("department");
Запись.ЗаписатьАтрибут("dep_id", Строка(Строка.ПодразделениеОрганизации.УникальныйИдентификатор()));
Запись.ЗаписатьАтрибут("dep_name", Строка(Строка.ПодразделениеОрганизации));
Запись.ЗаписатьАтрибут("dep_code", СокрЛП(Строка(Строка.ПодразделениеОрганизации.Код)));
ОбойтиУровеньДерева(Строка.Строки, Запись);
Запись.ЗаписатьКонецЭлемента();
Иначе
Запись.ЗаписатьНачалоЭлемента("orgposition");
Запись.ЗаписатьАтрибут("user_id", Строка(Строка.Сотрудник.УникальныйИдентификатор()));
Запись.ЗаписатьАтрибут("user_position_id", Строка(Строка.Должность.УникальныйИдентификатор()));
Запись.ЗаписатьАтрибут("user_position", Строка(Строка.Должность));
Запись.ЗаписатьАтрибут("user_is_active", ?(Строка.ПричинаИзмененияСостояния = Перечисления.ПричиныИзмененияСостояния.Увольнение,"0","1"));
ОбойтиУровеньДерева(Строка.Строки, Запись);
Запись.ЗаписатьКонецЭлемента();
КонецЕсли
КонецЦикла;
КонецПроцедуры


Процедура КнопкаВыгрузитьНажатие(Кнопка)
ПутьКФайлу = "D:\Vigruzka_"+Формат(ТекущаяДата(),"ДФ=YYYYMMdd")+".xml";
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл(ПутьКФайлу, "UTF-8");
Запись.ЗаписатьОбъявлениеXML(); //<?xml version="1.0" encoding="UTF-8"?>
Запись.ЗаписатьНачалоЭлемента("orgstructure");
Запрос = Новый Запрос;
Запрос.Текст="
|ВЫБРАТЬ
| РаботникиОрганизацийСрезПоследних.Сотрудник,
| РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
| РаботникиОрганизацийСрезПоследних.Должность,
| РаботникиОрганизацийСрезПоследних.Период,
| РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Порядок КАК ПодразделениеОрганизацииПорядок,
| РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния
|ИЗ
| РегистрСведений.РаботникиОрганизаций.СрезПоследних(&dateper, ) КАК РаботникиОрганизацийСрезПоследних
|
|УПОРЯДОЧИТЬ ПО
| ПодразделениеОрганизацииПорядок
|ИТОГИ ПО
| ПодразделениеОрганизации ИЕРАРХИЯ
|АВТОУПОРЯДОЧИВАНИЕ
|";
Запрос.УстановитьПараметр("dateper", ТекущаяДата());
Результат = Запрос.Выполнить();
Дерево = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
ОбойтиУровеньДерева(Дерево.Строки, Запись);
Запись.ЗаписатьКонецЭлемента();
Запись.Закрыть();
КонецПроцедуры
Разместил:   Версии: | 8.x | 8.2 УП |  Дата:   Прочитано: 24328
 +2 
Распечатать
Возможно, вас также заинтересует
QR код в 1С 10
Столкнулся с интересной задачей реализации генерации QR-кода в 1С 8.2 ( QR-код — матричный код (двухмерный штрихкод) ) Для генерации было использовано api от google (http://chart.apis.google.com/chart). Вот сайт , который работает с ним. После...
SMTP greeting failure: 421 SMTP connection broken (reply) 2
Опи­са­ние ошиб­ки: С сен­тяб­ря 2014 Ян­декс.Почта, Mail.ru пе­ре­шли на про­то­кол SSL, что сде­ла­ло их еще более без­опас­ны­ми. Чтобы и даль­ше ра­бо­тать с пись­ма­ми через 1С, Вам нужно из­ме­нить их на­строй­ки и...
ZIP-архив Создание 0
Для того чтобы записать файлы в ZIP-архив необходимо выполнить несколько простых действий: * Создать архив с необходимыми параметрами, в который будут помещаться файлы. * Поместить в архив необходимые файлы. * Записать...
Автоматизация обмена данных используя обработку "Универсальный обмен данными в формате XML" 3
Автоматизация обмена между базами используя обработку " Универсальный обмен данными в формате XML" В основу данной публикации положены найденные мною материалы по cозданию обмена между двумя базами с использованием ...
Автоматическая архивация баз 1С 8.х для файлового и клиент-серверного варианта 3
Данный способ архивации подходит для файловых и SQL версий баз 1С: И так: 1. Создаем скрипт vbs и сохраняем его в C:BackupZUP.vbs Set WshShell = CreateObject(" WScript.Shell" ) dim d,m,y d = day(date()) if d 10 then d = " 0" d end
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.