Процедура Сформировать() Перем ОбщаяСумма, Фамилия, Имя, Отчество, Счетчик; ОбщаяСумма = 0; Если ПроверкаЗначений() = 0 Тогда Сообщить("Ошибка! Выгрузка не завершена!!!","!!!"); Возврат; КонецЕсли; //---------------------------------------------- // XML инициализация //---------------------------------------------- Если ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "v7plus.dll") <> 1 Тогда Предупреждение("Компонента v7plus.dll не найдена!"); СтатусВозврата(0); Возврат; КонецЕсли; гXMLАнализатор = СоздатьОбъект("AddIn.XMLParser"); ВерсияАнализатора = гXMLАнализатор.ВерсияАнализатора; НомерФайла = 0; гФайлДанных = гXMLАнализатор.СоздатьПоследовательноЗаписываемыйДокумент(); СтрФаилБазыДанных = "OUT" + Формат(ДатаФормирования,"ДГГГГММДД") + Формат(НомерФайла,"Ч(0)5") + ".xml"; ПолныйПутьКФайлу = СокрЛП(Каталог) + "\" + СтрФаилБазыДанных; // ПроверкаНаСуществованиеФайла Пока ФС.СуществуетФайл(ПолныйПутьКФайлу) = 1 Цикл Сообщить("Фаил номер [" + НомерФайла + "] уже существует. Произвожу поиск свободного номера.","i"); НомерФайла = НомерФайла + 1; СтрФаилБазыДанных = "OUT" + Формат(ДатаФормирования,"ДГГГГММДД") + Формат(НомерФайла,"Ч(0)5") + ".xml"; ПолныйПутьКФайлу = СокрЛП(Каталог) + "\" + СтрФаилБазыДанных; Если НомерФайла >= 99999 Тогда Предупреждение("Ненайден номер файла для выгрузки! Выгрузка произведена не будет."); СтатусВозврата(0); Возврат; КонецЕсли; КонецЦикла; Сообщить("Найден доступный номер [" + НомерФайла + "] файла выгрузки. Создан фаил [" + СтрФаилБазыДанных + "]. Произвожу выгрузку.","i"); гФайлДанных.ИмяФайла = ПолныйПутьКФайлу; //---------------------------------------------- //---------------------------------------------- АтрибутыЭлемента = гФайлДанных.АтрибутыЭлемента; АтрибутыЭлемента.УдалитьВсе(); АтрибутыЭлемента.УстановитьАтрибут("ДатаФормирования", Строка(Формат(ДатаГод(ДатаФормирования),"Ч(0)4") + "-" + Формат(ДатаМесяц(ДатаФормирования),"Ч(0)2") + "-" + Формат(ДатаЧисло(ДатаФормирования),"Ч(0)2"))); АтрибутыЭлемента.УстановитьАтрибут("НомерДоговора", НомерДоговора); АтрибутыЭлемента.УстановитьАтрибут("НаименованиеОрганизации", НаименованиеОрганизации); АтрибутыЭлемента.УстановитьАтрибут("ИНН", ИНН); АтрибутыЭлемента.УстановитьАтрибут("РасчетныйСчетОрганизации", РасчетныйСчетОрганизации); АтрибутыЭлемента.УстановитьАтрибут("БИК", БИК); Попытка ПустоеЗнч = ПустоеЗначение(Выплата.GUID); Исключение Сообщить(ОписаниеОшибки(),"!!!"); ПустоеЗнч = 1; КонецПопытки; Если ПустоеЗнч = 1 Тогда Инфо = СоздатьОбъект("AddIn.V7SysInfo"); ГлобальноУникальныйИдентификатор = Инфо.СоздатьGUID(); ГлобальноУникальныйИдентификатор = Нрег(ГлобальноУникальныйИдентификатор); ДокументДляЗаписи = СоздатьОбъект("Документ.ВыплатаЗаработнойПлаты"); ДокументДляЗаписи.НайтиДокумент(Выплата); Попытка ДокументДляЗаписи.GUID = ГлобальноУникальныйИдентификатор; ДокументДляЗаписи.Записать(); Исключение Сообщить(ОписаниеОшибки(),"!!!"); КонецПопытки; Иначе ГлобальноУникальныйИдентификатор = Выплата.GUID; КонецЕсли; АтрибутыЭлемента.УстановитьАтрибут("ИдПервичногоДокумента", ГлобальноУникальныйИдентификатор); гФайлДанных.ОткрытьЭлемент("СчетаПК"); Счетчик = 1; АтрибутыЭлемента = гФайлДанных.АтрибутыЭлемента; АтрибутыЭлемента.УдалитьВсе(); гФайлДанных.ОткрытьЭлемент("ЗачислениеЗарплаты"); Выплата.ВыбратьСтроки(); Пока Выплата.ПолучитьСтроку()=1 Цикл НомерСчета = СокрЛП(Выплата.Сотрудник.НомерЗарплатногоСчета); Сумма = СокрЛП(""+Формат(Выплата.Сумма,"Ч015.2.")); ФамилияИмяОтчество(СокрЛП(Выплата.Сотрудник.Наименование),Фамилия,Имя,Отчество); Если (Найти(НомерСчета, "-") = 1) Тогда Сообщить("Счет " + НомерСчета + " пропущен!"); Продолжить; КонецЕсли; АтрибутыЭлемента = гФайлДанных.АтрибутыЭлемента; АтрибутыЭлемента.УдалитьВсе(); АтрибутыЭлемента.УстановитьАтрибут("Нпп", Счетчик); гФайлДанных.ОткрытьЭлемент("Сотрудник"); АтрибутыЭлемента.УдалитьВсе(); гФайлДанных.ВключитьЭлемент("Фамилия" ,Фамилия); гФайлДанных.ВключитьЭлемент("Имя" ,Имя); гФайлДанных.ВключитьЭлемент("Отчество",Отчество); гФайлДанных.ВключитьЭлемент("ОтделениеБанка",""); гФайлДанных.ВключитьЭлемент("ФилиалОтделенияБанка",""); гФайлДанных.ВключитьЭлемент("Сумма",Сумма); гФайлДанных.ЗакрытьЭлемент(); ОбщаяСумма = ОбщаяСумма + Сумма; Состояние("Выгружено " + Счетчик + " строк"); Счетчик = Счетчик + 1; КонецЦикла; гФайлДанных.ЗакрытьЭлемент(); гФайлДанных.ОткрытьЭлемент("КонтрольныеСуммы"); гФайлДанных.ВключитьЭлемент("КоличествоЗаписей" ,Счетчик - 1); гФайлДанных.ВключитьЭлемент("СуммаИтого" ,ОбщаяСумма); гФайлДанных.ЗакрытьЭлемент(); гФайлДанных.ЗакрытьЭлемент(); гФайлДанных.Сбросить(); гФайлДанных.Завершить(); Сообщить("Выгрузка успешно завершена!!!","i"); КонецПроцедуры