Контакты:

Как мы делали сайт
для работы с гос. закупками

Во время моей работы в одной из российских компаний, занимающейся разработкой веб-приложений, была поставлена задача написать программу для расчета "НМЦК" - "Начальной (Максимальной) Цены Контракта", имеющую веб-интерфейс и работающую с открытыми данными из государственной базы данных.

Над программой, помимо меня, работал еще один человек. Также, для некоторых задач мы привлекали фрилансеров.

Программа была предназначена для бюджетных (государственных) организаций, которым нужно было производить закупки и составлять отчеты по ним (вся эта процедура регулировалось специальными законами). Среди наших клиентов были больницы, школы, МВД и многие другие организации.

Сайт гос. закупок

Сайт гос. закупок

Суть программы была в следующем - есть веб-приложение с кучей вкладок, на которых пользователь заносит данные по своему контракту. Выбирает способ проведения закупок и т.д. (на самих вкладках присутствуют поясняющие это дело подсказки и ссылки на соответствующие законы - это дело "придумывал" наш юрист).

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

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

Калькулятор НМЦК

Калькулятор НМЦК

Далее, путем нажатия на несколько кнопок, пользователь рассчитывает так называемое "НМЦК". Что это такое? Суть в том, что по закону организация не может закупать что-то по произвольной цене. Она должна обосновать, почему выбрана именно такая цена, приведя примеры из статистики, из уже происходивших заказах и т.д. - все это нужно, чтобы избежать нечестного проведения закупок (привет, распилы и откаты!).

Мое определение НМЦК, конечно, может быть неточным и не совсем правильным - я ни коим образом не юрист и в законах не разбираюсь - описал это так, как понял это я (для технической реализации этого было вполне достаточно).

Наконец, на основании рассчитанных и введенных данных, программа генерировала отчеты в форматах MS Word и PDF.

Вот такая вот стояла задача.

Калькулятор НМЦК

Выбор методики

Реализовывали мы это путем создания клиент-серверного приложения (в виде сервлета для Apache Tomcat), на языке Java, с использованием GWT (Google Web Toolkit) и SQL. Кое-что было сделано на PHP фрилансерами.

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

Калькулятор НМЦК

Поиск в реестре

Т.к. официальный сайт с закупками временами падал, а программа должна была работать постоянно, а также для более удобной работы с базой данных, было решено делать выгрузки из открытых данных, с гос. сервера на сервер нашей организации. Для этой цели была нанята команда фрилансеров, с которыми мы совещались по Skype - они написали на PHP скрипты для выгрузки данных в нашу базу, скрипт был поставлен на Cron для выполнения по расписанию.

К слову о сервере - на сервере стоял FreeBSD, MySQL, Apache HTTP Server и Apache Tomcat.

Калькулятор НМЦК

Панель администратора

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

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

В целом, работа над данным проектом принесла мне немало опыта. Со многими технологиями, используемыми в нем, до этого мне работать не приходилось - но, в резульате активного использования их в этом проекте, я значительно развил свои навыки разработки web-приложений, а также получил опыт совместной работы и взаимодействия с фрилансерами.