Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
12 Дек 2017, 07:52
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Загрузка из xml в 1c справочник  (Прочитано 3899 раз)

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

Оффлайн edzie

  • *
  • Сообщений: 3
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-03-31
  • Сайт: 
  • Профессия: Ученик 1С
Здравствуйте, я в 1с не силен, как сделать чтобы из xml файла записи организации и сотрудники заменяли прошлые записи которые были в справочнике? есть код где старые записи удаляются, но мне надо чтобы они записывались поверх старых.
 &НаСервере
Процедура ЗагрузитьXML(файл)
   НовыйОбъектОрганизации = NULL;
   НовыйОбъектСотрудника = NULL;
   Справочник_Организации = Справочники.Организации;
   Справочник_Сотрудники = Справочники.Сотрудники;
   
   ВыборкаИзСотрудников = Справочники.Сотрудники.Выбрать();
   Пока ВыборкаИзСотрудников.Следующий() Цикл
      del = ВыборкаИзСотрудников.ПолучитьОбъект();
      del.Удалить();
   КонецЦикла;

   ВыборкаИзОрганизаций = Справочники.Организации.Выбрать();
   Пока ВыборкаИзОрганизаций.Следующий() Цикл
      del = ВыборкаИзОрганизаций.ПолучитьОбъект();
      del.Удалить();
   КонецЦикла;     
   
   загXML = Новый ЧтениеXML;
   загXML.ОткрытьФайл(файл);                       
   Пока загXML.Прочитать() Цикл
         Если загXML.Имя = "Организация" И загXML.ТипУзла = ТипУзлаXML.НачалоЭлемента тогда
            НовыйОбъектОрганизации = Справочник_Организации.СоздатьЭлемент();
            НовыйОбъектОрганизации.Код = загXML.ПолучитьАтрибут("Код");
            НовыйОбъектОрганизации.Наименование = загXML.ПолучитьАтрибут("Наименование");
            НовыйОбъектОрганизации.Записать();
         ИначеЕсли загXML.Имя = "Сотрудник" И загXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
            НовыйОбъектСотрудника = Справочник_Сотрудники.СоздатьЭлемент();
                НовыйОбъектСотрудника.Код = загXML.ПолучитьАтрибут("Код");
            НовыйОбъектСотрудника.Наименование = загXML.ПолучитьАтрибут("Наименование");
            НовыйОбъектСотрудника.паспорт = загXML.ПолучитьАтрибут("Паспорт");           
                НовыйОбъектМестоРаботыСотрудника = НовыйОбъектСотрудника.Организации.Добавить();
            НовыйОбъектМестоРаботыСотрудника.Организация = Справочник_Организации.НайтиПоКоду(загXML.ПолучитьАтрибут("Организация"));
            НовыйОбъектКонтактыСотрудника = НовыйОбъектСотрудника.Адрес.Добавить();
            НовыйОбъектКонтактыСотрудника.адрес = загXML.ПолучитьАтрибут("Адрес");
            НовыйОбъектКонтактыСотрудника.телефон = загXML.ПолучитьАтрибут("Телефон");
            НовыйОбъектСотрудника.Записать();
         КонецЕсли;
      КонецЦикла;
   загXML.Закрыть();
   Сообщить("Завершено");
КонецПроцедуры


Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2857
  • РЕПУТАЦИЯ: 546
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
УЖАС.......

Использовать метод менеджера справочника НайтиПоНаименованию() или НайтиПоКоду()
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн Yura063

  • *****
  • Сообщений: 1045
  • РЕПУТАЦИЯ: 136
  • КПД: 13%
  • Регистрация: 2010-11-15
  • Сайт: yuis.ru
  • Профессия: Программист 1С
ДА хуже некуда! Вы получите данные из xml по ним ищите данные и заменяете! У вас в базе такой бардак походу! Если вам надо заменить Сотрудников и Организации то, например:
ДанныеОргНаим = ДанныеИзXML; //той организации на которую надо изменить!
Организация = Справочники.Организации;
Если Организация.НайтиПоНаименованию(ДанныеОргНаим)<> Организация.ПустаяСсылка() Тогда
    Орг = Организация.НайтиПоНаименованию(ДанныеОргНаим).ПолучитьОбъект();
    Орг.Наименование = ДанныеИзXML; // Данные организации на что меняем
    //остальные реквизиты организации
    Орг.Записать();
Иначе
    //Создаем новую организацию если это надо
КонецЕсли;
Как то так!
Помогли, отблагодари!

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2857
  • РЕПУТАЦИЯ: 546
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
Если Организация.НайтиПоНаименованию(ДанныеОргНаим)<> Организация.ПустаяСсылка() Тогда
    Орг = Организация.НайтиПоНаименованию(ДанныеОргНаим).ПолучитьОбъект();
    Орг.Наименование = ДанныеИзXML;

Так тоже не желательно! Зачем искать в базе два раза?
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн Yura063

  • *****
  • Сообщений: 1045
  • РЕПУТАЦИЯ: 136
  • КПД: 13%
  • Регистрация: 2010-11-15
  • Сайт: yuis.ru
  • Профессия: Программист 1С
Да извини! В понедельник еще мозги на место не встали!  :xfbnsdfb: :)
Помогли, отблагодари!

Оффлайн SlazZy

  • ***
  • Сообщений: 149
  • РЕПУТАЦИЯ: 15
  • КПД: 10%
  • Регистрация: 2012-04-28
  • Сайт: 
  • Профессия: Программист 1С
я конечно всё понимаю, но зачем NULL? :)
   НовыйОбъектОрганизации = NULL;
   НовыйОбъектСотрудника = NULL;

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2857
  • РЕПУТАЦИЯ: 546
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
я конечно всё понимаю, но зачем NULL?
Потому что некоторые люди привыкли инициализировать переменные (пустые переменные) для работы с ними! И это правильно!
Например В T-SQL используется такой синтаксис
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
167 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
55 Сообщений
alex0402
46 Сообщений
andron81_81
42 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
Golickoff Golickoff
28 Сообщений
BuhRust
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 345
  • Точка Скрытых: 0
  • Точка Пользователей: 6
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal