This is an old revision of the document!
Система автоматизации сбора статистической информации
Проблема - организовать сбор статистической информации с подчиненных организаций.
Информационные потоки в таких системах организаций включают два направления:
- Вниз - приказы о сборе информации, шаблон документа-отчета, инструкция по сбору и подготовке результата.
- Вверх - отчетный документ на основе шаблона и собранных данных.
Имеет смысл обобщить систему организаций и представить ее в виде иерархии. В каждом узле с ветвлением (нелистовом) происходит копирование информации, передаваемой вниз, и агрегация информации, передаваемой вверх. В листовых вершинах осуществляется только выполнение части инструкции - как получать заполняемую информацию и куда ее вставлять.
Объект автоматизации - деятельность организаций, организованной в иерархию, направленная на сбор статистической информации.
Шаблон документа готовится в Word или Excel. Инструкция указывает какие элементы шаблона подлежат копированию и реорганизации, например заполнение скопированной ячейки собранной информацией. Инструкция изначально - это текстовое описание вышеуказанных процедур. В принципе при реализации можно придумать способ формализации инструкции на техническом английском языке.
Разрабатываемая программная система должна выполнять следующие действия:
- Проводить анализ шаблона документа и извлекать оттуда информацию о структуре собираемых данных.
- Сгенерировать таблицу для хранения данных. Можно предусмотреть повторное использование ранее созданных таблиц, если сбор информации повторяется.
- Генерировать формы сбора информации для организаций, находящихся в листовых вершинах.
- Организовывать сбор информации:
- Из базы данных подшефных организаций извлекаются контактные данные ответственных лиц (в общем случае зависит от типа собираемой задачи),
- Форма и инструкция по ее заполнению рассылается ответственным лицам (ссылка на персонализированную (идентифицирующую конкретную организацию) форму на почту, телеграм, вацап, телеграм и т.п.).
- Ответственное лицо выполняет инструкцию и заполняет форму. В форме надо предусмотреть возможность частично сохранять информацию, т.е. дать возможность заполнять форму поэтапно, если процедура сбора информации во времени распределена. Самый простой способ - две кнопки: “Сохранить”, “Подписать”.
- Ответственное лицо подписывает форму, система сохраняет результат в базе данных.
- Генерировать отчетный документ. Имеет смысл предусмотреть возможность автоматизации корректировки формул шаблона для учета обновленной структуры документа.
## Задел
Пробовал реализовать эту систему для документов WORD: https://github.com/eugeneai/icc.quest . Здесь в docx-шаблоне ячейки представляются при помощи структур :<название поля>:<тип> + можно добавить еще :disabled, если ячейку править нельзя. Пример в проекте input/query1.docx .
Потом ушел в дебри модификации Документа Excel: https://github.com/eugeneai/if2xlsx . Идея - не интерпретировать и не загружать данные excel, а вносить модификации копированием строки или столбца переименовывая ячейки. Что копировать должно определяться структурой таблицы. Копируемые элементы (строки или столбцы) определяются при помощи “переменных диапазонов”. До копирования дело так и не дошло.