Секционированная загрузка документа из 1С в PostgreSQL

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

Задача будет продемонстрирована на примере загрузки документа 1С «Заказ клиента». Для настройки загрузки данных из документа 1С потребуется выполнить несколько команд, так как документ в 1С имеет в структуре шапку и табличные части, в которых хранится вся информация.

Шаг 1: Настройка команды загрузки шапки документа

В меню выбрать компонент «Staging»,  пункт «Команды», затем модель данных.

Для создания команды необходимо заполнить форму:

  • Имя создаваемой команды и, при необходимости, описание.
  • Указать «Профиль».
  • «Модель» и «Домен» заполняется автоматически.
  • «Источник данных» — подключение предварительно было настроено — источником данных в примере является база данных 1С.
  • «Целевая система» — подключение предварительно было настроено — PostgreSQL.
  • «Слой данных».
  • Зададим имя новой таблицы.
  • В данном случае, так как предполагается загрузка со скользящим окном и секционированным хранением данных, то опцию «Очистить перед выполнением» выбирать не нужно, секции с данными будут заменяться на те, что выберет запрос на источнике.
  • Опция «Делать бэкап» позволяет перед выполнением команды создавать резервную копию секции назначения.

Шаг 2: Создание запроса к шапке документа 1C

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

В дереве объектов нужно найти нужный документ — «Заказ клиента». При раскрытии документа видна его структура: шапка (основные данные) и табличные части (детализированные данные). Для получения полной картины данных информации из одной шапки недостаточно — потребуется отдельно загрузить табличные части.

Следует выбрать документ и нажмите «Сформировать запрос». По умолчанию запрос формируется на встроенном языке 1С; если нужен SQL-запрос, переключите режим в соответствующий вариант перед генерацией.

При необходимости запрос может быть скорректирован.

На первом этапе настраивается загрузка данных шапки документа. Затем создается отдельная команда для загрузки табличной части — это обеспечит полноту и корректность данных в целевой системе.

После создания запроса производим его проверку: на этом этапе выполняется расчёт параметров, входящих в запрос, если таковые есть. Затем нажмите кнопку «Выполнить» и оцените полученные данные. Если данные соответствуют ожиданиям, нажмите «ОК».

Размер пакета данных установлен по умолчанию.

Шаг 3: Настройка секционирования данных

Для настройки секционирования включим опцию «Использовать секции» — появятся формы для настройки, где необходимо выполнить следующие действия:

  • Указать схему секционирования;
  • Укажите атрибут, по которому будет определяться секция, в поле «Поле секции»;
  • В настройках «Секции» можно выбрать те секции, которые будут перезагружаться на регулярной основе, или «Автоматическое определение секций» для формирования скользящего окна;
  • Установите флажок «Автоматическое определение секций» и укажите границы; если в схеме секционирования они отсутствуют, то в момент загрузки они будут созданы автоматически в соответствии с правилом в схеме секционирования;

          Границы секционирования укажем через системные параметры, которые определяют начало месяца и конец месяца.

          В сами параметры передаем число равное количеству дней с начала месяца по текущий день, и соответственно с конца месяца по текущий день.

          Так как на тестовом источнике нет актуальных данных, то загрузим данные за 2022 год

  • Выберите «Режим пересоздания секций» и «Пересоздавать пустые секции», так как они необходимы для работы секционирования.

Нажать кнопку «Создать». На этом процесс создания команды завершён.

Шаг 4: Настройка команды загрузки табличной части документа

Скопируем уже созданную команду и отредактируем её.

Для этого выбираем команду в таблице основного окна и нажимаем кнопку «Скопировать».

После этого форма создания/редактирования команды заполнится данными из выбранной команды — останется только отредактировать их:

  • Меняем наименование команды и описание (если оно было указано),
  • Изменим имя целевой таблицы,
  • Нажимаем кнопку «Создать» в запросе и переходим к редактированию.

Шаг 5: Создание запроса к табличной части документа 1C

Для этого необходимо понять, как шапка документа связана с его табличными частями. Используем тот же документ «Заказ клиент» и переходим в режим просмотра «ER-модели».

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

Перед формированием ER-модели необходимо выбрать «Режим визуализации» → «Детальная модель».

Выполняем запрос для построения модели.

После построения модели слева можно наблюдать структуру выбранного документа, а справа — справочники, на которые он ссылается, а также связи между ними.

Находим табличную часть «Товары» и шапку документа «Заказ клиента» для определения связи между ними.

Чтобы определить атрибуты, по которым связаны таблицы между собой необходимо воспользоваться прокруткой в таблицах и визуально отследить связь между атрибутами разных таблиц.

В 1С связь между шапкой документа и его табличной частью настраивается автоматически через атрибут «Ссылка» — системное поле-идентификатор документа.

Переходим к формированию запроса, переключив режим конструктора на «Код».

В дереве объектов 1С необходимо раскрыть документ «Заказ клиента» и выбрать в нём табличную часть «Товары». После чего нажать «Сформировать запрос».

Для добавления атрибута «Дата» к табличной части необходимо выполнить соединение с шапкой документа по атрибуту «Ссылка», после чего добавить в запрос атрибут «Дата» из шапки документа.

Проверим запрос и выполните его.

Необходимо убедиться, что атрибут «Дата» был добавлен и заполнен, после чего нажмите «ОК» для сохранения запроса и сохраняем команду.

Шаг 6: Запуск команд для загрузки

Для их запуска переходим в пункт «Профили» и выбираем профиль.

Перед запуском профиля убедитесь, что включены только те команды, которые необходимы для загрузки. Чтобы запустить загрузку, нажмите кнопку «Загрузить» и подтвердить действие.

Для проверки данных в целевой системе перейти на вкладку «Данные» выбрать подключение. В древовидной структуре выделить таблицу, содержащую данные шапки, и нажать «Сформировать запрос».

Выполнить запрос и оценить полученные данные.

Для проверки данных из табличной части «Товары», выбираем нужную таблицу→ Сформировать запрос → Выполнить запрос и оценить полученные данные.

При реализации бизнес-логики необходимо в запросах учитывать взаимосвязь таблиц.

Настроенные команды могут запускаться на периодической основе — как в ручном режиме через веб-интерфейс, так и с помощью оркестратора. Результатом работы команды будет следующий сценарий:

  • Загрузка данных в систему назначения во временные таблицы;
  • Переключение секций с данными из временной таблицы в таблицу назначения согласно схеме секционирования.

Настройка загрузки документа 1С «Заказ клиента» с секционированным хранением данных завершена.

Наверх

Мы на связи в мессенджерах

Напишите нам - это самый простой и быстрый способ получить ответ удобном формате!