Инкрементальная загрузка данных в 1С
Данный пример протестирован на версии 1.3.1.1 Инжектора 1С.
В данной статье будет рассмотрена инкрементальная загрузка данных в 1С с помощью Инжектора на примере документа «Реализация товаров и услуг» в «1С: Управление торговлей» из «1С: ERP Управление предприятием». Мы сделаем ее двумя способами и в качестве таблицы-источника будем использовать выгрузку данных с помощью Экстрактора 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
Получается следующий результат загрузки.
А в таблице при загрузке строк появляется отметка о том, что они прочитаны и загружены.