Код 1C v 7.x Перем ИмяПути, ИмяФайла;
Перем xmlParser;
Функция УстановитьКомпоненту()
Если ЗагрузитьВнешнююКомпоненту( КаталогИБ( ) + "ExtFormsv7plus.dll" ) = 0 Тогда
Если ЗагрузитьВнешнююКомпоненту( "v7plus.dll" ) = 0 Тогда
Сообщить( "Не удалось обнаружить компоненту V7Plus.dll!" ) ;
Возврат 0 ;
КонецЕсли ;
КонецЕсли ;
Попытка
xmlParser = СоздатьОбъект( "Addin.XmlParser" ) ;
Исключение
Сообщить( "Не удалось создать объект Addin.XmlParser!" ) ;
Возврат 0 ;
КонецПопытки ;
Возврат 1 ;
КонецФункции
Процедура Выполнить()
стрИмяФайла= ИмяПути+ ИмяФайла;
таб= СоздатьОбъект( "ТаблицаЗначений" ) ;
таб. НоваяКолонка( "Ф" , "Строка" , 50 , 0 ) ;
таб. НоваяКолонка( "И" , "Строка" , 50 , 0 ) ;
таб. НоваяКолонка( "О" , "Строка" , 50 , 0 ) ;
таб. НоваяКолонка( "ДатаР" , "Дата" ) ;
таб. НоваяКолонка( "_01" , "Число" , 16 , 2 ) ;
таб. НоваяКолонка( "_02" , "Число" , 16 , 2 ) ;
таб. НоваяКолонка( "_03" , "Число" , 16 , 2 ) ;
таб. НоваяКолонка( "_04" , "Число" , 16 , 2 ) ;
таб. НоваяКолонка( "_05" , "Число" , 16 , 2 ) ;
таб. НоваяКолонка( "_06" , "Число" , 16 , 2 ) ;
таб. НоваяКолонка( "_07" , "Число" , 16 , 2 ) ;
таб. НоваяКолонка( "_08" , "Число" , 16 , 2 ) ;
таб. НоваяКолонка( "_09" , "Число" , 16 , 2 ) ;
таб. НоваяКолонка( "_10" , "Число" , 16 , 2 ) ;
таб. НоваяКолонка( "_11" , "Число" , 16 , 2 ) ;
таб. НоваяКолонка( "_12" , "Число" , 16 , 2 ) ;
таб. НоваяКолонка( "СумГод" , "Число" , 18 , 2 ) ;
таб. НоваяКолонка( "ОблГод" , "Число" , 18 , 2 ) ;
таб. НоваяКолонка( "УдерГод" , "Число" , 18 , 2 ) ;
таб. НоваяКолонка( "Индекс" , "Строка" , 6 , 0 ) ;
таб. НоваяКолонка( "Регион" , "Строка" , 2 , 0 ) ;
таб. НоваяКолонка( "Город" , "Строка" , 20 , 0 ) ;
таб. НоваяКолонка( "Улица" , "Строка" , 20 , 0 ) ;
таб. НоваяКолонка( "Дом" , "Строка" , 5 , 0 ) ;
таб. НоваяКолонка( "Корпус" , "Строка" , 5 , 0 ) ;
таб. НоваяКолонка( "Квартира" , "Строка" , 5 , 0 ) ;
Документ= xmlParser. СоздатьДокумент( ) ;
Документ. Загрузить( стрИмяФайла) ;
Данные= Документ. ПолучитьПодчиненныйПоНомеру( 2 ) ;
Для Сч= 1 По Данные. КоличествоПодчиненных( ) Цикл
таб. НоваяСтрока( ) ;
Элем= Данные. ПолучитьПодчиненныйПоНомеру( Сч) ;
УзелПолучДох= Элем. ВыбратьУзлы( "ПолучДох" ) ;
Для Сч3 = 0 По УзелПолучДох. КоличествоУзлов- 1 Цикл
ФИО= УзелПолучДох. ПолучитьУзел( Сч3 ) . ПолучитьПодчиненныйПоНомеру( 1 ) ;
таб. Ф= ФИО. ПолучитьПодчиненныйПоНомеру( 1 ) . Текст;
таб. И = ФИО. ПолучитьПодчиненныйПоНомеру( 2 ) . Текст;
таб. О= ФИО. ПолучитьПодчиненныйПоНомеру( 3 ) . Текст;
таб. ДатаР= УзелПолучДох. ПолучитьУзел( Сч3 ) . ПолучитьПодчиненныйПоНомеру( 3 ) . Значение;
адр= УзелПолучДох. ПолучитьУзел( Сч3 ) . ПолучитьПодчиненныйПоНомеру( 6 ) ;
Для Сч4 = 1 По адр. КоличествоПодчиненных( ) Цикл
Если адр. ПолучитьПодчиненныйПоНомеру( Сч4 ) . Наименование= "Индекс" Тогда
таб. Индекс= адр. ПолучитьПодчиненныйПоНомеру( Сч4 ) . Текст;
ИначеЕсли адр. ПолучитьПодчиненныйПоНомеру( Сч4 ) . Наименование= "КодРегион" Тогда
таб. Регион= адр. ПолучитьПодчиненныйПоНомеру( Сч4 ) . Текст;
ИначеЕсли адр. ПолучитьПодчиненныйПоНомеру( Сч4 ) . Наименование= "Город" Тогда
таб. Город= адр. ПолучитьПодчиненныйПоНомеру( Сч4 ) . Текст;
ИначеЕсли адр. ПолучитьПодчиненныйПоНомеру( Сч4 ) . Наименование= "Улица" Тогда
таб. Улица= адр. ПолучитьПодчиненныйПоНомеру( Сч4 ) . Текст;
ИначеЕсли адр. ПолучитьПодчиненныйПоНомеру( Сч4 ) . Наименование= "Дом" Тогда
таб. Дом= адр. ПолучитьПодчиненныйПоНомеру( Сч4 ) . Текст;
ИначеЕсли адр. ПолучитьПодчиненныйПоНомеру( Сч4 ) . Наименование= "Корпус" Тогда
таб. Корпус= адр. ПолучитьПодчиненныйПоНомеру( Сч4 ) . Текст;
ИначеЕсли адр. ПолучитьПодчиненныйПоНомеру( Сч4 ) . Наименование= "Кварт" Тогда
таб. Квартира= адр. ПолучитьПодчиненныйПоНомеру( Сч4 ) . Текст;
Иначе
КонецЕсли ;
КонецЦикла ;
КонецЦикла ;
УзелСвДохСтав= Элем. ВыбратьУзлы( "СвДохСтав" ) ;
Для Сч3 = 0 По УзелСвДохСтав. КоличествоУзлов- 1 Цикл
УзелДохВыч= УзелСвДохСтав. ПолучитьУзел( Сч3 ) . ВыбратьУзлы( "ДохВыч" ) ;
Для Сч4 = 0 По УзелДохВыч. КоличествоУзлов- 1 Цикл
МесДоход= УзелДохВыч. ПолучитьУзел( Сч4 ) ;
ИмяМес= "" ;
СумМес= 0 ;
Если МесДоход. ПолучитьПодчиненныйПоНомеру( 1 ) . Наименование= "НомМес" Тогда
ИмяМес= МесДоход. ПолучитьПодчиненныйПоНомеру( 1 ) . Текст;
КонецЕсли ;
Если МесДоход. ПолучитьПодчиненныйПоНомеру( 3 ) . Наименование= "СумДоход" Тогда
СумМес= МесДоход. ПолучитьПодчиненныйПоНомеру( 3 ) . Значение;
КонецЕсли ;
Если ПустоеЗначение( ИмяМес) = 0 Тогда
Если ИмяМес= "01" Тогда
таб. _01= СумМес;
ИначеЕсли ИмяМес= "02" Тогда
таб. _02= СумМес;
ИначеЕсли ИмяМес= "03" Тогда
таб. _03= СумМес;
ИначеЕсли ИмяМес= "04" Тогда
таб. _04= СумМес;
ИначеЕсли ИмяМес= "05" Тогда
таб. _05= СумМес;
ИначеЕсли ИмяМес= "06" Тогда
таб. _06= СумМес;
ИначеЕсли ИмяМес= "07" Тогда
таб. _07= СумМес;
ИначеЕсли ИмяМес= "08" Тогда
таб. _08= СумМес;
ИначеЕсли ИмяМес= "09" Тогда
таб. _09= СумМес;
ИначеЕсли ИмяМес= "10" Тогда
таб. _10= СумМес;
ИначеЕсли ИмяМес= "11" Тогда
таб. _11= СумМес;
ИначеЕсли ИмяМес= "12" Тогда
таб. _12= СумМес;
КонецЕсли ;
КонецЕсли ;
КонецЦикла ;
УзелНалПер= УзелСвДохСтав. ПолучитьУзел( Сч3 ) . ВыбратьУзлы( "СГДНалПер" ) ;
НалПер= УзелНалПер. ПолучитьУзел( 0 ) ;
Если НалПер. Наименование= "СГДНалПер" Тогда
таб. СумГод= НалПер. ПолучитьПодчиненныйПоНомеру( 1 ) . Значение;
таб. ОблГод= НалПер. ПолучитьПодчиненныйПоНомеру( 2 ) . Значение;
таб. УдерГод= НалПер. ПолучитьПодчиненныйПоНомеру( 3 ) . Значение;
КонецЕсли ;
КонецЦикла ;
Состояние( Сч) ;
КонецЦикла ;
Т= СоздатьОбъект( "Таблица" ) ;
Т. ИсходнаяТаблица( "Таблица" ) ;
таб. выбратьСтроки( ) ;
Т. ВывестиСекцию( "Шапка" ) ;
нпп= 1 ;
Пока таб. ПолучитьСтроку( ) = 1 Цикл
Т. ВывестиСекцию( "Текст" ) ;
нпп= нпп+ 1 ;
КонецЦикла ;
Т. ТолькоПросмотр( 1 ) ;
Т. Опции( 0 , 0 , 1 , 0 ) ;
Т. ПараметрыСтраницы( 2 , , , 5 , 5 , 5 , 5 , , , 1 ) ;
Т. Показать( "Прочитали из XML" ) ;
КонецПроцедуры
Процедура Выбрать()
ФС. ВыбратьФайл( 0 , ИмяФайла, ИмяПути, "Выберите файл" , "xml файлы (*.xml) |*.xml|Все файлы (*.*) |*.*" , "xml" , ) ;
Если ПустоеЗначение( ИмяФайла) = 0 Тогда
PathSbitn= ИмяПути+ ИмяФайла;
КонецЕсли ;
КонецПроцедуры
Процедура ПриОткрытии()
ИмяФайла = "" ;
ИмяПути = "P:" ;
res= УстановитьКомпоненту( ) ;
КонецПроцедуры