Имя: Пароль:
1C
1C 7.7
v7: Помогите в написании кода
0 sssssergey
 
21.04.07
19:46
Делаю выгрузку избюджетной конфиги в самописную в формате XML. Выгрузка прошла ОК, файл сформирован. А вот загрузка не получается
Код:

//********************************************************************************
Процедура ВыборФайлаЗагрузки(ИмяФайла, Фильтр="xml")
   Каталог = "";
   Стр = "Файл настройки (*." + Фильтр + ")|*." + Фильтр + "";
   Если ФС.ВыбратьФайл(0, ИмяФайла, Каталог, "Выберите файл", Стр, , ) = 1 Тогда
       ИмяФайла = Каталог + ИмяФайла;
   КонецЕсли;
КонецПроцедуры
//********************************************************************************
Процедура ВыборФайла(ИмяФайла, Фильтр="xml")
   Каталог = "";
   Стр = "Файл настройки (*." + Фильтр + ")|*." + Фильтр + "";
   Если ФС.ВыбратьФайл(0, ИмяФайла, Каталог, "Выберите файл", Стр, , ) = 1 Тогда
       ИмяФайла = Каталог + ИмяФайла;
   КонецЕсли;
КонецПроцедуры
//********************************************************************************
Процедура ПриНачалеВыбораЗначения(ИдЭлементаДиалога, Фл)
   Если ИдЭлементаДиалога = "ИмяФайлаЗагрузки" Тогда
       ВыборФайла(ИмяФайлаЗагрузки, "xml");
   КонецЕсли;
КонецПроцедуры
//*******************************************

//********************************************************************************    

Процедура Загрузить()

Если ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "v7plus.dll") <> 1 Тогда
   Если ЗагрузитьВнешнююКомпоненту(КаталогПрограммы() + "v7plus.dll") <> 1 Тогда
       Предупреждение("Компонента v7plus.dll не найдена!");
   КонецЕсли;
КонецЕсли;

Анализатор = СоздатьОбъект("AddIn.XMLParser");
гФайл = Анализатор.СоздатьПоследовательноСчитываемыйДокумент();
гФайл.СвязатьСФайлом(ИмяФайлаЗагрузки);

Док = СоздатьОбъект("Документ.Операция");
СпрНоменклатура = СоздатьОбъект("Справочник.Номенклатура");
ТипТега = гФайл.Спуститься();

Док.Новый();
ЗапомнилиКод = "";
Пока ТипТега <> 4 Цикл
   Если ТипТега <> 1 Тогда    ТипТега = гФайл.Следующий();
       Продолжить
   КонецЕсли;    //    пропускаем концы уровней и инструкции
   
   ИмяТега    =    гФайл.СвойстваТекущегоУзла.Имя;
   Если  ИмяТега =    "СтрокаТаблици" Тогда  
       Док.НоваяСтрока();  
       док.Записать();
       ТипТега = гФайл.Спуститься();
       Продолжить;
   ИначеЕсли ИмяТега = "НомерСтроки" Тогда
       Объект = гФайл.ТекущийЭлементВВидеОбъекта();
       ЗапомнилиСтроку = Объект.Значение;
       
       ТипТега = гФайл.Спуститься();
       Продолжить;
   ИначеЕсли ИмяТега = "ТекКодНоменклатура" Тогда
       Объект = гФайл.ТекущийЭлементВВидеОбъекта();
       ЗапомнилиКод = Объект.Значение;
       
       ТипТега = гФайл.Спуститься();
       Продолжить;
   ИначеЕсли ИмяТега = "ТекНоменклатура" Тогда     //ДатаДок Входящий
       Объект = гФайл.ТекущийЭлементВВидеОбъекта();  
       Если СпрНоменклатура.НайтиПоКоду(ЗапомнилиКод,0) = 1 Тогда  
           Если Док.ПолучитьСтрокуПоНомеру(ЗапомнилиСтроку) =1 Тогда
               Док.Номенклатура = СпрНоменклатура.ТекущийЭлемент();    
           КонецЕсли;
       Иначе
           СпрНоменклатура.Новый();
           СпрНоменклатура.Код  =  ЗапомнилиКод;
           СпрНоменклатура.Наименование = Объект.Значение;
           СпрНоменклатура.Записать();
           Если Док.ПолучитьСтрокуПоНомеру(ЗапомнилиСтроку) =1 Тогда
               Док.Номенклатура = СпрНоменклатура.ТекущийЭлемент();    
           КонецЕсли;
           //Док.Номенклатура = СпрНоменклатура;

       КонецЕсли;
       ТипТега = гФайл.Спуститься();
       Продолжить;
   ИначеЕсли ИмяТега = "ТекКонСальдоК" Тогда  
       Объект = гФайл.ТекущийЭлементВВидеОбъекта();
       Если Док.ПолучитьСтрокуПоНомеру(ЗапомнилиСтроку) =1 Тогда
           Док.Количество = Объект.Значение;
       КонецЕсли;
       
       ТипТега = гФайл.Спуститься();
       Продолжить;

   Иначе    
       ТипТега = гФайл.Спуститься();
       Продолжить;
   КонецЕсли;
   ТипТега = гФайл.Следующий();
КонецЦикла;
Если Док.Выбран() = 1 Тогда
   Док.Провести();
КонецЕсли;

КонецПроцедуры    
//********************************************************************************КонецПроцедуры


у меня не выполняется условие:

           Если Док.ПолучитьСтрокуПоНомеру(ЗапомнилиСтроку) =1 Тогда
               Док.Номенклатура = СпрНоменклатура.ТекущийЭлемент();    
           КонецЕсли;


Может че не так делаю??? подскажите
1 ТелепатБот
 
гуру
21.04.07
19:46
2 sssssergey
 
21.04.07
19:50
Все спасибо сам вьехал где косяк
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.