IT Студия Programmist1C
Услуги
  • Внедрение и сопровождение 1С
    • Маркировка импорта обуви
    • Hастройка 1С
    • Обслуживание 1С
    • Программирование 1С
    • Доработка 1С
    • Автоматизация 1С
    • Сопровождение 1С
    • Внедрение 1С
  • Создание сайтов
    • Посадочные страницы
    • Корпоративные сайты
    • Интернет-магазины
  • Битрикс24
    • Техническая поддержка Битрикс24
    • Внедрение Битрикс24
    • Интеграции Битрикс24
  • Реклама и продвижение
    • Оптимизация сайтов
    • Контекстная реклама
    • SEO для интернет-магазинов
    • Продвижение сайтов
Проекты
  • Внедрение 1С
  • Создание WEB Сайтов
Компания
  • О компании
  • Партнеры
  • Реквизиты
  • Вопрос ответ
Пресс-центр
Контакты
Ещё
    Задать вопрос
    +7 (985) 141-74-63
    info@programmist1c.ru
    Москва, ул. Генерала Кузнецова, 17Б
    +7 (985) 141-74-63
    IT Студия Programmist1C
    Услуги
    • Внедрение и сопровождение 1С
      • Маркировка импорта обуви —
      • Hастройка 1С —
      • Обслуживание 1С —
      • Программирование 1С —
      • Доработка 1С —
      • Автоматизация 1С —
      • Сопровождение 1С —
      • Внедрение 1С
    • Создание сайтов
      Создание сайтов
      • Посадочные страницы —
      • Корпоративные сайты —
      • Интернет-магазины
    • Битрикс24
      Битрикс24
      • Техническая поддержка Битрикс24 —
      • Внедрение Битрикс24 —
      • Интеграции Битрикс24
    • Реклама и продвижение
      Реклама и продвижение
      • Оптимизация сайтов —
      • Контекстная реклама —
      • SEO для интернет-магазинов —
      • Продвижение сайтов
    Проекты
    • Внедрение 1С
    • Создание WEB Сайтов
    Компания
    • О компании
    • Партнеры
    • Реквизиты
    • Вопрос ответ
    Пресс-центр
    Контакты
      IT Студия Programmist1C
      Услуги
      • Внедрение и сопровождение 1С
        • Маркировка импорта обуви —
        • Hастройка 1С —
        • Обслуживание 1С —
        • Программирование 1С —
        • Доработка 1С —
        • Автоматизация 1С —
        • Сопровождение 1С —
        • Внедрение 1С
      • Создание сайтов
        Создание сайтов
        • Посадочные страницы —
        • Корпоративные сайты —
        • Интернет-магазины
      • Битрикс24
        Битрикс24
        • Техническая поддержка Битрикс24 —
        • Внедрение Битрикс24 —
        • Интеграции Битрикс24
      • Реклама и продвижение
        Реклама и продвижение
        • Оптимизация сайтов —
        • Контекстная реклама —
        • SEO для интернет-магазинов —
        • Продвижение сайтов
      Проекты
      • Внедрение 1С
      • Создание WEB Сайтов
      Компания
      • О компании
      • Партнеры
      • Реквизиты
      • Вопрос ответ
      Пресс-центр
      Контакты
        IT Студия Programmist1C
        IT Студия Programmist1C
        • Услуги
          • Назад
          • Услуги
          • Внедрение и сопровождение 1С
            • Назад
            • Внедрение и сопровождение 1С
            • Маркировка импорта обуви
            • Hастройка 1С
            • Обслуживание 1С
            • Программирование 1С
            • Доработка 1С
            • Автоматизация 1С
            • Сопровождение 1С
            • Внедрение 1С
          • Создание сайтов
            • Назад
            • Создание сайтов
            • Посадочные страницы
            • Корпоративные сайты
            • Интернет-магазины
          • Битрикс24
            • Назад
            • Битрикс24
            • Техническая поддержка Битрикс24
            • Внедрение Битрикс24
            • Интеграции Битрикс24
          • Реклама и продвижение
            • Назад
            • Реклама и продвижение
            • Оптимизация сайтов
            • Контекстная реклама
            • SEO для интернет-магазинов
            • Продвижение сайтов
        • Проекты
          • Назад
          • Проекты
          • Внедрение 1С
          • Создание WEB Сайтов
        • Компания
          • Назад
          • Компания
          • О компании
          • Партнеры
          • Реквизиты
          • Вопрос ответ
        • Пресс-центр
        • Контакты
        • +7 (985) 141-74-63
        info@programmist1c.ru
        Москва, ул. Генерала Кузнецова, 17Б
        • Главная
        • Примеры программирования

        v8: Порционная выгрузка данных в УРБД

        Мы всегда на связи
        Заказать звонок
        Написать сообщение
        Часто возникает потребность порционной выгрузки данных, когда в пакете нужно отправлять не все элементы, а только, например, по 500 элементов.
        Автор статьи: Neco | Редакторы:
        Последняя редакция №2 от 29.08.06


        Ключевые слова: Порционная, выгрузка УРБД


        Нужно выгрузить 500 элементов, а остальные перерегистрировать для следующего пакета. Для этого воспользуемся методикой обмена данными через XML сериализацию.
        Создадим процедуру записи данных и внесем такой код:
        КоличествоВыгружаемыхЭлементов = 500; // можно устанавливать через константу
        
        // Создаем объект записи XML
        ЗаписьXML = Новый ЗаписьXML;
        ЗаписьXML.ОткрытьФайл(ИмяФайла);
        ЗаписьXML.ЗаписатьОбъявлениеXML();
        
        // Создаем новое сообщение
        ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
        ЗаписьСообщения.НачатьЗапись(ЗаписьXML, Ссылка);
        
        // Для сокращения размера файла сообщения записываем соответствие пространств имен
        ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsd", "http://www.w3.org/2001/XMLSchema");
        ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
        ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/data");
        
        НомерСообщения = ЗаписьСообщения.НомерСообщения;
        // Получаем выборку изменённых данных
        Счетчик = 0;
        ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель, НомерСообщения);
        Пока ВыборкаИзменений.Следующий() Цикл
          ОбработкаПрерыванияПользователя();
          Данные = ВыборкаИзменений.Получить();
          Если Счетчик = КоличествоВыгружаемыхЭлементов Тогда
          // регестрируем для следующего номера
            ПланыОбмена.ЗарегистрироватьИзменения(Ссылка,Данные);
            Продолжить;
          КонецЕсли;
          Счетчик = Счетчик + 1;
          // Записываем данные в сообщение
          ЗаписатьДанные(ЗаписьXML, Данные);
          Если Счетчик = КоличествоВыгружаемыхЭлементов Тогда
          // Завершаем запись сообщения
            ЗаписьСообщения.ЗакончитьЗапись();
            ЗаписьXML.Закрыть();
          КонецЕсли;
        КонецЦикла;
        // Завершаем запись сообщения
        ЗаписьСообщения.ЗакончитьЗапись();
        ЗаписьXML.Закрыть();
        

        Процедура чтения:
        // Создаем объект чтения XML
        ЧтениеXML = Новый ЧтениеXML;
        ЧтениеXML.ОткрытьФайл(ИмяФайла);
        
        // Загрузка из найденного файла
        ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
        ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
        НомерСообщения = ЧтениеСообщения.НомерСообщения;
        // Удаляем регистрацию изменений для узла отправителя сообщения
        // по номеру принятого сообщения, полученного из сообщения
        ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого);
        
        // Читаем данные из сообщения пока это возможно
        Счетчик = 0;
        Пока ВозможностьЧтенияДанных(ЧтениеXML) Цикл
          ОбработкаПрерыванияПользователя();
          // Читаем очередное значение
          Данные = ПрочитатьДанные(ЧтениеXML);
          Счетчик = Счетчик + 1;
          Состояние("Загрузка данных: " + Строка(Счетчик));
          Попытка
          // Запись перенесенных данных
            Данные.Записать();
          Исключение
            Сообщить("- Не удалось записать данные: " + ВывестиДанные(Данные,Ложь),СтатусСообщения.Важное);
          КонецПопытки;
        КонецЦикла;
        ЧтениеСообщения.ЗакончитьЧтение();
        ЧтениеXML.Закрыть();
        


        Идея всех "телодвижений" проста. Сначало, при записи в файл, проверяем количество выгружаемых элементов и когда достигаем заданного количества начинаем регистрировать данные уже на следующий номер пакета.
        Конечно, данная методика не гарантирует того что данные будут перегружаться в целости и сохранности, а также того, что пакеты будут иметь одинаковый размер. Но, можно контроллировать список элементов которые мы выгружаем занося их в таблицу значений, на этапе обхода в цикле: "Пока ВыборкаИзменений.Следующий() Цикл" и далее уже работать с таблицой выгружаемых элементов, а остальные перерегистрировать для последующей выгрузки.
        Услуги
        Внедрение и сопровождение 1С
        Создание сайтов
        Битрикс24
        Реклама и продвижение
        Компания
        О компании
        Партнеры
        Реквизиты
        Вопрос ответ
        Проекты
        Пресс-центр
        Контакты
        Возможности
        Подписка на рассылку
        +7 (985) 141-74-63
        Заказать звонок
        info@programmist1c.ru
        Москва, ул. Генерала Кузнецова, 17Б
        Версия для печати
        Политика конфиденциальности
        © 2021 Все права защищены.
        Заказать звонок
        Написать сообщение