Имя: Пароль:
1C
1C 7.7
v7: Выгрузка в XML
0 Nas1993
 
08.12.13
12:58
Здравствуйте,помогите пожалуйста с выгрузкой в XML.нужно добавить условия
1 условие что элемент Графика отпусков не помечен на удаление
2.  условие что входит в Дату выгрузки
3.  условие что Документ равен "График отпусков" или "график отпусков списком"
мой код:
//*******************************************
Процедура Сформировать()
        
        ТЗДанные             = СоздатьОбъект("ТаблицаЗначений");
            ТЗДанные.НоваяКолонка("Фамилия");
            ТЗДанные.НоваяКолонка("Имя");
            ТЗДанные.НоваяКолонка("Отчество");
            ТЗДанные.НоваяКолонка("Должность");
            ТЗДанные.НоваяКолонка("Филиал");
            ТЗДанные.НоваяКолонка("Компания");
            ТЗДанные.НоваяКолонка("ДатаНачала");
            ТЗДанные.НоваяКолонка("ДатаОкончания");
    
            
        ДатаВыгрузки                 = ТекущаяДата();
        ДатаВыгрузкиСледСледМесяц     = ДобавитьМесяц(ДатаВыгрузки, 2);
    
        СправочникГрафикОтпусков = СоздатьОбъект("Справочник.ГрафикОтпусковСотрудника");
        СправочникГрафикОтпусков.ВыбратьЭлементы(0);  
        
        
        Пока СправочникГрафикОтпусков.ПолучитьЭлемент() = 1 Цикл  
              
            Если (СправочникГрафикОтпусков.ПометкаУдаления() = 1)
                       или (СправочникГрафикОтпусков.ЭтоГруппа() = 1)
                           или (СправочникГрафикОтпусков.ПринадлежитГруппе(Константа.ГруппаУволенных) = 1)
                               или (СправочникГрафикОтпусков.ПринадлежитГруппе(Константа.ПапкаПрактикантов) = 1)
                       Тогда Продолжить;
               КонецЕсли;
              
         //Если НачМесяца(СправочникГрафикОтпусков.ДатаНачПоГрафику)=НачМесяца(ДатаВыгрузкиСледСледМесяц)  Тогда
              
                       ТЗДанные.НоваяСтрока();
                       ТЗДанные.Фамилия     = Падеж(СправочникГрафикОтпусков.Владелец.Наименование,1,3,"1");
                    ТЗДанные.Имя         = Падеж(СправочникГрафикОтпусков.Владелец.Наименование,1,3,"2");
                     ТЗДанные.Отчество     = Падеж(СправочникГрафикОтпусков.Владелец.Наименование,1,3,"3");
                       ТЗДанные.Должность     = СправочникГрафикОтпусков.Владелец.Должность.Получить(ТекущаяДата());
                    ТЗДанные.Филиал     = СправочникГрафикОтпусков.Владелец.Филиал.Получить(ТекущаяДата());
                    ТЗДанные.Компания     = СправочникГрафикОтпусков.Компания;
                    ТЗДанные.ДатаНачала =СправочникГрафикОтпусков.ДатаНачПоГрафику;
                    ТЗДанные.ДатаОкончания =СправочникГрафикОтпусков.ДатаКонПоГрафику;                                                                    
                    
                    
                
        //КонецЕсли;
                
        КонецЦикла;
          
    
        ТЗДанные.Сортировать("ДатаНачала, Фамилия");
        
    
        
        Если ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "ExtForms\" + "v7plus.dll") <> 1 Тогда
        Сообщить("Компонента v7plus.dll не найдена!");
            Возврат;        
        КонецЕсли;
        
        XMLАнализатор                 = СоздатьОбъект("AddIn.XMLParser");
        XMLКорневойРаздел             = XMLАнализатор.СоздатьДокумент();
        XMLКорневойРаздел.Кодировка    ="UTF-8";
        ДанныеXML                     = XMLКорневойРаздел.СоздатьПодчиненныйЭлемент("root");
        
        ИмяФайла                    = "file.xml";
        ПутьЛокальный                = КаталогИБ() + "ExtForms\";  
        
        ТЗДанные.ВыбратьСтроки();
        
        Пока ТЗДанные.ПолучитьСтроку() = 1 Цикл
            Ветка = ДанныеXML.СоздатьПодчиненныйЭлемент("item");
            Ветка.УстановитьАтрибут("surname"           , СокрЛП(ТЗДанные.Фамилия));
            Ветка.УстановитьАтрибут("name"              , СокрЛП(ТЗДанные.Имя));
            Ветка.УстановитьАтрибут("patronymic"        , СокрЛП(ТЗДанные.Отчество));
            Ветка.УстановитьАтрибут("company"            , ТЗДанные.Компания.Наименование);
            Ветка.УстановитьАтрибут("dateofbegining"    , Строка(ТЗДанные.ДатаНачала));
            Ветка.УстановитьАтрибут("dateofending"      , Строка(ТЗДанные.ДатаОкончания));
            Ветка.УстановитьАтрибут("position"            , ТЗДанные.Должность.Наименование);
            Ветка.УстановитьАтрибут("filial"            , ТЗДанные.Филиал.Наименование);
        КонецЦикла;
        
        Если ФС.СуществуетФайл( + ИмяФайла) = 1 Тогда
            ФС.УдалитьФайл(ПутьЛокальный + ИмяФайла);
        КонецЕсли;
        
        XMLКорневойРаздел.Записать(ПутьЛокальный + ИмяФайла);
КонецПроцедуры
1 Тьма
 
08.12.13
14:05
1. Условие выполняется строчкой
Если (СправочникГрафикОтпусков.ПометкаУдаления() = 1)
2. В тексте присутствует переменная ДатаВыгрузки, реквизиты ДатаНачПоГрафику и ДатаКонПоГрафику справочника графиков. Как именно формулируется условие? Нужны графики, которые включают в себя эту дату? Или графики, которые начинаются в том же месяце, что и дата выгрузки? Или заканчиваются? Что означает
ДатаВыгрузкиСледСледМесяц     = ДобавитьМесяц(ДатаВыгрузки, 2);
и закомментированное условие?
3. Какой именно Документ имеется ввиду и какое отношение он имеет к справочнику графиков, перебор которого осуществляется? Не вижу никакой привязки документа к справочнику или наоборот.
2 Nas1993
 
08.12.13
15:47
ДатаВыгрузкиСледСледМесяц     = ДобавитьМесяц(ДатаВыгрузки, 2); это означает ,что выгрузка отпусков сотрудников будет за январь(поэтому следслед и 2)