Инкрементальная загрузка данных в 1С

Примечание

Данный пример протестирован на версии 1.3.1.1 Инжектора 1С.

В данной статье будет рассмотрена инкрементальная загрузка данных в 1С с помощью Инжектора на примере документа «Реализация товаров и услуг» в «1С: Управление торговлей» из «1С: ERP Управление предприятием». Мы сделаем ее двумя способами и в качестве таблицы-источника будем использовать выгрузку данных с помощью Экстрактора 1С. Однако, Вы можете использовать любой удобный источник данных.

Создание проекта выгрузки в Экстракторе 1С

Для создания проекта выгрузки документов в Экстракторе 1С заходим в раздел «Проекты» Экстрактора 1С и нажимаем «Создать».

Выбираем тип источника данных «Объект»,

затем объект конфигурации «Реализация товаров и услуг», а внутри — «Товары».

1

2

Теперь настроим параметры выгрузки в режиме расширения параметров.

В качестве параметра инициализации установим параметр «ДатаДень», в качестве регулярного параметра — параметр «Ссылка».

1

2

Оставим все выбранные поля набора данных и добавим дополнительные:

  • Ссылка.Автор;

  • Ссылка.Валюта;

  • Ссылка.Договор;

  • Ссылка.Клиент;

  • Ссылка.Комментарий;

  • Ссылка.Менеджер.

Вкладки «Отбор» и «Параметры» оставляем без изменений.

Теперь настроим вычисляемые поля. Выбираем «Изменить»

И добавим следующие вычисляемые поля:

  • СсылкаГуид

  • НоменклатураГуид

  • ДатаВыгрузки

А также добавим еще одно поле: назовем его «ID», в качестве обработчика установим Новый УникальныйИдентификатор() с типом «Строка».


Теперь выбираем подключение, создаем таблицу, даем ей название.

На этапе сопоставления полей проверяем, чтобы для полей «Параметры.Дата день» «Параметры.Ссылка» были установлены соответствующие флаги «Сегмент инициализации» и «Регулярный сегмент».

Следующий этап снова пропускаем.

Задаем наименование проекту в соответствующем поле, а затем последовательно нажимаем кнопки «Записать», «Сформировать очередь» и «Выполнить проект».

Способ 1

Итак, заходим в раздел «Проекты» Инжектора 1С,

1

2

нажимаем кнопку «Создать»,

затем выбираем вариант «Загружаем объекты»

и подключение к базе-источнику.

Теперь выбираем таблицу-источник данных и объект-приёмник данных, после чего система предложит сопоставить поля источника данных и приемника по алиасам полей.

В данном случае, источником данных является выгрузка через Экстрактор 1С, описанная в этой статье ранее. В качестве объект для загрузки выберем «РеализацияТоваровУслуг (Документы)» и соглашаемся с автоматическим подбором полей.

1

2

3

4

Далее выбираем, что будем делать с данными.

Настроим сценарий загрузки данных.

Здесь оставляем две табличные части:

  • Реквизиты шапка:

    • внутри для «Ссылка» выбираем из выпадающего списка имя загружаемых данных на «SsylkaGuid» и соглашаемся с автоматическим подбором полей поиска.

  • Табличная часть Товары:

    • внутри для «Номенклатура» в колонке «Обработка полей» — «Если не найден» устанавливаем значение «Создавать». Данная настройка позволяет автоматически создавать поля и присваивать им уникальный идентификатор, в случае, если они не найдены при сопоставлении;

      • для «Ссылка» внутри «Номенклатура» выбираем из выпадающего списка имя загружаемых данных «NomenklaturaGuid»;

    • для «Наименование» выбираем из выпадающего списка имя загружаемых данных «Nomenklatura».

Теперь настроим инкрементальную загрузку. На следующем этапе выбираем «Настроить параметры».

Нажимаем кнопку «Конструктор»

и переходим во вкладку «Условия», где указываем следующее:

RealizatsiyaTovarovUslugTovary_07112025.DataVygruzki > &DataVygruzki

То есть, Инжектор будет выбирать из таблицы все строки, у которых дата выгрузки из системы-источника, больше даты последней загрузки в систему-приемник.

Обратите внимание!

Если в качестве системы-источника Вы используете не Экстрактор 1С (как в данном примере), а другую, то для корректной работы инкрементальной загрузки данных в 1С необходимо предварительно добавить дополнительное поле DataVygruzki в таблицу-источник. Данное поле должно содержать дату и время записи строки в таблицу.

1

2

Теперь установим начальное значение для параметра DataVygruzki, тип внешних данных устанавливаем «datetime» (таким образом, Инжектор будет фильтровать строки, начиная с последней загрузки, и добавлять новые, если они будут обнаружены) и устанавливаем флаг «Обновлять значения при успешной загрузке». Обновим текст запроса к внешней базе с помощью соответствующей кнопки.

1

2

В настройках загрузки указываем количество читаемых строк, затем нажимаем «Сохранить проект», а затем «Загрузить данные».

1

2

3

Получается следующий результат загрузки.

Способ 2

На этапе создания выгрузки из Экстрактора 1С мы добавили в таблице-источнике вычисляемое поле ID, в качестве обработчика для него установили Новый УникальныйИдентификатор(), а в качестве типа — «Строку».

Данное поле необходимо для того, чтобы каждая строка имела уникальный ключ.

Перейдем к созданию проекта загрузки с помощью Инжектора 1С.

Заходим в раздел «Проекты» Инжектора 1С,

1

2

нажимаем кнопку «Создать»,

затем выбираем вариант «Загружаем объекты»

и подключение к базе-источнику.

Теперь выбираем таблицу-источник данных (здесь она была создана с помощью Экстрактора 1С), также здесь добавим дополнительное техническое поле: ReadDate (дата прочтения строки), устанавливаем для нее тип «datetime» и нажимаем «Создать колонку для отметки даты чтения». В этой колонке будут отмечаться уже прочитанные загруженные в Инжектор строки.

1

2

3

А также устанавливаем флаг для поля «ID» для быстрой отметки о чтении/обработке. Это необходимо для того, чтобы после прочтения строк Инжектор нашел их в таблице и пометил как прочитанные.

Теперь выберем объект-приёмник данных («РеализацияТоваровУслуг (Документы)»), после чего соглашаемся с автоматическим подбором полей.

1

2

Далее выбираем, что будем делать с данными.

Настроим сценарий загрузки данных.

Здесь оставляем две табличные части:

  • Реквизиты шапка:

    • внутри для «Ссылка» выбираем из выпадающего списка имя загружаемых данных на «SsylkaGuid» и соглашаемся с автоматическим подбором полей поиска.

  • Табличная часть Товары:

    • внутри для «Номенклатура» в колонке «Обработка полей» — «Если не найден» устанавливаем значение «Создавать». Данная настройка позволяет автоматически создавать поля и присваивать им уникальный идентификатор, в случае, если они не найдены при сопоставлении;

      • для «Ссылка» внутри «Номенклатура» выбираем из выпадающего списка имя загружаемых данных «NomenklaturaGuid»;

    • для «Наименование» выбираем из выпадающего списка имя загружаемых данных «Nomenklatura».

Теперь настроим инкрементальную загрузку. На следующем этапе выбираем «Настроить параметры».

Нажимаем кнопку «Конструктор»

и переходим во вкладку «Условия», где указываем следующее:

RealizatsiyaTovarovUslugTovary_07112025.ReadDate ЕСТЬ NULL

1

2

Обновим текст запроса к внешней базе с помощью соответствующей кнопки.

В настройках загрузки указываем количество читаемых строк, затем нажимаем «Сохранить проект», а затем «Загрузить данные».

1

2

3

Получается следующий результат загрузки.

А в таблице при загрузке строк появляется отметка о том, что они прочитаны и загружены.