US: Загрузить справочник ОКПД2, 20_000 строк

отредактировано 23 июл Раздел: Идеи

Проблема. После начала загрузки файла okpd.xslx всплывает большое огромное количество сообщений, это пугает 🙂
Но больше расстроило, что из более чем 20000 строк загружается примерно 2500 😐
Непонятна причина, по которой не загрузилось больше 80% данных.
Непонятно, что делать дальше

Вот такая примерно у меня US: Как администратор системы я хочу импортировать справочник ОКПД2 из Excel-файла и получить отчёт о процессе загрузки (сколько импортировано успешно, сколько не удалось импортировать и по какой причине)

Попробовал загрузить справочник напрямую в БД (insert okpd2 (..) values (..)), но ожидаемо, что GreenData не увидела этих данных, т.к. нужно обновлять ещё какие-то таблицы Гриндаты. С этим попозже попробую разобраться и отпишусь здесь

Более-менее приемлемо удалось решить через ETL (читаем XLSX, отправляем каждую строку в очередь, в GreenData забираем из очереди и сохраняем объект; в случае ошибок пишем в лог). Но это неудобно: нужно создавать слушателей, настраивать их, писать код и т.д.

Комментарии

  • отредактировано 23 июл

    Попробовал загрузить справочник напрямую в БД (insert okpd2 (..) values (..)), но ожидаемо, что GreenData не увидела этих данных, т.к. нужно обновлять ещё какие-то таблицы Гриндаты. С этим попозже попробую разобраться и отпишусь здесь

    Скорее всего, подойдёт такой вариант: INSERT INTO SYS_OBJECT (...) + INSERT INTO DICT_OKPD2 (...) + insert into sys_obj_uuid (...)

    ещё, если нужен аудит: INSERT INTO sys_au_change (...) + insert into sys_au_action (...) + insert into sys_au_change_type_attr_un (...)

  • Добрый день!
    Рекомендуется использовать прикладные настройки системы через загрузку объектов из файлов Excel.
    Данный функционал позволяет получить статус-бар о выполнении импорта и возможных ошибках, также файл будет импортирован полностью.
    Пример результата импорта:
    Подробная информация wiki: Загрузка объектов из файлов Excel
    Импорт доступен из редактора шаблона, либо можно добавить отдельную кнопку для импорта в реестр:

  • @sergeev_if написал:
    Подробная информация wiki: Загрузка объектов из файлов Excel

    Интересно, я так и загружал, через шаблоны, именно по этой статье

    Рекомендуется использовать прикладные настройки системы через загрузку объектов

    Да, именно так и хочется 🙂 а не окольными путями

    Спасибо за участие! Классно, что у вас всё загрузилось

  • отредактировано 25 июл

    В общем, получилось загрузить все записи, несколько много раз импортируя okpd.xlsx 😵‍💫

    На первой итерации импорт дошёл до "10 Продукты пищевые". На второй - до "11 ххх", .. "15.2 Обувь". И это как будто понятно - такие записи дублируются в excel-файле:

    Но почему 😵‍💫 Почему при повторном импорте успешно импортируются эти строки?

    А ещё непонятно, почему значения вида "15,2" (в excel) преобразуются в "15.2" (в Гриндате) 😵‍💫

    Это, конечно, хорошо, что получается точка (таков формат ОКПД2), но почему?
    (я примерно понимаю почему - Гриндата, наверное, интерпретирует строку 15,2 как число. но зачем? пусть лучше запятая остаётся)

  • Добрый день!
    Подозреваем что ограничение с импортом связано все же с настройками шаблона.
    Характерно процесс прекращается на разных категориях. Прикрепляю пример настроек шаблона, с которыми файл был импортирован полностью, за одну итерацию.


    Пример настроек шаблона

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

    По изменению десятичного разделителя ("15,2" -> "15.2") уточним информацию. И вернемся с ответом.

  • @sergeev_if написал:
    Прикрепляю пример настроек шаблона, с которыми файл был импортирован полностью, за одну итерацию

    Большое спасибо 🙏

  • @Саша написал:
    А ещё непонятно, почему значения вида "15,2" (в excel) преобразуются в "15.2" (в Гриндате) 😵‍💫

    Исходная таблица такая. Не смотря на то, что значение столбца указан как Текстовый при проверке через функцию =ТИП(...) возвращается значение 1, что соответствует числу. Система при импорта определяет это значение как число изменяя десятичный разделитель.

    Чтобы значение импортировалось без изменений необходимо, чтобы тип ячейки был Текст [2].
    Один из способов два раза нажать на ячейку и нажать enter. В ячейке слева сверху будет отображаться зеленый угол, а при наведение появится предупреждение, что число форматируется, как текст.
    До:

    После:

  • Всё получилось

    Спасибо!

Войдите или Зарегистрируйтесь чтобы комментировать.