Подскажите пожалуйста.
Код
Процедура Загрузить()
Перем НомСтр, Предст, Конт, НазваниеОПоля;
Список = СоздатьОбъект("СписокЗначений");
СпрРодителей = СоздатьОбъект("СписокЗначений");
ТекВид = "Документ."+СписокДок.ПолучитьЗначение(СписокДок.ТекущаяСтрока());
Док = СоздатьОбъект(ТекВид);
Для А = 1 По ТЗ.КоличествоСтрок() Цикл
Идент2 = ТЗ.ПолучитьЗначение(А,2);
НомСтр = "";
ТЗРекв.НайтиЗначение(Идент2,НомСтр,1);
Тип = ТЗРекв.ПолучитьЗначение(НомСтр,2);
Вид = ТЗРекв.ПолучитьЗначение(НомСтр,3);
Если Тип = "Неопределенный" Тогда
НомСтр = "";
ТЗСинхр2.НайтиЗначение(Идент2,НомСтр,1);
Тип = ТЗСинхр2.ПолучитьЗначение(НомСтр,2);
Вид = ТЗСинхр2.ПолучитьЗначение(НомСтр,3);
КонецЕсли;
Если Тип = "Справочник" Тогда
Спр = СоздатьОбъект("Справочник."+Вид);
Владелец = "" + Метаданные.Справочник(Вид).Владелец;
Если Владелец="Метаданные" Тогда
Список.ДобавитьЗначение(Спр,"Справочник");
Иначе
Список.ДобавитьЗначение(Спр,"ПодчСправочник");
КонецЕсли;
ИначеЕсли Тип = "Перечисление" Тогда
Спр = Перечисление.ПолучитьАтрибут(Вид);
Список.ДобавитьЗначение(Спр,"Перечисление");
ИначеЕсли Тип = "Число" Тогда
Список.ДобавитьЗначение(А,"Число");
ИначеЕсли Тип = "Строка" Тогда
Список.ДобавитьЗначение(А,"Строка");
ИначеЕсли Тип = "Дата" Тогда
Список.ДобавитьЗначение(А,"Дата");
Иначе
Список.ДобавитьЗначение(А,"Неизвестно");
КонецЕсли;
КонецЦикла;
НачатьТранзакцию();
ТекВид = "Документ."+СписокДок.ПолучитьЗначение(СписокДок.ТекущаяСтрока());
ОткрытьФорму(ТекВид,Конт);
Для А=1 По СписокРеквШапки.РазмерСписка() Цикл
СписокРеквШапки.ПолучитьЗначение(А,Предст);
Значение = Конт.ПолучитьАтрибут(Предст);
СписокРеквШапки.УстановитьЗначение(А,Значение,Предст);
КонецЦикла;
Конт.Форма.Закрыть(0);
Конт = "";
ОтменитьТранзакцию();
фДействия = СписокДействий.ТекущаяСтрока();
КолвоСтрок = КонСтр - НачСтр + 1;
ПрогрессБар = "";
счетчик = 0;
Если Есть=1 Тогда
Для А = НачСтр По КонСтр Цикл
Док.Новый();
Для С = 1 По ТЗСинхр2.КоличествоСтрок() Цикл
ТЗСинхр2.ПолучитьСтрокуПоНомеру(С);
ИмяТипа = "";
Если ПустоеЗначение(ТЗСинхр2.Тип)=0 Тогда ИмяТипа = "" + ТЗСинхр2.Тип КонецЕсли;
Если ПустоеЗначение(ТЗСинхр2.Вид)=0 Тогда ИмяТипа = ИмяТипа + "." + ТЗСинхр2.Вид КонецЕсли;
Если ПустоеЗначение(ИмяТипа)=0 Тогда Док.НазначитьТип(ТЗСинхр2.Рекв,ИмяТипа) КонецЕсли;
КонецЦикла;
Для С=1 По СписокРеквШапки.РазмерСписка() Цикл
Значение = СписокРеквШапки.ПолучитьЗначение(С,Предст);
Док.УстановитьАтрибут(Предст,Значение);
КонецЦикла;
СпрРодителей.УдалитьВсе();
Для В = 1 По Список.РазмерСписка() Цикл
НомКол = ТЗ.ПолучитьЗначение(В,3);
Атрибут = ТЗ.ПолучитьЗначение(В,2);
Значен = ВходExcel.ActiveSheet.Cells(А,НомКол).Value;
Рекв = Список.ПолучитьЗначение(В,Предст);
Если (Предст="Справочник") ИЛИ (Предст="ПодчСправочник") Тогда
ТекСпр = Рекв;
фПодчинения = 0;
Если СокрЛП(Предст) = "ПодчСправочник" Тогда
фПодчинения = 1;
Владелец = "" + Метаданные.Справочник(ТекСпр.Вид()).Владелец.Идентификатор;
ТекВладелец = СпрРодителей.Получить(Владелец);
Если ПустоеЗначение(ТекВладелец)=0 Тогда
ТекСпр.ИспользоватьВладельца(ТекВладелец);
Иначе
Сообщить("XLS-Документооборот: У справочника "+ТекСпр.Вид()+" не найден владелец "+Владелец);
КонецЕсли;
КонецЕсли;
Если ПоискЭлемента(ТекСпр, Значен, фПодчинения, фДействия)=1 Тогда
Док.УстановитьАтрибут(Атрибут,ТекСпр.ТекущийЭлемент());
СпрРодителей.ДобавитьЗначение(ТекСпр.ТекущийЭлемент(),ТекСпр.Вид());
КонецЕсли;
ИначеЕсли Предст="Перечисление" Тогда
ЗначенПеречисл = Рекв.ЗначениеПоИдентификатору(СокрЛП(Значен));
Если ЗначенПеречисл=0 Тогда
Сообщить("XLS-Документооборот: Перечисление "+Значен+" не найдено");
Иначе
Док.УстановитьАтрибут(Атрибут,ЗначенПеречисл);
КонецЕсли;
ИначеЕсли Предст="Число" Тогда
Док.УстановитьАтрибут(Атрибут,Число(Значен));
ИначеЕсли Предст="Строка" Тогда
Док.УстановитьАтрибут(Атрибут,Строка(Значен));
ИначеЕсли Предст="Дата" Тогда
Док.УстановитьАтрибут(Атрибут,Дата(Значен));
Иначе
Сообщить("XLS-Документооборот: Найден необрабатываемый тип у реквизита "+Атрибут);
КонецЕсли;
КонецЦикла;
Док.Записать();
ОткрытьФорму(Док.ТекущийДокумент());
счетчик = счетчик + 1;
Процент = Окр(100*счетчик/КолвоСтрок);
ПрогрессБар = ПрогрессБар + "|";
Состояние(""+Процент+"% "+ПрогрессБар);
КонецЦикла;
Иначе
Док.Новый();
Для С=1 По СписокРеквШапки.РазмерСписка() Цикл
Значение = СписокРеквШапки.ПолучитьЗначение(С,Предст);
Док.УстановитьАтрибут(Предст,Значение);
КонецЦикла;
Для А = НачСтр По КонСтр Цикл
Значен = ВходExcel.ActiveSheet.Cells(А,НачКол).Value;
Сообщить(Значение);
Если СокрЛП(Значен)="#НовыйДокумент#" Тогда
Док.Записать();
ОткрытьФорму(Док.ТекущийДокумент());
Док.Новый();
Для С=1 По СписокРеквШапки.РазмерСписка() Цикл
Значение = СписокРеквШапки.ПолучитьЗначение(С,Предст);
Док.УстановитьАтрибут(Предст,Значение);
КонецЦикла;
Продолжить;
КонецЕсли;
Док.НоваяСтрока();
Для С = 1 По ТЗСинхр2.КоличествоСтрок() Цикл
ТЗСинхр2.ПолучитьСтрокуПоНомеру(С);
ИмяТипа = "";
Если ПустоеЗначение(ТЗСинхр2.Тип)=0 Тогда ИмяТипа = "" + ТЗСинхр2.Тип КонецЕсли;
Если ПустоеЗначение(ТЗСинхр2.Вид)=0 Тогда ИмяТипа = ИмяТипа + "." + ТЗСинхр2.Вид КонецЕсли;
Если ПустоеЗначение(ИмяТипа)=0 Тогда Док.НазначитьТип(ТЗСинхр2.Рекв,ИмяТипа) КонецЕсли;
КонецЦикла;
СпрРодителей.УдалитьВсе();
Для В = 1 По Список.РазмерСписка() Цикл
НомКол = ТЗ.ПолучитьЗначение(В,3);
Атрибут = ТЗ.ПолучитьЗначение(В,2);
Значен = ВходExcel.ActiveSheet.Cells(А,НомКол).Value;
Рекв = Список.ПолучитьЗначение(В,Предст);
Если (Предст="Справочник") ИЛИ (Предст="ПодчСправочник") Тогда
ТекСпр = Рекв;
фПодчинения = 0;
Если СокрЛП(Предст) = "ПодчСправочник" Тогда
фПодчинения = 1;
Владелец = "" + Метаданные.Справочник(ТекСпр.Вид()).Владелец.Идентификатор;
ТекВладелец = СпрРодителей.Получить(Владелец);
Если ПустоеЗначение(ТекВладелец)=0 Тогда
ТекСпр.ИспользоватьВладельца(ТекВладелец);
Иначе
Сообщить("XLS-Документооборот: У справочника "+ТекСпр.Вид()+" не найден владелец "+Владелец);
КонецЕсли;
КонецЕсли;
Если ПоискЭлемента(ТекСпр, Значен, фПодчинения, фДействия)=1 Тогда
Док.УстановитьАтрибут(Атрибут,ТекСпр.ТекущийЭлемент());
СпрРодителей.ДобавитьЗначение(ТекСпр.ТекущийЭлемент(),ТекСпр.Вид());
КонецЕсли;
ИначеЕсли Предст="Перечисление" Тогда
ЗначенПеречисл = Рекв.ЗначениеПоИдентификатору(СокрЛП(Значен));
Если ЗначенПеречисл=0 Тогда
Сообщить("XLS-Документооборот: Перечисление "+Значен+" не найдено");
Иначе
Док.УстановитьАтрибут(Атрибут,ЗначенПеречисл);
КонецЕсли;
ИначеЕсли Предст="Число" Тогда
Док.УстановитьАтрибут(Атрибут,Число(Значен));
ИначеЕсли Предст="Строка" Тогда
Док.УстановитьАтрибут(Атрибут,Строка(Значен));
ИначеЕсли Предст="Дата" Тогда
Док.УстановитьАтрибут(Атрибут,Дата(Значен));
Иначе
Сообщить("XLS-Документооборот: Найден необрабатываемый тип у реквизита "+Атрибут);
КонецЕсли;
КонецЦикла;
счетчик = счетчик + 1;
Процент = Окр(100*счетчик/КолвоСтрок);
ПрогрессБар = ПрогрессБар + "|";
Состояние(""+Процент+"% "+ПрогрессБар);
КонецЦикла;
Док.Записать();
ОткрытьФорму(Док.ТекущийДокумент());
КонецЕсли;
Док = "";
Спр = "";
Список = "";
СпрРодителей = "";
КонецПроцедуры