«Впереди планеты всей», и как мы докатились до этого. Или краткое описание автоматизации рабочего процесса

в 14:08, , рубрики: Delphi, Программирование, проектирование, Проектирование и рефакторинг, рефакторинг, метки: , , ,

image

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

Но для начала небольшое лирическое отступление. А вы чего хотели?

Работаю я в Обнинской/Калужской региональной редакции газеты «Из рук в руки», и должность моя — «сервис-менеджер». Но, по сути, я исполняю обязанности не только сервис-менеджера, но и быдлокодера Delphi и 1С (назвать себя программистом, пока что, язык не поворачивается). На эту работу я устроился примерно полгода назад, когда еще учился в техникуме. И так получилось, что я пришел туда в такой период, когда у руководства уже были идеи по улучшению рабочего процесса, но еще не было рук, которые бы этим занялись. Для начала мне дали задание написать конвертер для газетных объявлений, который бы менял их формат так, чтобы их можно было загружать на сайт, а то операторам не улыбается вручную парсить мегатонны строк в блокноте. Задание было успешно выполнено, после чего меня оформили, и выделили деньги для покупки Delphi XE2 Professional мне на новое рабочее место (да, у нас директор и сисадмин в одном лице, поэтому они быстро друг с другом договариваются, когда появляется необходимость закупить софт или хард). И когда я уже был в штате, мне доверили заняться инновацией — программой для составления объявлений. А тут начинается самое интересное…

Кому интересно, прошу под кат.

PS. присутствуют ссылки и картинки, но не для пиара/рекламы, а для более подробного описания.

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

Вот вам надоело это все читать, а операторы мучились с этим ежедневно, и представьте себе, как им это надоело. И когда я проникся проблемой, я приступил к созданию проекта. А начал я с самого главного — с логотипа, который вы могли видеть в начале поста. После этого я начал думать, а что же должна в себя включать программа? Ну во-первых она должна исключать поиски рубрик на сайте; во-вторых нужно было упростить работу со справочниками, так как на это уходит очень много времени; в-третьих программа должна быть рассчитана на пользователя, не обладающего глубокими знаниями ПК (на практике же мы имеем то, что наши клиенты не обладают вообще никакими навыками работы с ПК, что, порой, вызывает у меня дичайший баттхерт), и работа с ней должна сводиться к минимуму действий от пользователя.

Когда в голове начало откладываться представление о том, как это все будет выглядеть я приступил к быдлокодингу. Да-да! Именно быдло, потому, что мне нужно было показать результат, работающее приложение в короткие сроки, и у меня не было времени на составление какой-либо крутой ООП архитектуры. Я даже на комментирование не отвлекался (потом, правда пожалел об этом, когда начал пролистывать код и заново все комментить, чтобы потом не забыть, что за бред я тут написал). Так что представление о том, что будет в итоге рождалось во время разработки и тестирования.

Через некоторое время было готово рабочее приложение. Всего одна основная форма, куча ini-файлов с рубриками и справочниками, на которые она ссылалась. От пользователя требовалось только выбрать нужную ему рубрику, заполнить таблицы (справочники автоматически подгружались к каждому полю), выбрать фотографии, и нажать кнопку «Сохранить», а программа уже сама формировала файлы, необходимые для загрузки на сайт: csv-файл с объявлениями, zip-архив с фотографиями и последний, но не по значимости, пустой файл end.txt.

Но это все было давным-давно, где-то в далекой галактике. Сейчас же, после злостного ООП-рефакторинга, код программы выглядит более аппетитным, и при открытии не вызывает желание сразу же выключить IDE. Сейчас и интерфейс выглядит приятней, добавлено много всяких печенек. И самое главное, что мне пришлось перезатачивать программу под работу с XML-Документами. Так что сейчас на выходе, вместо непонятного csv-файла, который никто из клиентов открыть не может, мы имеем полноценный UTF-8 xml-документ (как гордо это звучит). Ох, сколько же у меня было геморроя с этой перестройкой…

image

image

Сейчас программа, кроме исполняемого файла, состоит из самодельной базы данных на основе ini-файлов и excel-документов. Данные, разумеется, обрабатываются в запущенной на компьютере копии исполняемого файла. Это сделано так, потому что у нас в офисе программа должна была запускаться сразу с нескольких компьютеров, а платить за СУБД не хочется. Поэтому ВСЕ файлы находятся на сервере, а пользователи пользуются только ярлычком к exe'шнику.

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

И так, почему «Впереди планеты всей»? Да, всё просто. Когда я устроился на эту работу, я сразу понял, что тут сотрудники работают по принципу: «мы в ответе за ваши продажи». Что из этого вытекает? А то, что наше руководство постоянно пытается улучшить сервис, улучшить качество работы персонала (последние достигается покупкой нового софта, нового железа). А когда я пришел, я начал заниматься улучшением скорости и удобства работы сотрудников — пишу ПО (простенькое, но полезное), и занимаюсь сопровождением 1С ЦРМ. Да, мы используем 1С, которая переписывалась и дополнялась московскими программистами. Но так как мы «впереди планеты», мы переделываем ее под себя, чтобы нам было удобно. Мы постоянно пишем запросы московским и минским разработчикам, чтобы добиться от них улучшений сайтов медиа-холдинга и других сервисов. И мне это нравится.

PS. Если статью читают наши (не обязательно нашего отделения, а вообще irr) рекламодатели, то можете написать мне, я вышлю программу (она бесплатная), и опишу работу с ней. Ну или если вам просто делать нечего, то тоже можете написать ;)

PPS. Если кому-то интересно, то могу описать внутреннюю структуру приложения. Там есть парочка интересных моментов с формированием xml-документа, например, или с динамическим формированием объектов…

Автор: teano

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js