8.х ОБМЕН Обмен данными между Access и 1С

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем andreyka998, 20 сен 2011.

  1. TopicStarter Overlay
    andreyka998
    Offline

    andreyka998

    Регистрация:
    20 сен 2011
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Извеняюсь если этот вопрос уже задавался.
    Возможен ли обмен данными между Access и 1С?
    Если да, то напишите как пожалуйста.
  2. Diego
    Offline

    Diego Любитель 1С Команда форума

    Регистрация:
    3 апр 2009
    Сообщения:
    966
    Симпатии:
    2
    Баллы:
    29
    У меня есть одна обработка, которая загружает данные из файла Access в регистр сведений 1С:

    Код:
    Путь="тут полный путь к файлу";
    MyCon = Новый COMОбъект ("ADODB.Connection");
    Попытка
    //подключаемся к базе
    MyCon.Open ("Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source="+Путь);
    Исключение
    Предупреждение(ОписаниеОшибки() + "Невозможно установить соединение"); 
    Возврат; 
    КонецПопытки; 
    ActualDate = Строка(Формат(АктуальностьДанных,"ДФ=""ММ/дд/гг"""));
    MyRst = Новый COMОбъект ("ADODB.Recordset");
    //делаем из таблицы выборку данных с датой больше нужной
    Команда = "select * from TableMain Where DateTime >= #"+ActualDate+ "#";
    
    MyRst.Open (Строка(Команда), MyCon, 3, 1);
    
    //Создаем таблицу значений для записи
    Таб=<span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/новый')">Новый ТаблицаЗначений;</span>
    Таб.Колонки.Добавить("NumCount");
    Таб.Колонки.Добавить("Length");
    Таб.Колонки.Добавить("DateTime");
    Таб.Колонки.Добавить("Smena");
    
    Пока НЕ MyRst.EOF Цикл
    ЕстьДанные = 0;
    НомерСчетчика=MyRst.Fields("NumCount").Value;
    ДлинаКуска=Формат(MyRst.Fields("Length").Value,"ЧЦ=10; ЧДЦ=1");
    ТекущаяСмена=Формат(MyRst.Fields("Smena").Value,"ЧЦ=10; ЧДЦ=1");
    
    Если Не ПустаяСтрока(ТекущаяСмена) Тогда 
    
    ДатаЗаписи =Формат(MyRst.Fields("DateTime").Value);
    //пишем в таблицу значений
    НоваяСтрока = Таб.Добавить();
    НоваяСтрока.NumCount=НомерСчетчика;
    НоваяСтрока.Length=ДлинаКуска;
    НоваяСтрока.DateTime=ДатаЗаписи;
    НоваяСтрока.Smena=ТекущаяСмена;
    
    КонецЕсли; 
    MyRst.MoveNext();
    КонецЦикла;
    
    ///Записываем в регистр сведений
    СтаршийИндекс = Таб.Количество()-1;
    
    Для Сч = 0 по СтаршийИндекс Цикл 
    ДатаЗаписи =Таб[Сч].DateTime;
    
    Если НачалоДня(ДатаЗаписи) > НачалоДня(АктуальностьДанных) 
    Или НачалоДня(ДатаЗаписи) = НачалоДня(АктуальностьДанных)и
    НачалоЧаса(ДатаЗаписи) >= НачалоЧаса(АктуальностьДанных)
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/тогда')">Тогда	</span>
    
    КороткаяДата = Формат(ДатаЗаписи,"ДЛФ=Д");
    Состояние("Загружаем данные за "+ Строка(КороткаяДата));
    
    НомерСчетчика = Таб[Сч].NumCount;
    
    МенеджерЗаписи = РегистрыСведений.Счетчики.СоздатьМенеджерЗаписи();
    
    МенеджерЗаписи.НомерСчетчика = НомерСчетчика;
    МенеджерЗаписи.Период = ДатаЗаписи; 
    МенеджерЗаписи.ДлинаКуска = Таб[Сч].Length; 
    МенеджерЗаписи.ТекущаяСмена = Таб[Сч].Smena; 
    
    МенеджерЗаписи.Записать();
    
    КонецЕсли;
    КонецЦикла;
    
    
    

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