На проекте N заказчику потребовалась загрузка исторических данных. Всё необходимое заказчик выгрузил в Excel. В начале всё было как положено – мы взяли утилиту импорта данных и согласно проектному решению разработали необходимые модификации, а затем на их основе сделаны соответствующие доработки утилиты для всех кастомных полей и новых справочников.
А затем началось то, что послужило поводом для проведённых работ и данной статьи – постоянные правки для разработанных модификаций со стороны заказчика. Не поймите неправильно, правки – это неотъемлемая часть любого проекта, но когда ради одного нового поля в справочнике ты вынужден повторять ряд однотипных действий, на которые тратится драгоценное время, то возникает огромное программистское желание создать универсальную утилиту, которая автоматически учитывала бы все внесённые в разработку изменения.
Итак, дабы в дальнейшем более не пришлось выполнять сизифов труд, приняли решение разработать универсальную утилиту импорта данных, которая:
Самая главная задача – дальнейшее использование утилиты должно быть возможно без дополнительных модификаций, а следовательно без привлечения разработчика.
Утилита получилась двухкомпонентной: решение для Directum RX и собственно сам исполняемый файл (exe-шник). Работает она, как и её “предок”, через сервис интеграции. Для демонстрации смоделируем ситуацию:
Предположим, нам потребовалась загрузка данных, аналогичная описанной в предыстории, только в нашем случае разработка настолько «кастомная», что мы создаём новый справочник. Итак, мы заранее поставили разработанное решение, сделали нужный нам справочник, который получился таким (прошу прощения за названия):
И последний штрих – поставили галочку “использовать в сервисе интеграции”. Всё. Провели публикацию, и, крайне важно, инициализацию. Убедились, что всё работает.
Далее запускаем утилиту, которая встречает нас таким окном (решено было сделать взаимодействие через графический интерфейс, так как предполагается, что так будет удобнее для конечного пользователя):
Заполняем параметры подключения к сервису: адрес сервиса, логин и пароль учетной записи, от имени которой будет произведена загрузка данных.
Нажимаем кнопку “Создать шаблон”. В открывшемся окне необходимо выбрать разработанный справочник и сформировать шаблон к нему:
Цветные поля имеют следующие обозначения:
Для свойств-ссылок поиск осуществляется по ключевому полю, которое утилита предложит выбрать при импорте. Если коллекция нам не нужна – просто не заполняем её. При заполнении коллекций последующие поля не заполняются (на следующем скрине продемонстрировано).
Заполняем необходимые нам данные:
Стоит сказать пару слов о заполнении шаблона. Сейчас предполагается, что шаблон заполняется вручную. Возможно, в дальнейшем будет реализовано какое-либо решение для ускорения и этого процесса, если возникнет такая необходимость, но на данном этапе оно отсутствует.
Сохраняем, нажимаем на главной форме утилиты кнопку “Импортировать данные”, выбираем только что сохранённый файл и справочник для импорта:
Нажимаем кнопку “Импорт”, после чего утилита предлагает нам настроить ключевые поля для реквизитов – данного справочника и всех свойств-ссылок. По ним будет осуществляться поиск внутри системы.
Жмём “Подтвердить”, дальше остаётся только ждать загрузки, за которой можно наблюдать по лог-окну:
После оповещения утилиты о завершении загрузки идём в систему и проверяем результат.
Всё успешно загружено.
Утилита пока не доведена до полного рабочего состояния, в ней присутствует ряд недочётов, которые требуют доработок:
Однако уже в текущем виде утилита способна выполнять рутинные операции по импорту данных в систему. А главное, она позволяет снизить трудоемкость импорта исторических данных за счет того, что её использование возможно без дополнительных модификаций. Разработчику больше не придётся производить ряд однотипных действий внутри стандартной утилиты:
Предложенное решение позволяет перейти сразу к заполнению шаблона.
На доработку всех недочётов уйдёт какое-то время. Целью же данной статьи является предварительное ознакомление и сбор предложений и идей. Поэтому, пишите ваши комментарии и вопросы (если таковы имеются). Всем удачи! Спасибо за уделённое время!
Отличная работа, давно назрела такая потребность
Из пожеланий - добавить чтобы настройку справочника, ключевых полей для реквизитов и всех свойств-ссылок можно было выгружать в конфиг. Чтобы разработчик один раз настроил и отдал консультанту/заказчику для самостоятельного импорта. А им оставалось только указать файл с данными и конфиг с настройками.
Юлия, на самом деле я думал произвести локализацию реквизитов, но вариант где разработчик контролирует выбор параметров таким образом мне понравился намного больше. Поэтому я обязательно учту Ваше предложение при доработках. Спасибо за Ваш комментарий!
Было бы очень интересно посмотреть на исходный код.
Хайрбек, по сути обвязка вокруг сервиса интеграции с небольшой подпоркой со стороны прикладной разработки
Хайрбек, к сожалению решение пока что находится на стадии разработки и код в настоящее время не готов к демонстрации. Вероятнее всего его конечная версия будет сильно отличаться от той, что есть сейчас.
Авторизуйтесь, чтобы написать комментарий