8.х Загрузка больших объемов данных

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

  1. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Короче, пора действовать. На своем тестовом серваке создал SQL базу, тестовую. Сейчас выполняю загрузку полностью туда. Дальше посмотрим как будет обрабатываться. Буду отписывать о результатах.
  2. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Костя, накидай свою конфу, которая будет грузить данные 24/7, а из нее уже будешь обменом тянуть данные.
    Если сильно нужно, могу что-нить накодить на С++ :)
    Последнее редактирование: 2 июн 2015
  3. TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    А флаг нельзя сделать. Если пользователь после загрузки что то изменил в элементе то установился флаг. После выгрузки в твою базу флаг у элемента сбросился....
  4. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Слишком запутано.
    --- Объединение сообщений, 2 июн 2015 ---
    ААА. 490 000 загрузилось со вчерашенего дня и не вылетело. Ждем :)
  5. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Организаций много в одной базе. Подобную выгрузку делает только одна. Менять конфу не вариант ради нее одной. Плюс нужно сделать так чтобы это было максимально просто и прозрачно. Чтобы это смог сделать любой пользователь. Причем интуитивно :). Чтобы освобидить программиста от загрузки.
  6. TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    А план регистрации нельзя задействовать? Если это в одной организации. Он же автоматически регистрирует изменения в объекте. А ты потом анализируй и только изменения грузи.
    Или сделать это в исходном файле... в Ацессе? Там добавить поле и процедуры которые бы взводили флаг если объект новый или изменённый.
  7. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Да сделай свою конфу:), двух зайцев убьешь :)
  8. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Ребят вы советуете сделать еще одну базу.
    Я чет не совсем понимаю - и чем это поможет? В основную базу все равно данные надо тянуть и писать, хоть обменом хоть как. Для какой цели прослойка в виде еще одной базы?
  9. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Ну типа посредством конвертации потом быстрее будет грузиться. Ну я так думаю.
    --- Объединение сообщений, 2 июн 2015 ---
    upload_2015-6-2_9-57-17.png
    Процесс идет :D
    Последнее редактирование: 2 июн 2015
  10. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Ну это снимет нагрузку на основную рабочую базу, не думаю что обмен будет сильнее грузить базу, по сравнению с чтением/записью этих же данных из стороннего файла
    Плюс можно настроить регламент, для чтения входных данных в самописную базу. Таким образом, если все грамотно сделать, можно вообще забыть про эту "прокладку" :)
    но это как ИМХО :)
  11. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Нет Саш, ты ошибаешься. Это увеличит трудозатраты. Это задача не стоит того, чтобы для нее отдельную базу варганить. Плюс я не всегда буду это обслуживать и привык делать на совесть свою работу. Если к этому прикрутить базу и писать правила обмена, настраивать обмен и контролировать его. И в случае проблем искать причину. Конвертацию не знаешь, все, в пролете. К примеру, мой коллега не сможет в таком случае поддерживать эту загрузку.
  12. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Ну чтож, тогда хозяин-барин :) ты не маленький, сам все понимаешь
    Если что-обращайся, помогу чем смогу :)
    nbIpKuH_BaH9I нравится это.
  13. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Ок. Спасибо. :)
  14. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Оппа. Загрузилось
    upload_2015-6-2_12-27-53.png
  15. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    19 часов :), нормуль :)
  16. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Ну, думаю, для этого
    Это вполне нормально. Учитывая, что сервак обычный комп. :) На рабочем серваке должно быстрее часа на 2-3 обработаться :)
  17. XXL
    Offline

    XXL Опытный в 1С Команда форума

    Регистрация:
    22 янв 2007
    Сообщения:
    1.159
    Симпатии:
    19
    Баллы:
    29
    Надо мне твою обработку взять на вооружение:) Меньше суток!
  18. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Специально для shurikvz. Подбор работает нормально. Никаких тормозов. Запустил обработку второй раз, все гуд. Только походу есть небольшой косяк в запросе. Но это уже другая тема :)
    Что касается размеров то вот
    upload_2015-6-2_16-1-38.png
    Слева было, справа стало. База SQL.
  19. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    В продолжении темы. В файле, что дает импортер две таблицы.
    upload_2016-2-8_12-36-33.png
    Изначально я грузил данные из таблицы PRACELIST. Как только сейчас выяснилось, нужно было брать вторую таблицу. Но вот тут возник уже технический момент
    Вот кусок кода, где я получаю количество записей в таблице. Но там пробел. SQL ее не видит. Как быть?
    Код:
        СтрокаПодключения = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ФайлДляЗагрузки + ";Persist Security Info=False;";
        Connection = Новый COMОбъект("ADODB.Connection");
        Попытка
            Connection.Open(СтрокаПодключения);
            // Log
            CтрокаВЛог = "Подключение к базе данных выполнено успешно";
            ЗаписатьЛогФайл(CтрокаВЛог);
        Исключение
            Сообщить(ОписаниеОшибки());
            // Log
            CтрокаВЛог = ОписаниеОшибки();
            ЗаписатьЛогФайл(CтрокаВЛог);
            Возврат Ложь;
        КонецПопытки;
        Command = Новый COMОбъект("ADODB.Command");
        Command.ActiveConnection = Connection;
       
        // получаем количество строк в таблице. Для визуального индикатора, т.к. текущий провейдер не поддерживает RecordCount
        Command.CommandText = "SELECT COUNT(*) FROM " + ИмяТаблицы + "";
        Command.CommandType = 1;
        RecordSet = Новый COMОбъект("ADODB.RecordSet");
        RecordSet = Command.Execute();
        Пока RecordSet.EOF() = 0 Цикл
            // Обработка нажатия Ctrl + Break
            #Если Клиент Тогда
                ОбработкаПрерыванияПользователя();
            #КонецЕсли
            // перебираем колонки для каждой строки
            Для i=0 По Recordset.Fields.Count -1 Цикл
                Если i=0 Тогда
                    КоличествоЗаписейВТаблице = СокрЛП(Recordset.Fields(i).Value);
                КонецЕсли;
            КонецЦикла;
            RecordSet.MoveNext();
        КонецЦикла;
       
        // Log
        CтрокаВЛог = "Всего записей для обработки: " + Строка(КоличествоЗаписейВТаблице);
        ЗаписатьЛогФайл(CтрокаВЛог);
    
    --- Объединение сообщений, 8 фев 2016 ---
    Какой командой можно просмотреть список таблиц?
    Последнее редактирование: 8 фев 2016

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