8.х обмен с Access

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем mazza, 17 фев 2009.

  1. TopicStarter Overlay
    mazza
    Offline

    mazza Опытный в 1С

    Регистрация:
    4 фев 2009
    Сообщения:
    138
    Симпатии:
    0
    Баллы:
    26
    Привет всем.
    Я в программировании 1С новичок, поэтому могу что то не понимать. Вот пытаюсь выгрузить данные из таблиц Access в Справочники 1С Бухгалтерия предприятия 1.6. Нашел обработку, пример кода ниже. Первый раз выгружает все без проблем, а вот потом … например данные в таблице Access поменялись то при следующей загрузке в 1С они не меняются. Как написать в обработке, чтобы редактировались данные в справочнике?
    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка) //ЗАГРУЗКА 
    Если ЭлементыФормы.ПутьКФайлу.Значение = ""  Тогда        
    Предупреждение("Не выбрана база данных");       
    Возврат;       
    КонецЕсли;         
    MBD = Новый COMОбъект("ADODB.CONNECTION");       
    Попытка       
    MBD.Open("Driver={Microsoft Access Driver (*.mdb)};Dbq="+ЭлементыФормы.ПутьКФайлу.Значение+";Uid=Admin;Pwd=");   
    Исключение        Сообщить(ОписаниеОшибки());       
    Возврат;   
    КонецПопытки;       
    ТекстСелект = "SELECT * FROM Клиенты";   
    НаборЗаписей = Новый COMОбъект("ADODB.RecordSet");      
    Попытка       
    НаборЗаписей=MBD.Execute(ТекстСелект);   
    Исключение        Сообщить(ОписаниеОшибки());   
    КонецПопытки;       
    Попытка        НаборЗаписей.MoveFirst();  
    Исключение //табилца пустая     
    Сообщить(ОписаниеОшибки());      
    НаборЗаписей.Close();        
    Возврат;  
    КонецПопытки;      
    Пока НаборЗаписей.EOF()=0 Цикл      
    КодКлиента = Строка(НаборЗаписей.Fields("КодКлиента").Value);      
    ИННКлиента = Строка(НаборЗаписей.Fields("ИННКлиента").Value);       
    КППКлиента = Строка(НаборЗаписей.Fields("КППКлиента").Value);       
    Название = Строка(НаборЗаписей.Fields("Название").Value);          
    НаборЗаписей.MoveNext();   
    NMНаименование = Название;
    Товар = Справочники.Контрагенты.ПустаяСсылка();
    // Ищем товар по наименованию
    Если NMНаименование <> "" Тогда
    Товар = Справочники.Контрагенты.НайтиПоНаименованию(NMНаименование);
    
    КонецЕсли;
    
    //Если не нашли создаем новый элемент
    
    Если Товар.Пустая() Тогда
    Товар = Справочники.Контрагенты.СоздатьЭлемент();
    Товар.Наименование = Название;
    Товар.Код = КодКлиента;
    Товар.КПП = КППКлиента;
    Товар.ИНН = ИННКлиента;
    
    Товар.Записать();
    
    Сообщить("ЗАГРУЗКА ЗАВЕРШЕНА");    
    
    КонецЕсли;
    КонецЦикла;
    
    КонецПроцедуры
    
  2. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Эта часть кода ищет элемент справочника. и если ЕГО НЕТ заполняет данные
    Если нужно перезаписывать существующие, то надо так:

    Код:
    // ищем элемент по наименованию и наверное контрагент, а не товар =)
    КонтргаентСсылка = Справочники.Контрагенты.НайтиПоНаименованию(NMНаименование);
    
    Если КонтргаентСсылка.Пустая() Тогда
    // элемент не нашли - создаем его
    Контрагент = Справочники.Контргаенты.СоздатьЭлемент();
    Иначе
    // получим существующий
    Контрагент = КонтрагентСсылка.ПолучитьОбъект();
    КонецЕсли;
    
    // заполнение реквизитов
    
    Контрагент.Записать();
    
Похожие темы
  1. fokin
    Ответов:
    1
    Просмотров:
    1.711
  2. slaay
    Ответов:
    2
    Просмотров:
    1.531
  3. mazza
    Ответов:
    1
    Просмотров:
    306
  4. andreyka998
    Ответов:
    1
    Просмотров:
    716
Загрузка...

Поделиться этой страницей