6 Работа с выгрузкой данных
Для работы «Универсального транслятора данных 1С» необходимо чтобы была установлена СУБД необходимого типа (ClickHouse, MySQL, Microsoft SQL, PostgreSQL), в ней была создана БД и создана учетная запись пользователя, под которым будет производиться подключение и работа с БД.
Сама БД должна быть доступна с сервера приложений 1С.
Создание подключения к БД
Для создания подключения к базе данных необходимо открыть «Настройки подключения к SQL».
Для создания нового подключения необходимо нажать на кнопку «Создать» и в форме создания подключения необходимо заполнить необходимые поля:
- Наименование подключения (Наименование);
- Имя или IP-адрес сервера БД (Server);
- Логин пользователя для подключения к БД (Login);
- Пароль пользователя для подключения к БД (Password);
- Имя драйвера, который будет использован для подключения к БД (Driver);
- Имя БД, созданной в СУБД (Base);
- Тип СУБД;
- Признак «Использовать по умолчанию» (при установке данного признака созданное подключение будет автоматически подставляться в настройки пакетов выгрузки).
Интерфейс управление пакетами данных
Основное рабочее место для управления пакетами данных - «Управление Коннектором» (далее по тексту – УК) располагается в блоке «Сервис» подсистемы «Коннектор (ИТ-Координата)».
Состав интерфейса УК
1) Кнопки управления предпросмотром данных и выгрузкой в БД 2) Справочник настроек, то есть пакетов данных 3) Блок управления способами выгрузки данных 4) Блок настройки данных для выгрузки 5) Блок дополнительных отборов к выгрузке 6) Блок предпросмотра данных перед выгрузкой 7) Дополнительные настройки пакета данных
Создание набора данных для выгрузки (пакета данных)
Для создания набора данных, необходимо в УК в поле «Текущие настройки» нажать на кнопку создания нового пакета.
В появившейся форме создания новой настройки (пакета данных) необходимо заполнить поля:
- Наименование настройки;
- Имя таблицы, которая будет создана в БД после первой выгрузки данных в нее (в наименовании таблицы в БД следует использовать латинские буквы, цифры, без пробелов, могут быть использованы нижнее подчеркивание в качестве разделителя между текстом).
Для записи новой настройки необходимо нажать на кнопку «Записать и закрыть» или «Записать».
Стандартный запрос
В рамках описания работы «Стандартного запроса» будет приведен пример выгрузки справочника «Склады» в промежуточную БД. Аналогичные действия могут быть выполнены для любого другого объекта системы, содержащей данные необходимые для передачи в промежуточную БД.
Настройка пакета данных
Для передачи справочника «Склады» необходимо:
- Выбрать способ выгрузки «Стандартный запрос»
- Последовательно, под блоком «Блок управления способами выгрузки данных» выбрать тип, имя и таблицу объекта из которого будут выгружаться данные.
В нашем примере это:
- Тип объекта: «Справочник»
- Имя объекта: «Склады»
- Таблица: Основные данные
Таблицу из которой будет выгружен объект система по умолчанию выберет «Основные данные». Если требуется выгрузить данные из табличной части объекта, необходимо выбрать необходимую табличную часть в соответствующем поле.
- После выбора имени объекта система автоматически выведет в «Блок настройки данных для выгрузки» все реквизиты выбранного объекта, отсортированные по алфавиту, а также все реквизиты будут помечены для передачи слева флагом. В таблицу будет выведена информация о синониме реквизита (Синоним в 1С), его имени, заданного в конфигураторе (Имя в 1С), а также транслит имени реквизита латинскими буквами (Имя в БД).
«Имя в БД» - это поле которое содержит наименование колонки, которая будет создана в БД при первой выгрузки информации. «Имя в БД» может быть изменено, для этого необходимо в строке дважды кликнуть по полю и задать другое имя используя в наименовании латинские буквы и цифры (без пробелов).
- Следующим шагом необходимо определить, какие реквизиты должны быть выгружены из выбранного объекта. В качестве примера определим эти реквизиты: «Ссылка», «Наименование», «Подразделение», «Склад / Магазин».
Для этого снимем все отмеченные для передачи флаги кнопкой с изображением четырех серых квадратов, отметим вручную необходимые реквизиты соответствующим флагом.
Стоит обратить внимание, что расположение реквизитов в данной таблице – диктует порядок создания колонок в БД. Если порядок реквизитов в таблице не устраивает, то его можно изменить с помощью кнопок Вверх/Вниз.
На этом основная настройка пакета выгрузки завершена.
- Для предпросмотра результата выгрузки, необходимо нажать в УК кнопку «Показать результат», после чего система выведет в «Блок предпросмотра данных перед выгрузкой» данные соответствующие указанным в наборе настройками.
- Дополнительные отборы. Для набора данных сформированного «Стандартным запросом» возможно указание дополнительного отбора к данным которые можно выгрузить в промежуточную БД. Блок управления отборами должен быть знаком сотруднику, который занимается системами 1С.
Допустим, мы хотим исключить из выгрузки склады, которые являются «папками» (т.е. группами), а также нужны только те склады, в которых заполнен реквизит «Подразделение». Для этого добавим дополнительный отбор и укажем «Это группа» Равно «Нет» и добавим еще 1 отбор по реквизиту «Подразделение» и укажем, что он «Заполнен», сгруппируем данные условия группой «И».
После предпросмотра результата выгрузки увидим, что из данных пропали группы и склады в которых не заполнен реквизит «Подразделение».
- Для записи итогов настройки пакета, необходимо нажать на кнопку «Записать изменения настроек», только после записи настроек пакета возможна выгрузка данных в промежуточную БД.
В случае нажатия на кнопку «Отменить изменение настроек». тогда последние НЕ записанные изменения будут отменены и пакет вернется в состояние «до изменения».
Выгрузка данных в БД
Для выгрузки данных в БД необходимо нажать на кнопку «Выгрузить результат в базу данных». При завершении выгрузки выведется сообщение об успешной или неуспешной выгрузке данных в БД.
Проверим результат выгрузки в БД (в примере использовалась база PostgreSQL).
Обратите внимание, что в наименования колонок были добавлены дополнительные префиксы, которые указывают на тип данных в базе 1С.
Так же дополнительно была создана колонка «_recordingdate» в которой фиксируется дата выгрузки данных.
Все данные ссылочного типа выгружаются двумя колонками «тип» и «уникальный идентификатор элемента справочника. В нашем примере значение реквизита «Подразделение» выгружено колонками «ntype_podrazdelenie» в котором зафиксирован тип справочника, который используется в 1С, и «ref_podrazdelenie», в которое в качестве значения выгружен уникальный идентификатор элемента справочника «Структура предприятия». Если ссылочный реквизит заполнен пустой ссылкой (т.е. не заполнен), то в качестве значения выгружается значение «00000000-0000-0000-0000-000000000000».
Значение перечисления выгружается аналогично ссылочному объекту, единственное отличие, что в колонку с префиксом «ref_» выгружается значение перечисления, указанное в конфигураторе.
Выгрузка изменений
Выгрузка изменений с помощью «Коннектора» возможна только в режиме выгрузки «Стандартный запрос», только для справочников, документов, регистров сведений и накопления, подчиненных регистратору.
В случае если в настройках пакета установить признак «Выгружать только изменения», то в промежуточную базу в первый раз будет выгружена вся информация, соответствующая настройкам пакета, начиная со второй выгрузки будут выгружаться только измененные данные.
Фактом изменения данных для документов и справочников является запись объекта, для регистров сведений и накопления подчиненных регистратору является проведение регистратора (то есть документа).
При записи или проведении объектов делаются записи в соответствующих дополнительно созданных регистрах сведений (см. п. 4).
Настройка выгрузки по расписанию
Для настройки выгрузки пакета данных не вручную, а по расписанию, необходимо перейти на вкладку «Дополнительные настройки», установить признак необходимости выгрузки по расписанию и настроить расписание выгрузки данных так же, как они настраиваются для любого регламентного задания.
Произвольный запрос
При выборе способа выгрузки данных «Произвольный запрос» в УК появится дополнительная вкладка «Произвольный запрос» в котором необходимо разместить запрос к базе данных на языке 1С, так же, как если бы он был бы написан в консоли запросов.
Если запрос не был заготовлен ранее, то его можно сформировать прямо в УК нажав на кнопку «Открыть конструктор запроса» (возможно для написания запроса потребуется помощь программиста 1С).
В качестве примера выгрузки возьмем тот же справочник складов с теми же условиями (выгрузка складов, не являющихся группами и с заполненным подразделением).
В поле запроса разместим следующий запрос:
В качестве параметра «Подразделение» укажем на вкладке «Произвольный запрос» пустое значение.
Переключимся обратно на вкладку «Основной блок» и увидим, что в «Блок настройки данных для выгрузки» появились поля которые были выбраны в запросе, они уже будут выбраны для выгрузки, но расположены в алфавитном порядке. Для изменения порядка следования колонок можно воспользоваться кнопками .
При нажатии на кнопку «Показать результат» в «Блок предпросмотра данных перед выгрузкой» будет выведен результат запроса.
Дополнительно к отборам, указанным в запросе, можно в «Блоке дополнительных отборов к выгрузке» указать дополнительные отборы к данным которые были сформированы запросом.
В качестве примера укажем, что в наименовании складов должно содержаться текст «метал».
Для выгрузки данных в БД, необходимо записать настройки пакета данных и нажать на кнопку «Выгрузить результат в базу данных».
Произвольный код 1С (Функции)
Способ выгрузки данных «Произвольный код 1С» (с условным названием в УК «Функция») был разработан специально, так как запросы от Заказчиков для выгрузки данных звучат как «Выгрузить данные как в том отчете».
Так как отчеты в 1С в основном написаны на СКД, то чтобы не переписывать отчеты или не подгонять данные для выгрузки, которые формируются отчетом, мы предоставляем возможность написать код в 1С, который сформирует итоговые данные формируемые нужным отчетом, поместить их в таблицу для выгрузки и выгрузить в промежуточную БД.
Создание таблицы итоговых данных
Прежде чем писать код, необходимо определиться в каком формате (таблице) данные из отчета должны быть выгружены из 1С.
Для этого необходимо выбрать режим выгрузки «Функция» и в появившейся вкладке «Функция» выбрать элемент справочника «Функции».
Перед ее выбором, создадим «Функцию», которая будет нам возвращать нужный нам результат.
В качестве примера выгрузим так же справочник «Складов с теми же условиями, что использовали при выгрузке «Произвольным запросом» (выгрузка складов, не являющихся группами, с заполненным подразделением, в наименовании которых встречает слово «метал»).
- Переходим в справочник «Функций».
- Нажимаем кнопку «Создать» и создаем новый элемент справочника. Если в системе 1С имеется справочник «Дополнительные отчеты и обработки», то будет доступен переключатель указания местонахождения функции либо в общем модуле конфигуратора, либо в модуле объекта внешней обработки.
Если такой справочник отсутствует, то переключатель будет не доступен.
- Необходимо указать «Наименование» функции «Выгрузка складов».
- Укажем место расположения функции в переключателе «Функция выполняется из» - «Общего модуля» (в составе «Коннектора» входит общий модуль «ИТКФункции», который создан специально для размещения функций для выгрузки данных). В поле «Путь к функции строкой» укажем «ИТКФункции.ВыгрузкаСкладов».
- На вкладке «Поля результата» необходимо сформировать таблицу, которая должна выгружаться из 1С. Для этого по кнопке «Добавить» выбираем тип значения колонки таблицы, после добавления колонки в таблицу переименуем название колонки в поле «Имя».
В поле «Имя» необходимо указать наименование колонки без пробелов между словами, так как именно эти наименования колонок будут использоваться в коде 1С.
В нашем примере создадим 4 колонки:
- Ссылка (тип «Справочник.Склады»);
- Наименование (тип «Строка»);
- Подразделение (тип «Справочник.СтруктураПредприятия»);
- ТипСклада (тип «Перечисление.ТипыСкладов»).
- На вкладке «Параметры» мы можем указать дополнительные параметры, которые могут быть использованы в коде 1С. В нашем примере введем 2 параметра:
- «Подразделение» (тип «Справочник.СтруктураПредприятия»), в качестве значения параметра ничего не укажем (то есть пустая ссылка);
- «ПолеПоискаНаименование» (тип «Строка»), значение «метал».
Наименования параметров указывать необходимо указывать без пробелов между словами.
- Запишем настройки нашей «Функции» по кнопку «Записать и закрыть». На этом создание элемента справочника завершено.
- Переходим в конфигуратор и открываем общий модуль «ИТК_Функции».
- Создадим функцию с таким же названием какое мы указали в поле «Путь к функции строкой» после указания общего модуля, то есть «ВыгрузкаСкладов».
Функция должна быть ЭКСПОРТНОЙ и содержать в 2 параметра:
- ТаблицаПолей – это пустая таблица значений с типизированными колонками, которую мы создавали в справочнике «Функции» на вкладке «Поля результата».
- СтруктураПараметров – это структура с параметрами, которые мы указывали на вкладке «Параметры» в элементе справочника функции.
Функция должна вернуть заполненную «ТаблицуПолей» данными из 1С.
В рамках нашего примера разместим в теле функции следующий код:
Что делает этот код
В коде выполняется запрос к базе 1С к справочнику «Склады» с отборами по реквизитам:
- ЭтоГруппа = Ложь;
- Подразделение НЕ принимает значение из параметра «СтруктураПараметров.Подразделение» (так как в параметрах «Функции» мы ничего не указали в качестве значения, то будет передана пустая ссылка на справочник «Структура предприятия»);
- В Наименование склада входит текст, переданный в параметре «СтруктураПараметров.ПолеПоискаНаименование» (мы передали значение «метал»).
После выполнение запроса, кодом заполняется «ТаблицаПолей» данными результата запроса и возвращает эту таблицу как результат работы «Функции».
После написания функции необходимо обновить конфигурацию, чтобы добавленная функция применилась.
После возвращения в режим «Предприятия», необходимо выбрать функцию на вкладке «Функция» в УК в ранее созданной настройке пакета данных.
Для просмотра результата выполнения функции - нажмите на кнопку «Показать результат».
Выгрузка данных в БД и просмотр результатов
Для выгрузки данных в БД, необходимо записать настройки пакета данных и нажать на кнопку «Выгрузить результат в базу данных».