8.х ОБМЕН Выгрузка из SQL server В 1С 8.x SQL

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем Михрясь, 13 дек 2008.

  1. TopicStarter Overlay
    Михрясь
    Offline

    Михрясь

    Регистрация:
    13 дек 2008
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Добрый день! Есть база на SQL server содержит более 100 млн. записей, необходимо перелить ее в 1С под SQL, если делать это через 1С, то потребуется несколько месяцев. При прямой заливке столкнулся с полями _IDRRef, _Version ..... Поиск нормального ответа не дал. Очень прошу помощи.
  2. 1010011010
    Offline

    1010011010 [1cworld]

    Регистрация:
    1 авг 2006
    Сообщения:
    582
    Симпатии:
    0
    Баллы:
    26
    Добрый день, можно по конткретнее вопрос, что с этими полями не понятно?
  3. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    И что за база, вообще?
  4. TopicStarter Overlay
    Михрясь
    Offline

    Михрясь

    Регистрация:
    13 дек 2008
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    База на SQL server, не 1с-вская, из нее надо перелить данные в 1С-вскую на SQL, как заполнять служебные поля совсем не понятно, вот в этом и весь вопрос)
  5. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Повторяю вопрос: что за база? И что вы хотите загрузить в 1С.
    Что бы было понятно, наш диалог выглядит примерно так:
    - Я хочу залить в машину. Куда мне залить?
    - Что Вы хотите залить?
    - Жидкость, для машины. Мне надо залить в емкость для техники.

    Как думаете - что можно на это ответить?
  6. TopicStarter Overlay
    Михрясь
    Offline

    Михрясь

    Регистрация:
    13 дек 2008
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    База персон в формате SQL server, залить надо в справочник персон в 1С 8.0 под SQL server. Объем очень большой порядка 100 млн. записей
  7. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    Делайте прямым подключением к SQL и выберайте необходимые данные.. или средствами выгрузки и загрузки через excel
    а так просто грубо говоря дописать те поля которых нет и т.п. я думаю вряд ли получиться
    да и зачем вся база в 1С? Достаточно остатки например на начало года...
  8. TopicStarter Overlay
    Михрясь
    Offline

    Михрясь

    Регистрация:
    13 дек 2008
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Причем тут Excel, причем тут остатки, справочник надо загрузить, он огромен, если через ADO или OLE это несколько месяцев займет, проверял.

    Может есть идеи у народа то)
  9. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    100мл записей заливаются в 1С за несколько часов.
    И это без оптимизации - с оптимизацией - за полчаса.

    Другое дело, что так и не понятен исходный формат и во что грузить.
  10. TopicStarter Overlay
    Михрясь
    Offline

    Михрясь

    Регистрация:
    13 дек 2008
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Подскажите как их туда загрузить, если можно то примерчик.
    Исходный формат: База данных на MS SQL server 2000, там есть таблица, которую необходимо загрузить в 1С 8.0(в справочник). Формат хранения данных в 1С тоже MS SQL server 2000.
  11. TopicStarter Overlay
    Михрясь
    Offline

    Михрясь

    Регистрация:
    13 дек 2008
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Я вроде бы уже все разжевал, что откуда и куда загрузить. А ответа так и не получил.(
  12. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Вы откройте базу 1С и посмотрите на ее формат справочника. Тогда будет понятно, что вы совсем НЕ ВСЕ разжевали.
    Составьте таблицу соответствия, что во что грузить.
  13. TopicStarter Overlay
    Михрясь
    Offline

    Михрясь

    Регистрация:
    13 дек 2008
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Все очень просто, справочник в 1С я создал в точности с таблицей в MS SQL один в один, все типы полей в справочнике простые(либо числа, либо стороки, либо даты) никаких составных полей и никаких ссылок на другие справочники. Так как загрузить быстро то?
  14. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Автор, вы понимаете, что когда вы создаете в 1С (что 7ке, что 8ке) какойто объект метаданных (справочник или документ) - 1C генерирует свою структуру SQL. Индексы, подчиненные таблицы, хранимые процедуры....
    100 000 000 записей "линейного справочника" перенести можно часа за 3-4 легко.
    В 1Ске цепляемся к базе данных:
    Код:
    SQL = Новый COMОбъект("ADODB.Connection");
    SQL.CommandTimeout        = 10000; 
    SQL.ConnectionTimeout    = 10000; 
    SQL.Open("Provider=MSDASQL.1;Password=123456;Persist Security Info=True;User ID=CIS_2_1C;Data Source=CIS_2_1C");    
    
    
    Фигачите запрос:
    Код:
    ResSQL = SQL.Execute("SELECT * FROM t_MyTbl");
    
    
    фигачите обход:
    Код:
    Пока ResSQL.EOF=0 Цикл
    f_face_id        = ResSQL.Fields("f_face_id").Value;
    f_indexation    = ResSQL.Fields("f_indexation").Value;
    ххххх
    ResSQL.MoveNext();
    ОбработкаПрерыванияПользователя();
    КонецЦикла;
    
    
    Просто не надо на каждой итерации физически записывать в базу изменения.
    Сделайте счетчик цикла, накапливайте элементы под запись, и через каждые допустим 200 пройденных итераций организуйте запись пакетом.
  15. TopicStarter Overlay
    Михрясь
    Offline

    Михрясь

    Регистрация:
    13 дек 2008
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Это я понимаю, просто не понимаю, что еще нужно было написать чтоб ответ то на вопрос получить. Пробовал я и с пакетной записью, результат один и тот же. До 500 000 записей еще сносно льтся, дальше все медленнее и медленнее. В чем может быть подвох? (Индексов сам специально не создавал в 1С)
  16. Bush
    Offline

    Bush

    Регистрация:
    17 апр 2008
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    В оперативе может быть подвох. Посмотрите сколько оперативы отъел процесс сервера 1С, занимающийся обработкой данных.


    Если пытаться объяснить про структуру таблиц, то _IDRRef - ссылка объекта;

    _Version - это поле с указанием версии, служит для контроля верности данных. Если кто-то открыл форму объекта и забыл про нее, а в это время я программно изменю объект, версия изменится и этот "кто-то" не сможет ничего с этим объектом сделать, вылетит на блокировке объекта.

    Но это так... на вскидку. ;)
  17. TopicStarter Overlay
    Михрясь
    Offline

    Михрясь

    Регистрация:
    13 дек 2008
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Структуру таблиц 1С я знаю(. Посмотрю на оперативку, хотя чето сомнения берут
  18. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Ну если скорость падает со временем. То тут на что можно еще грешить?
    Только "отжер" оперативы... Переменные где то не "грохаются", таблицы какие-нибудь или списки "пухнут".
    На дисплей по меньше сообщений старайтесь выводить (существенно тормозит работу программ).
    Как вариант - SQL сервер не высвобождает память (2000ый этим нередко грешен кстати).
    Может код продемонстрируете?
  19. TopicStarter Overlay
    Михрясь
    Offline

    Михрясь

    Регистрация:
    13 дек 2008
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Код практически идентичен приведенному выше. Сообщений на дисплей не вывожу, только в строку состояния. Как сделать чтоб SQL сервер высвобождал память? Т.к. затык именно когда лью в 1С работающую на базе SQL сервер, с обычной все идет ровно без замедлений

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