Форма - штука удобная

Форма - штука удобная

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

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

Чтобы хоть как-то разгрузить менеджеров службы сбыта и не оставлять клиента один на один с самим собой, мы и попробовали сей процесс автоматизировать. В сущности человек делает простую операцию суммирования некоторого количества чисел, так почему бы не переложить эту операцию на персональный компьютер, который для того и предназначен? Загвоздка заключалась лишь в том, как объяснить процессору, что конкретно следует сложить согласно пожеланиям клиента.

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

Раз уж речь зашла о компьютерной фирме, на ее примере и продолжим. Хотя, по правде сказать, подобная задача встречается и во многих других отраслях деятельности. Предположим, есть предприятие, торгующее некими своеобразными модулями, состоящими из трех основных узлов: материнской платы, центрального процессора и оперативной памяти. Каждое наименование может варьироваться по номенклатуре. Например, тот же процессор может устанавливаться из диапазона: 386-й, 486-й, Pentium или Pentium II. Клиент, за особые заслуги или за красивые глазки (из стратегических соображений), может получить определенную оптовую скидку, величина которой также варьируется в некотором диапазоне значений. Кроме того, политика предприятия предусматривает некоторое количество градаций срока предоставляемой гарантии, увеличение которого влияет на увеличении стоимости сформированного заказа. Потом, в зависимости от пожелания заказчика, предприятие может взять на себя труд доставить заказ клиенту за отдельную плату, размер которой заранее известен. Например, формируется как определенный процент от общей стоимости доставляемой покупки. Так вот, фирма наша большая, клиентов много и заказы считать долго. Или наоборот, контора маленькая, каждый боец - и чтец, и жнец, и на дуде игрец. Словом, время - деньги, их нужно экономить, а работу - автоматизировать.

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

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

Как я уже говорил, гипотетическая фирма продает изделия, состоящие из трех основных узлов. Это означает, что вновь созданная книга Microsoft Excel 97 должна содержать три отдельных листа, названные в соответствии с наименованием товарных групп. В моем случае - "МП", "ЦП" и "ОЗУ". На каждом из листов вводится перечень вариантов одной группы . Для наглядности рекомендую применять броские и легко понятные заголовки, так как уже с самого начала ясно, что разработанная форма будет использоваться не один день, и еще не известно - разберетесь ли вы в своих черновиках потом без комментариев. Данные лучше располагать в столбцах, так они удобнее для восприятия и последующей обработки. Как вы видите, каждая страница содержит наименование узла в одной ячейке, и его стоимость - в другой. Такой подход удобен еще и тем, что впоследствии, когда форма будет закончена, ею смогут пользоваться сразу две смежные службы. Службе сбыта станет куда легче получать точный результат общей стоимости заказа, даже если привередливый клиент станет просить обсчитать массу вариантов, меняя условия буквально по ходу разговора. В то же время, маркетинговая служба (или склад, у кого как) будет в состоянии легко обновлять номенклатуру и цены узлов, в зависимости от текущей ситуации, при этом не переделывая всю форму в целом.

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

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

Вставьте в книгу Microsoft Excel 97 еще один рабочий лист и назовите его "Форма". На этом листе, соответствующим образом подписанном, и будут располагаться все необходимые элементы. Чтобы оператор мог лучше ориентироваться в происходящем, в ячейках с А5 по А7 укажем наименование типа узлов. Какая там конкретно материнская плата будет стоять в следующей ячейке строки - не главное, важно, что какая-то будет. Надпись существует для того, чтобы любой зритель мог сразу понять, что SOLO345/G45-VH440A - это именно материнская плата, а не малопонятное хакерское ругательство.

На этой же странице располагаются поля, обозначающие величину скидки, срок гарантии и вид доставки заказа. В графе "Итого" (ячейка С10) должна находиться формула суммирования, складывающая значения ячеек диапазона С5:С7, что естественно и дополнительного пояснения не требует. С графой "К оплате" дела обстоят несколько сложнее. Общая стоимость заказа зависит не только от размера "Итого", но и от предоставленной скидки (графа "Скидка" - G10), срока гарантии (графа "Гарантия" - G11), и вида доставки (графа "Доставка" - G12). Причем общий результат определяется рядом арифметических действий. Так, например, срок гарантии может стоить в виде определенного процента от "Итого". Таким образом, в содержимое графы "К оплате" (ячейка С13) должна быть занесена формула =(C10-(C10*G10)*G11)*G12. Вообще-то, в данном случае всем описанным ячейкам удобнее было бы назначить персональные имена, но прямого отношения к результату это не имеет. Персонализация дает положительный результат лишь в случае большого количества значащих факторов и больших таблиц, где легко запутаться и даже не заметить этого. В моем примере важных ячеек раз-два и обчелся, так что их можно использовать и под обычными, буквенно-цифровыми именами.

Теперь, когда формулы на месте, настало время заняться элементами управления. Обычно панель инструментов, с помощью которой мы будем "рисовать" форму, на экране не появляется. Она не считается первостепенно важной. Чтобы ее активизировать, в меню "ВИД" следует выбрать команду "ПАНЕЛИ ИНСТРУМЕНТОВ", а в появившемся меню панелей - "ФОРМЫ". Результатом станет появление маленькой панели с инструментами для создания управляющих элементов .

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

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

Все, поле со списком готово. Остается лишь "настроить" его, то есть объяснить, откуда берутся данные для списка. Для этого следует выделить объект и нажать правую кнопку мыши. Появится контекстное меню, в котором последним будет расположен режим "Свойства". В свойствах выделенного объекта нас интересует прежде всего самая правая вкладка - "Элемент управления". Первое его поле ("Формировать список по диапазону") отвечает за точное указание источника данных для выпадающего списка. Работать с ним - одно удовольствие. Нажмите мышью по маленькой кнопке, расположенной в белом поле слева. Мастер исчезнет, оставив лишь только это поле, в котором будет автоматически прописывать адреса выделяемых вами ячеек. Это удобно для визуального контроля. Сейчас нужно выбрать диапазон ячеек, содержащих наименования материнских плат, раз уж первый список попал в эту строчку. Для этого "кликните" мышью по корешку листа "МП" и выделите ячейки с А2 по А6, содержащие названия. Когда закончите, опять кликните по кнопке в левой части окна мастера. Это все вернет назад, в смысле самого мастера функций, только в первом его окне будет приведен только что выделенный диапазон. Строка "Поместить результат в ячейку" отвечает за то, куда помещать результат выбора. Для случая с материнскими платами, такой ячейкой должна быть В5.

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

Все, с одним элементом практически закончено. Остается лишь указать на вкладке "Свойства", что этот список нельзя перемещать и нельзя изменять его размеры. Теперь поле со списком полностью закончено. Можно малость побаловаться с ним, выбирая те или иные значения, чтобы посмотреть, насколько правильно все работает. Если сбоев нет, то стоит повторить описанную процедуру со всеми графами нашей титульной формы. Имеются в виду поля: "Центральный процессор", "Оперативная память", "Скидка", "Гарантия" и "Доставка".

Остается самая малость - преобразовать номер значащей ячейки в ее непосредственное содержание. Для этого можно воспользоваться одной из стандартных функций Microsoft Excel 97. Она называется ИНДЕКС. Ее работа заключается в действии, обратном тому, что делает поле со списком. Индекс выбирает значение из массива по заданному номеру, например, конкретную ячейку столбца. Поэтому стоит активизировать ячейку С5 и запустить мастер формул. Это можно сделать через экранную кнопку "fx" на панели инструментов или через режим "ФУНКЦИЯ", меню "ВСТАВКА".

В обоих случаях появится мастер, с помощью которого и вставляются формулы. В группе "Ссылки и массивы", выберите функцию "Индекс", нажмите "Ок" и следуйте дальнейшим инструкциям. Инструкции будут простые. Вообще говоря, существует два вида этой функции, но нас интересует первый из них . В строке "Массив" указывается диапазон, из которого предстоит выбирать значение (для графы "Материнская плата" это МП!B2:B6), а в "Номер строки" - указать ту ячейку, в которую соответствующее поле со списком помещает результат своей работы (для графы "Материнская плата" это ячейка В5). Таким образом, функция ИНДЕКС берет указанный фрагмент столбца "В" страницы "МП" и выбирает из него значение ячейки, номер которой указан в В5 на странице "Форма". А результат помещается в ту ячейку, в которой находится сама функция ИНДЕКС (для графы "Материнская плата" это С5).

Теперь проделайте то же самое с остальными значащими ячейками. В результате получится практически законченная интерактивная форма. Остается лишь столбцы "B" и "F" сделать нулевой ширины, чтобы скрыть с глаз. На самом деле они никуда не денутся, только с экрана исчезнут. Имеет смысл в свойствах тех ячеек, где размещены формулы и наименования граф, также запретить изменения. Стоит помнить, что созданной формой будут пользоваться другие люди, которые могут ее испортить по ошибке. По этой же причине не помешает защитить паролем, а желательно еще и совсем скрыть все оставшиеся страницы, кроме заглавной.

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

Александр ЗапольскисE-mail: leshy@nestor.minsk.by - титульная страница


Компьютерная газета. Статья была опубликована в номере 25 за 1998 год в рубрике soft :: субд

©1997-2024 Компьютерная газета