Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 17:22

Нужна помощь по процедуре импорта

Автор nartai, 11 янв 2013, 10:43

0 Пользователей и 1 гость просматривают эту тему.

nartai

Всем Привет!!! есть процедура импорта  из хмл, она должна импортировать несколько элементов из хмл но она место этого импортирует только  1 элемент наименования и записывает ее на другие элементы например наименование записывает норм а на места инвномера и штрихкода тоже записывает наименование можете помочь с процедурой 
Заранее Спасибо!!!!



  &НаСервере
 
  Процедура ПрочитатьXMLНаСервере(Файлик)


     ПутьКФайлу = Файлик[0];
    
    
     ЧтениеXML = Новый ЧтениеXML;
     ЧтениеXML.ОткрытьФайл(ПутьКФайлу);
    
    
     Сз = Неопределено;
Пока ЧтениеXML.Прочитать() Цикл
             Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
                  ИмяЭлемента = ЧтениеXML.Имя;
             Если ИмяЭлемента="CatalogObject.ОсновныеСредства" Тогда
                  Если Сз<>Неопределено Тогда
                  СоздатьЭлементСправочника(Сз);
             КонецЕсли;
                  Сз = Новый СписокЗначений;
           КонецЕсли;
          
            ЧтениеXML.Прочитать();
            Если ЧтениеXML.ТипУзла=ТипУзлаXML.Текст Тогда
         Если ИмяЭлемента= "Description" Тогда
               Сз.Добавить(ЧтениеXML.Значение,ИмяЭлемента);
                 КонецЕсли;
         Если ИмяЭлемента= "ИнвНомер" Тогда
               Сз.Добавить(ЧтениеXML.Значение,ИмяЭлемента);
                 КонецЕсли;
          Если ИмяЭлемента= "ШтрихКод" Тогда
               Сз.Добавить(ЧтениеXML.Значение,ИмяЭлемента);
                 КонецЕсли;   


КонецЕсли;
             
                КонецЕсли;


КонецЦикла;




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


   Процедура СоздатьЭлементСправочника(СЗ)
      
            Если СЗ.Количество() >0 Тогда
         НовыйЭлемент = Справочники.ОсновныеСредства.СоздатьЭлемент();
         НовыйЭлемент.Наименование=СЗ
  • .Значение;
             НовыйЭлемент.ИнвНомер=СЗ[0].Значение;
             НовыйЭлемент.ШтрихКод = СЗ[0].Значение;
             НовыйЭлемент.Записать();
          
              КонецЕсли;
          КонецПроцедуры


Yura063

Так у вас в процедуре  Процедура СоздатьЭлементСправочника(СЗ) Ко всему присваивается одно и тоже значение "СЗ[0].Значение"!
Добавлено: 11 янв 2013, 11:16


ПолучитьЗначение(<Позиция>, <Перем>)
Англоязычный синоним:
GetValue
Параметры:
<Позиция>
Числовое выражение — номер элемента в списке, значение которого будет возвращено. Номер позиции может быть от 1 до количества элементов в списке.
<Перем>
Идентификатор переменной в которую будет возвращено строковое выражение, содержащее символьное представление получаемого значения.
Возвращаемое значение:
Полученное значение из списка.
Описание:
С помощью метода ПолучитьЗначение можно получить значение элемента, находящегося в указанной позиции списка.
Пример:
ОпредПредст = "";
ОпредВид=Спис.ПолучитьЗначение(1, ОпредПредст);
Помогли, отблагодари!

nartai

Спасибо  Yura063 Помогло значении  поставил заработало!!!:D

Вы можете еще с этим помочь?  когда импортирую хмлку чтобы импортировался только определенные две группы. Если добавлю в Процедуру СоздатьЭлементСправочника(СЗ)
будетли это правильно или нет 
Если Не Сз.Свойство("ГруппаОС") Или Сз.ГруппаОС<>"Компьютеры" Тогда
Возврат;
КонецЕсли;

Yura063

Записывалось только в две группы?
Добавлено: 11 янв 2013, 12:30


создавал только в двух группах?
Помогли, отблагодари!

nartai

Чтобы из хмл брал только две группы например "компьютеры и Оргтехника" и записывал их по отдельности 

Yura063

Можно написать на подобие:
Если (Сз.ГруппаОС="Компьютеры" ИЛИ Сз.ГруппаОС="Оргтехника") тогда
        //Команды для создания элементов справочника
            Если Сз.ГруппаОС="Компьютеры" тогда
                Родитель = НайтиПоКоду(кодГруппыКомпьютеры);
            Иначе
                Родитель = НайтиПоКоду(кодГруппыОргтехника);
            КонецЕсли;
        //Записать элемент справочника
      КонецЕсли;

То тогда он будет записывать только эти группы и в группы справочника комп. или оргтехника
Помогли, отблагодари!

nartai


Yura063 можете подсказать как исправить эти ошибки

{Справочник.ОсновныеСредства.Форма.ФормаСписка.Форма(52,40)}: Переменная не определена (кодГруппыКомпьютеры)
                Родитель = НайтиПоКоду(<<?>>кодГруппыКомпьютеры); (Проверка: Сервер)
{Справочник.ОсновныеСредства.Форма.ФормаСписка.Форма(52,28)}: Процедура или функция с указанным именем не определена (НайтиПоКоду)
                Родитель = <<?>>НайтиПоКоду(кодГруппыКомпьютеры); (Проверка: Сервер)

Yura063

Так вы этой переменой присвойте код группы Компьютеры!
Добавлено: 14 янв 2013, 09:40


И я вам не писал что это переменная! я вам имел ввиду, что надо написать код группы компьютеры! Например:
НайтиПоКоду("00000001");
Помогли, отблагодари!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск