скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыРеферат: АРМ бухгалтера-расчетчика

Поле-переменная улица - при входе выполняется функция yliz_s() (см. прилож. 1.2 стр.29), где вначале выключается клавиша CapLock, а затем проверяется условие, что записей в БД больше нуля и параметр равен 1 и если это выполняется то активируется POPUP-меню улиц, для выбора нужной (см. прилож. 1.2 стр. 29), или закрыть меню и вести улицу вручную.

Переменная or1 - имеет числовое значение и соответствует полю OR_R: 1 – если выбрана ([x], 0 – не выбрана ([ ]) и служит для выбора жильца плательщиком. Здесь также предусмотрена проверка при выходе. (см. прилож. 1.2 стр. 31 FUNC O_R()) в структуре DO CASE анализируется выбор кнопки, если она выбрана, то сначала объявляются переменные из полей-переменных с удалением из них пробелов, затем ведется поиск в базе жильцов с таким адресом и имеющих поле OR_R со значением 1. Если поиск удачный и это не текущая запись (например при изменении), то появляется окно-предупреждение с фамилией жильца, который уже определен плательщиком за эту квартиру. Переменной or1 присваивается значение 0 и GET-объект обновляется. Если при выборе кнопки (or1=1) поиск неудачный, то полю-переменной M.OR_R присваивается значение 1 и становятся доступными кнопки выбора услуг.

Переменная lg_ta – имеет логическое значение и соответствует полю LGOT: .F.- если не выбрана ([ ]), .T.- если выбрана [x]. Здесь при выходе, если кнопка выбрана, что проверяется в структуре DO CASE (см. прилож. 2 стр. 30 FUNC VIB_LG), то активируется окно с полями-переменными кода льготы (M.N_LG) и описанием (номером) документа (M.N_YD), при этом курсор попадает в поле с выбором кода, для которого предусмотрено проверка входа, то есть при входе в это поле выполняется функция LG1 (см. прилож 1.2 стр. 29), в которой определяется наличие данных в БД льгот и если они имеются определяется и активируется меню из полей БД льгот. Можно выбрать имеющиеся льготы или добавить новую. Если при выходе поле кода льготы будет иметь нулевое значение, то переменной lg_ta и M.LGOT присваивается значение .F., иначе становятся доступные для редактирования поля с периодом, ставками и описанием льготы, а также становятся доступными кнопки выбора услуг.

Переменные kw, gw, ks, ot, elc, tl, rd – все эти поля имеют логический тип и соответствуют полям базы выбора для начисления по услугам. Если это процедура изменения то они имеют значения этих полей, как описано выше, если дополнение то все имеют значение .F..При этом они доступны для редактирования, только в том случае, если жилец является (выбран) плательщиком или (и) льготником. При выходе выполняется процедура <имя переменной>_INS (см. прилож. 1.2 стр. 30-31), где полю-переменной присваивается значение переменной.

Период льготы, ставки и ее описание – данная группа полей выделена цветом в зависимости от того доступны, (M.LGOT=.T.) или не доступны (M.LGOT=.F.) для редактирования. Здесь контроль данных проверяется только в поле-переменной, по какую дату должна начисляться льгота (M.DAT_PO) то есть она должна быть больше даты начала даты начисления (см. прилож. 1.5 стр. 2), остальные поля – это поля БД льгот.

Следующей командой определяющие кнопки, которые имеют числовое значение, в зависимости их расположения, при описании. 1-“Сохранить\Подтверждаю”, 2-“Выход”, 3-“Удалить”. Обработка выбора этих кнопок осуществляется в процедуре ad_in() (см. прилож. 1.2 стр. 32-35). В первых строках выполняются действия по удалению возможных начальных пробелов (LTRIM()) в полях фамилии и адреса, далее определяется категория жильца и если это не квартиросъемщик, то удаляется не нужная информация (телефон и кв. метры), и наоборот. После этого определяется номер выбранной кнопки (pod) и номер параметра входа в это окно.

Кнопка “Сохранить”, параметр 1 (pod=1, red=1) – добавляется новая запись (APPEND BLANK) и все поля-переменные переносятся в эту запись (GATHER MEMVAR). Далее выполняются действия по заполнению поля с количеством жильцов. Ищется первая запись в БД с адресом нового жильца, в любом случае поиск будет удачным, но это может быть либо добавленная запись, либо другая. Если кроме новой записи больше не обнаружено, то полю количества жильцов (KOL_VO), присваивается значение 1, иначе значение найденной записи, и в этом случае сканируется записи с этим адресом, чтобы увеличить поле-количество на 1. Затем открывается БД, в которой хранятся информация о ставках по услугам для каждого жильца (TABLE_R) и в нее добавляется новая запись с копированием табельного номера новой записи из БД жильцов. Затем ищется в БД жильцов запись с одинаковым адресом и если такая найдена, то копируются в переменные значения полей из БД ставок (TABLE_R), которые затем копируются в поля БД ставок новой записи, иначе они имеют нулевые значения. После этого командой SCATTER MEMVAR BLANK создаются новые переменные полей, переменным для выбора услуг присваиваются значения .F. GET-поля обновляются и можно редактировать следующую новую запись.

Кнопка “Подтверждаю”, параметр 2 (pod=1, red=2) – первой командой переменные переносятся в БД. После этого проверяется изменялся ли адрес, с помощью переменных определенных ранее (см. выше yl_ins ,dom_ins, k_ins). Если адрес не изменился, то процедура заканчивается и возвращается в окно изменения, иначе устанавливается фильтр работы только с жильцами, имеющими текущий (измененный) адрес, и корректируется поле-количество. Затем аналогичная операция происходит с жильцами старого адреса.

Кнопка “Выход” – завершает работу процедуры, и выполняются команды следующие за командой READ, это закрытие окна, переиндексация данных и выход с процедуры.

Кнопка “Удалить” – доступна только в том случае, если это процедура изменения (см. прилож. 1.2 стр. 35) и будет рассмотрена ниже.

Теперь рассмотрим последнюю команду обновления GET-объектов – это команда-опция SHOW red(), входящая в команду READ. Она выполняется всегда если в какой-либо процедуре встретится выражение SHOW GETS, в данном случае в процедурах, вызываемых в окне Дополнения\Изменения данных, если встречается это выражение выполняется процедура red() (см. прилож. 1.5 стр.3). здесь в структуре DO CASE анализируются переменные и в зависимости от их значения выполняются следующие действия:

если параметр равен 1 (red=1), то кнопка описанная для сохранения новых данных будет иметь название “Сохранить”, а кнопка удалить будет не доступна

если параметр равен 2 (red=2), то кнопка “Сохранить” изменит свое название на “Потверждаю”.

Если переменная M.OR_R=0, то кнопки-переключатели выбора услуг будут недоступны. И наоборот M.OR_R=1, то доступны.

Если переменная M.LGOT=.F., то то кнопки-переключатели выбора услуг и поля редактирования по льготе будут недоступны. И наоборот.

“СЕРВИС”-“Дополнение льгот”

при выборе данного пункта запускается процедура INS_LG, которая расположена в файле ADD_DEL.PRG (см. прилож. 1.5 стр. 5) и показана на рис. 17 прилож. 2.

В первых строках выбирается БД, где содержится информация по льготам, затем определяется окно для работы процедуры и обращение к помощи. Открывается окно для редактирования льгот, в окне также используются не сами поля, а их переменные, созданные командой SCATTER MEMEVAR.

После ввода в поле “Код” номера, при его выходе выполняется процедура UNIC_LG (см. прилож. 1.2 стр. 36), в которой в БД льгот ищется код с веденным кодом и если найден то переменные обновляются информацией по этому коду, и доступны для изменения или удаления, если нет то остаются пустыми и готовы к заполнению.

Так как работа происходит с переменными, то для сохранения сделанных изменений или дополнения, нужно подтвердить, нажав на кнопку “Сохранить”.

Работа кнопок осуществляется в процедуре LG_INS, где в структуре DO CASE выполняются действия в зависимости от числового значения переменной LG_INS:

LG_INS=1. Из переменной M.INFO (Категория) удаляются возможные начальные пробелы, затем ищется код-переменная в БД льгот, если найден, то это изменение и поля переносятся в БД. Если не найден то дополнение и здесь сначала добавляется запись в БД, а затем в нее переносятся поля. Так как работа на этом не заканчивается, то создаются новые поля переменные и поля обновляются.

LG_INS=2. Команда CLEAR READ завершает работу с этим окном.

LG_INS=3. Запись помечается на удаление (DELETE) и физически удаляется (PACK), после этого создаются новые поля, поля обновляются и работа продолжается.

“СЕРВИС”-“Тарифы”

при выборе этого пункта выполняется процедура TARIFS_ZAR, расположенная в файле FUNC.PRG (см. прилож. 1.2 стрю 55) и показано окно на рис. 18 прилож. 2.

В первых строках командой HIDE POPUP убирается с экрана меню “СЕРВИС”, затем закрепляется за клавишей Esc процедура выхода по клавише Esc, в переменной _REC запоминается номер записи в БД жильцов. Выбирается активной БД тарифов и определяется окно для работы данной процедуры и горизонтальное меню, которое будет расположено в этом окне и с его помощью будут выполняться действия по обработке данных.

Данное меню имеет три PAD-пункта.:

PAD-пункт “Просмотр” – активируется POPUP-меню, которое состоит из полей БД тарифов, и выбор любого BAR-пункта выполняется в процедуре INS_REC, в которую передаются два параметра это названия тарифа (PROMPT()-mprompt), и номер записи в БД тарифов (RECNO()-mrecno) (см. прилож. 1.2 стр. 56), в которой в зависимости от параметра выполняются следующие действия:

если описание пустое (empty(mprompt)), то эта запись помечается на удаление.

Иначе создаются поля-переменные для изменения данной записи (рис. 22 прилож. 2) так как редактируются переменные, то в окне присутствуют кнопки для сохранения сделанных изменений кнопка-“Сохранить” (процедура del_rec1, ras_on1=1), где сначала, в зависимости от значения переменной M.K_CH (.T.,.F.) заполняется переменная M.INFO и затем переменные переносятся в БД; выхода без изменения кнопка “Отказ” (процедура del_rec1, ras_on1=2), где командой CLEAR READ завершается работа с переменными-полями без перенесения их в БД; и удаления текущей записи (процедура del_rec), текущая запись командой DELETE помечается на удаление.

PAD-пункт “Дополнить” и PAD-пункт “Выйти” - обрабатываются в процедуре INS_ST, в которую передаются параметры, содержащие текст-приглашение данных пунктов.

Если выбран пункт “Дополнить”, то в процедуре INS_ST создаются поля-переменные с пустыми значениями и с помощью кнопок дополняются записи.

Если выбран пункт “Выйти”, то в процедуре INS_ST закрывается окно и деактивируется меню.

“СЕРВИС”-“Нормы оплаты услуг”

Данный пункт открывает окно M_ZAR, где с помощью команд @…SAY…GET (см. прилож. 1.4 стр. 4) выводятся переменные ставок, определенные в начале программы в файле MENI.PRG и после их редактирования они сохраняются в файле M_ZAR.MEM. чтобы их сохранить необходимо выйти из окна по кнопке “Сохранить”, которая запустит процедуру сохранения (см. прилож. 1.2 стр. 20).

“СЕРВИС”-“Упаковка данных”

Выбор этого пункта запускает процедуру физического удаления данных, помеченных ранее на удаление (см. прилож. 1.2 стр. 22). В первых строках сканируются записи, помеченные на удаление в БД жильцов и помечаются записи во вспомогательной БД ставок, которая связана с основной БД по полю табельного номера (TAB). Затем снова сканируется БД жильцов с целью проверки недопущения наличия жильцов без плательщика. Здесь перебираются помеченные записи, и в переменные заносятся значения адреса для поиска, и фамилии для возможного предупреждения.

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

“Удалить всех” – будут помечены все записи по этому адресу.

“Изменить” – запустится процедура изменения, для найденного жильца.

“Восстановить” - восстановить плательщика, ранее помеченного на удаление, то есть снимет пометку командой RECALL.

“СЕРВИС”-“Переиндексация”

В этой команде я не пользовался командой REINDEX, а просто удалял все индексы и создавал новые. Это и проще и времени уходит меньше (см. прилож. 1.2 стр. 23). В первых строках закрываются все БД и вместе с ними структурные индексы, далее с помощью команды DOS удаляются все файлы, имеющие расширение .CDX то есть структурные индексы, потому что другие индексы в программе не используются, и затем выполняется процедура открытия баз данных (см. прилож. 1.3), где индексы создаются автоматически. Здесь нужно сказать, что при таком подходе FoxPro может выдать ошибку, и требование явно указать на БД, которую нужно открыть. Эта проблема решается с помощью функции ON ERROR DO EROR WITH ERROR(), которая передает код ошибки в процедуру EROR как параметр (см. прилож. 1.2 стр. 53), и в ней в зависимости от области открываются нужные базы данных.

Пункт меню – “КАДРЫ”

После того как в базе жильцов имеются записи, можно работать с процедурами, осуществляющих действия по их обработке. Эти процедуры в основном находятся в первом пункте меню “КАДРЫ”.

“КАДРЫ”-“Работа с картотекой”

При выборе данного пункта открывается окно, представленное как личная карточка жильца, в которой отображается необходимая информация и средства по ее обработке (см. прилож. 1.2 стр. 1-20).

Как уже описывалось в главе 2 с работой в этом окне, вся информация, расположенная в этом окне делится на две части, поэтому каждую часть разберем по отдельности. Но прежде рассмотрим заполнение окна информацией и другими объектами (см. прилож. 1.2 стр. 1-2 и прилож. 2 рис. 2 ).

Итак в первых строках выполняются некоторые технические действия, а именно это проверка наличия данных, которая описывалась выше, определение и присвоение переменным “e” и ”b” логических значений для анализа конца и начала БД, и в зависимости от этого доступность или недоступность кнопок перемещения, клавише F1 назначается процедура открытия соответствующего окна с помощью, клавише F5 процедура поиска. После этого активируется окно INS и в него выводится следующая информация: это поля БД, имеющие символьные и числовые данные с помощью команды GET с опцией, запрещающей редактирование. Это поля фамилии (FAM), табельного номера (TAB), телефона (TEL), адреса (YL,DOM,KW_RA), квадратных метров (KV_M), суммы начисленной квартплаты из БД, в которой хранятся все начисления, и доступные для редактирования GET-поля количества (KOL_VO), код и описание льготы из БД льгот, периода действия льготы (DAT_C,DAT_PO) и поля выбора услуг, имеющие логические значения, представленные с помощью переменных: kw (KW_L)-квартплата, gw (G_W_L)-горячая вода, xw (X_W_L)-холодная вода, ks (K_YS_L)-коммунальные услуги, ot (OTOP_L)-отопление, elc (EL_C_L)-електричество, tl (TEL_L)-телефон, rd (RAD_L)-радио, которые затем выводятся на экран с помощью GET-объектов (кнопки-переключатели). А также другие GET-объекты, которые будут рассмотренны позже.

Далее идут SAY-объекты, это подписи к GET-полям, а также результаты возвращаемые функциями, которые выводятся с помощью выполнения функции POS_CH1 (=POS_CH1( )) (см.прилож. 1.2 стр.3). разберем только выводимые значения, возвращаемые функциями.

Количество жильцов – выполняется функция KOL (прилож. 1.2 стр. 19), где путем сканирования формируется переменная k и возвращается ее значение (RETURN k), так как эта переменная числового типа, а команда SAY выводит только символьный тип данных, то необходимо преобразовать числовой тип в символьный и убрать первые пробелы, что позволяет следующие команды: LTRIM(STR(KOL(0))), где KOL(0) – полученное значение, STR – функция преобразования числовых данных в символьные, LTRIM – удаление ведущих пробелов.

Количество льготников – аналогичная функция, описанная выше только считает жильцов, если поле LGOT имеет значение истины (.Т.).

 Ставки по которым производится расчет для данного жильца. (см. прилож. 1.2 стр 16-17). Здесь сначала проверяется поле ставок БД ставок, так как связь одна ко многим то при перемещении курсора в основной базе он перемещается во всех вспомогательных базах и если поле в БД равно нулю, то параметру, который является результатом работы функции, присваивается значения нормативной ставки, иначе значения этого поля. Затем в команде SAY тип возвращаемого результата преобразуется в символьную форму и после вывода их на экран они накрываются невидимыми кнопками.

Числовые поля из БД начислений. Здесь эти данные просто преобразуются в нужный формат и выводятся на экран.

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.