Навигация по сайту

М. Горский "Мы пойдем своим путем..."

"Мы пойдем своим путем..."

Микаэл Горский,

Партнер компании МАГ КОНСАЛТИНГ

Статья опубликована в журнале "Компьютер Пресс", №7


 

О чем эта статья?

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

Компания "Эникей" - импортер компьютерных аксессуаров тайваньского и европейского производства. "Эникей" выступает и как поставщик партий аксессуаров на заказ, и как мелкооптовый склад для магазинов, ведущих розничную торговлю.

Технологическая цепочка работы компании выглядит следующим образом:
 

  • сбор заказов от покупателей, формирование собственного заказа для мелкооптовой торговли
  • консолидация заказа на поставку, передача заказа поставщику
  • изготовление заказанного товара на фабрике поставщика, выпуск контейнера с товарами от производителя
  • получение контейнера в Москве, таможенная очистка, разгрузка контейнера на склад
  • продажа со склада, выдача товара, оплаченного ранее.

Первый блин.

Создателям компании было очевидно, что им необходима программа, обеспечивающая печать счетов и накладных, учет товаров на складе. Решено было создавать свою, оригинальную систему. Анализ существовавших на тот момент систем не производился.

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

Развитие системы шло эволюционным путем. Через полгода непрерывного совершенствования программы созданная рабочая книга Excel уже включала в себя шесть таблиц - таблицы товаров, заказчиков, балансов заказчиков, формы накладной, счета/инвойса, прайс-листа. В процессе работы система использовала еще четыре рабочие книги, каждая из которых состояла из двух таблиц. Для организации пользовательского интерфейса была написана программа на Visual Basic, организующая запросы к пользователю для ввода данных. Объем рабочего файла составлял два мегабайта, не включая собственно данные.

Созданная система выполняла четыре основные функции:

  1. Учет товаров на складе и ожидаемых к поступлению.
  2. Печать счетов, накладных, прайс-листов, складских справок.
  3. Архивирование данных прошлых периодов, с одновременным удалением их из таблицы.
  4. Статистический анализ движения товаров.

В последней версии система учитывала следующие показатели:

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

Система позволяла вести продажи как товаров на складе, так и товаров из прибывающей партии.

Первый урок.

Опыт компании "Эникей" показал, что Excel как инструмент для создания корпоративных учетных систем обладает достоинствами:

  • простота пользования таблицей,
  • популярность,

и недостатками:

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

Второй блин.

Неудивительно, что в конце концов автор разработки Илья Ягодин принял решение полностью переписать систему, реализовав ее на этот раз в СУБД.

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

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

При разработке системы не нашли применения ни структуры данных Excel-версии, ни использовавшаяся в Excel-версии программа на Visual Basic. Все создавалось заново.

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

Получившаяся в результате система состоит из двадцати одной таблицы, большого числа форм и запросов и более 2000 строк кода. Суммарный объем программ и служебных данных Access составляет более трех мегабайт.

Работающая сегодня версия системы реализует следующие задачи:

  •  Учет товаров на складе.
  • Учет заказанных, оплаченных и ожидаемых товаров.
  • Учет истории заказчиков (оборот по сделкам, предпочтения по группам товаров), ведение баланса взаиморасчетов.
  • Печать счетов, накладных, рассылка их по факсу. Также печатаются приходные ордера, прайс-листы (5 видов), ценники.
  • Печать складских справок, выписок по товарам на складе и в пути.
  • Анализ движения товара.
  • Расчет оптимальной цены реализации для различных сегментов рынка.
  • Экспорт и импорт данных в другие Windows программы (Excel, Word).
  • Автоматическое формирование заказа на поставку, печать заказов на английском языке.

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

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

Второй урок.

При переносе системы в среду Access предполагалось решить три проблемы:

  1. Позволить одновременную работу многих пользователей.
  2. Существенно расширить набор выполняемых системой функций.
  3. Добиться высокой скорости работы системы.

Достижение этих задач можно оценить следующим образом:

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

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

Вначале система работала быстро. Скорость работы начала резко падать как только в системе появились новые функции, а записи о товарах и контрагентах пополнились новыми полями. Через полгода работы система была заново переписана с Access 2.0 на Access 7.0, при этом программа была оптимизирована и ставшие избыточными модули были удалены. Несмотря на предпринятые усилия, система отличается "задумчивостью" даже при выполнении несложных операций. Компьютеры, на которых система выполняется сегодня - это Pentium-133 с 32 мегабайтами памяти. По оценке пользователей системы, скорость работы сравнима со скоростью работы "старой" Excel-версии на 486dx4-100 компьютерах с 16 мегабайтами памяти.

Сегодня разработчик мечтает о том, чтобы переписать систему (ее клиентскую часть) на каком-либо из языков программирования (например, C++) и соединить ее с СУБД среднего класса.

НО: среди разговоров о выборе между C++ и Delphi 2.0 проскользнуло: "А нет ли готовой системы, удовлетворяющей нашим потребностям?".

То, что этот вопрос зазвучал в устах российского программиста, обнадеживает.

Третий урок (мнение консультанта).

Рассказанная история не оригинальна. Многие российские компании пользуются учетной (а зачастую и бухгалтерской) системой собственного изготовления.

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

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

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

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

 

1997