курсовые,контрольные,дипломы,рефераты
Министерство образования Украины запорожский государственный технический университет |
||
Зав. кафедрой | ||
Автоматизированное рабочее место оператора автоматизированного переговорного пункта и информационной системы |
||
Пояснительная записка к дипломному проекту |
||
Разработал ст. гр. РП-411 |
Коновалов И.А. |
|
Руководитель | Онищенко В.Ф. | |
КОНСУЛЬТАНТЫ: | ||
по экономике | Остапенко В.В. | |
по охране труда и экологии | Ярош А.Г. | |
Нормоконтролер | Башмакова Л.И. | |
1996г. |
запорожский государственный технический университет
Факультет радиоприборостроительный Кафедра конструирования и производства радиоаппаратуры Специальность ПРОГРАММНОЕ обеспечение вычислительной техники и сапр |
||
УТВЕРЖДАЮ: |
||
Зав. кафедрой | ||
«___»_________________1996г. | ||
ЗАДАНИЕ НА ДИПЛОМНЫЙ ПРОЕКТ СТУДЕНТУ |
||
Коновалову Илье Анатольевичу |
||
1. Тема проекта: Автоматизированное рабочее место оператора автоматизированного переговорного пункта и информационной системы, утверждена приказом по институту от «___»___________1996г. №___________ 2. Срок сдачи студентом законченного проекта ______________________________ 3. Входные данные к проекту: Техническое задание на автоматизированную программно аппаратную систему расчета за услуги ЭЛЕКТРОСВЯЗИ (АПАС РУЭС) 4. Содержание расчетно пояснительной записки: титульный лист; задание; аннотация; содержание; основной текст; список использованных источников; приложение. 5. Перечень графического материала: Лист 1: общая структура соединения АРМ АПП и ИС в составе АПП ГОЭС. Лист 2: схема межзадачного обмена. Лист 3: протоколы обмена по каналам связи. Лист 4: архитектура АПП-РК. Лист 5: структура программы-контроллера АПП-РК. |
6. Консультанты по проекту с указанием разделов проекта, которые их касаются. | |||
Раздел | Консультант | Подпись, дата. | |
Задание выдал | Задание принял | ||
5. | Остапенко В.В. | ||
6. | Ярош А.Г. | ||
7. Дата выдачи задания | |||
Руководитель |
|||
Задание принял для выполнения |
Календарный план.
Пор. № | Название этапов дипломного проекта | Срок выполнения этапов проекта | Примечание |
1 | Получение технического задания | 01.12.95 | |
2 | Разработка основных решений по дипломному проекту | 01.01.96 - 31.01.96 | |
3 | Разработка документации | 01.02.96 - 29.02.96 | |
4 | Разработка программной реализации | 01.03.96 - 31.03.96 | |
5 | Отладка программ | 10.3.96 - 31.3.96 | |
6 | Тестирование | 01.04.96 - 10.4.96 | |
7 | Испытание подсистемы | 11.04.96 - 30.04.96 | |
8 | Испытание в системе АПП ГОЭС | 20.04.96 - 30.04.96 | |
9 | Внедрение | 01.05.96 - 31.05.96 | |
Студент - дипломник |
||
Руководитель проекта |
РЕФЕРАТ
Текст ПЗ
АВТОМАТИЧЕСКИЕ КАБИНЫ, РУЧНЫЕ КАБИНЫ, АВТОМАТИЗИРОВАННЫЙ ПЕРЕГОВОРНЫЙ ПУНКТ, АВТОМАТИЗИРОВАННОЕ РАБОЧЕЕ МЕСТО АВТОМАТИЧЕСКОГО ПЕРЕГОВОРНОГО ПУНКТА И ИНФОРМАЦИОННОЙ СИСТЕМЫ, формы оформления ручных заказов.
Междугородная телефонная связь - один из наиболее оперативных видов связи. Она имеет важное значение для руководства деятельностью предприятий, учреждений со стороны государственных, общественных и хозяйственных организаций.
Междугородная телефонная связь должна работать четко, бесперебойно. Работники междугородной телефонной связи на основе сознательного, рыночного отношения 'к труду и строгой производственной дисциплины должны культурно и внимательно обслуживать государственные учреждения и предприятия, общественные организации и население Украины.
Автоматизированные системы управления городскими отделениями связи являются непременной атрибутикой современных переговорных пунктов общего пользования. АПП ГОЭС представляет новое поколение АСУ этого класса из семейства выпускаемой нами продукции, хорошо зарекомендовавшей себя более чем в трехстах городах СНГ, Балтии и за рубежом.
В АПП ГОЭС реализованы последние достижения в этой области. АПП ГОЭС является комплексным изделием, сконцентрировавшим в себе весь спектр услуг предоставляемый сегодня на ГОЭС.
Существующий на сегодняшний день уровень автоматизации достаточен для выполнения основных функций предоставления услуг электросвязи населению области, однако информация, обрабатываемая отделом автоматизированных систем управления (АСУ) не обеспечивает получения прибыли за предоставленные услуги в полном объеме. Существующая система предоставления услуг электросвязи населению области приводит к прямым потерям средств при существующей системе платежей. Действующая система расчетов за услуги междугородной электросвязи имеет существенные недостатки, основными из которых являются:
длительное время оповещения абонента о размерах и сроках оплаты за услуги;
наличие серьезных организационно технических проблем контроля неплатежей и выполнения санкций за неуплату (отключение телефона);
большой объем ручного труда (несмотря на использование ЭВМ), снижающего уровень оперативности подготовки данных и приводящего ошибки в систему расчетов за услуги.
СОДЕРЖАНИЕ
ЗАДАНИЕ НЕ ПРОЕКТ 2
РЕФЕРАТ 3
введение 6
ЗАКЛЮЧЕНИЕ 91
Список использованных источников 92
Приложение 1: Спецификация компонентов системы 94
Приложение 2: Текст программы АРМ АПП АК 95
Приложение 3: Текст программы монитора АПП-РК 102
Приложение 4: Текст программы АРМ АПП РК 111
Приложение 5: Текст программы стартера монитора 126
введение
В процессе проведенных исследований коллективом программистов СП “ПРОНАН ltd” и субподрядными организациями: Центром информационных технологий Комитета по науке и технологиям Украины и частным предприятием “ГЕО” (г. Москва) была разработана концепция безбумажной технологии обработки информации по расчетам за услуги электросвязи. Разработаны организационные мероприятия по изменению системы платежей на базе организации высокоавтоматизированных городских отделений электросвязи и районных узлов электросвязи.
В процессе выполнения работы проведено обследование основных подразделений Запорожского центра технической эксплуатации междугородных телеграфно телефонных связей (ЦТЭ МТТС), непосредственно связанных с предоставлением услуг электросвязи населению и предприятиям области. Структура ЦТЭ МТТС приведена на рис. 1.
Структура ЦТЭ МТТС.
рис. 1
На основании разработанной и одобренной техническим советом заказчика концепции разработаны основные предварительные технические предложения, позволяющие:
провести реорганизацию существующих переговорных пунктов в высокоавтоматизированные отделения электросвязи городов и районов области с сокращением затрат и расширение сферы услуг электросвязи;
разработать схемы построения сети вычислительных средств на базе микрокомпьютеров;
разработать систему обработки информации и схему автоматизации производственного и управленческого персонала, обеспечивающую достаточный уровень качества предоставления услуг электросвязи не имеющий в настоящее время аналогов в Украине;
разработать и одобрить техническим советом заказчика безбумажную технологию расчетов с населением областного центра за услуги электросвязи.
Предыдущие попытки разработчиков СП “ПРОНАН ltd” автоматизировать работу городских отделений электросвязи (ГОЭС) прошли успешно. Одно из наиболее используемых средств малой автоматизации АПП-РК (автоматизированный переговорный пункт с ручной коммутацией).
Автоматизированные системы контроля и управления ведением междугородных телефонных разговоров являются непременной атрибутикой современных переговорных пунктов общего пользования. АПП-РК представляет новое поколение устройств этого класса из семейства выпускаемых нами изделий: АПП-80, АПП-16, АПП-16/32, хорошо зарекомендовавших себя более чем в трехстах городах СНГ, Балтии и за рубежом.
В АПП-РК реализованы последние достижения в этой области - интеллектуальная система управления, электронные коммутаторы каналов, компьютерные каналы связи. АПП-РК является комплексным изделием, сконцентрировавшим в себе весь спектр оборудования, используемого сегодня на переговорных пунктах для предоставления услуг по ведению междугородных и международных переговоров. Являясь законченным автономным изделием, АПП-РК в то же время имеет канал связи с автоматизированными системами более высокого уровня, что позволяет встраивать его в качестве низового звена систем АСУ.
Отделения электросвязи оснащены двумя типами кабин: ручными и автоматическими. Кабины подключены к АПП-РК. Являясь законченным автономным изделием, АПП-РК в то же время имеет канал связи с автоматизированными системами более высокого уровня, что позволяет встраивать его в качестве низового звена систем АСУ.
Для работы с автоматическими кабинами на ГОЭС используются АПП-РК как законченное изделие. АПП-РК представляет собой микропроцессорное устройство на базе МПУ-80. МПУ-80 полностью совместима со стандартной CP\M машиной.
Основные функции при автоматической связи: подключение/отключение кабин с пульта оператора; фиксация начала разговора, его продолжительности, а также кода зоны, набираемого абонентом; регистрация денежного задатка абонента, тарификация времени разговора и вычисление остатка от задатка по окончании разговора; заблаговременное уведомление клиента об окончании оплаченного времени кратковременной подачей звукового сигнала; уведомление клиента об ошибочно набранном им коде города подачей непрерывного звукового сигнала; автоматическое отключение абонента при исчерпании задатка; печать извещения по окончании каждого разговора, печать дневника работы оператора.
Основные функции при ручной коммутации абонентов: включение/отключение кабин с пульта оператора; регистрация входящего вызывного сигнала по конкретной кабине с дублированием его для оператора; захват и удержание линии вызывающего абонента с выдачей в его адрес тонального сигнала; контроль качества связи оператором в любой из выбранных кабин.
Дополнительные функции: индикация на передней панели состояния кабин переговорного пункта; подсчет в течение смены количества принятых от клиентов денег; формирование сводной таблицы доходов по всем кабинам и принятым телеграммам; выдача статистической информации по кабинам; тарификация телеграмм (АПП как кассовый аппарат) и выдача квитанций на печатающее устройство; оперативная смена текущих тарифов с пульта АПП.
В состав АПП-РК входит: блок управления; принтер "Электроника МС6313"; телефонная трубка.
Основные технические данные АПП-РК.
Тип обслуживаемого оконечного устройства телефонный аппарат или МТА.
Максимальное количество обслуживаемых телефонных каналов 32.
Питание 220В +/- 10%, 50Гц.
Потребляемая мощность, не более 40 Вт.
Вес блока управления, не более 12 кг.
С помощью клавиатуры оператор управляет работой АПП, а также может запрашивать выполнение сервисных функций. Вся информация, необходимая для работы оператора и обслуживания клиентов, выводится на принтер. Блок управления, содержащий в своем составе управляющую микро-ЭВМ (МПУ-80М) и платы коммутаторов телефонных каналов (АК-8, РК-4), обеспечивает контроль, управление и формирование результатов по предоставляемым разговорам. К нему же подключаются устройства ввода/вывода (клавиатура, принтер), а также индикаторные панели (АК и РК) и обслуживаемые оконечные устройства (телефонные аппараты, МТА). При помощи телефонной панели оператор может проверить качество связи в кабинах с ручной коммутацией абонентов.
Блок управления состоит из:
управляющей микро-ЭВМ МПУ-80М,
клавишной панели,
плат коммутаторов (до четырех штук),
индикаторных панелей (по одной на каждую плату коммутатора),
телефонной панели,
блока питания,
кросс-платы.
Общее количество плат коммутаторов не может превышать четырех. Конкретное количество плат АК и РК определяется заказчиком системы исходя из потребностей переговорного пункта.
Конструктивно блок управления выполнен в металлическом корпусе со встроенной кассетой для установки модулей МПУ-80М и коммутаторов. Внутри блока АПП-РК располагается блок питания, выходные напряжения которого поступают на кросс-плату и далее на устанавливаемые на нее модули. Модули блока управления могут располагаться в блоке в произвольном порядке. К кросс-плате подключаются также индикаторные панели и клавиатура.
Ниже кратко перечислены основные функции модулей блока управления.
МПУ-80М - представляет собой управляющую микро-ЭВМ; управляет системой в целом в соответствии с записанной программой.
Технические данные МПУ-80М.
Тип микропроцессора КР580ВМ80А
Тактовая частота 2,15мГц
Объем ОЗУ на плате 4 Кбайт
Максимально адресуемый объем ППЗУ (64+4) Кбайт
Объем ППЗУ на плате до 32 Кбайт
Максимально адресуемый объем ОЗУ (64+32) Кбайт
Интерфейс последовательного ввода-вывода СТЫК С2 или ИРПС
Скорость передачи информации по интерфейсу СТЫК С2 и ИРПС 75, 150, 300, 600, 1200, 2400, 4800, 9600 бит/с
Интерфейс параллельного ввода-вывода 48 линий ввода-вывода.
Система прерываний приоритетная восьмиуровневая
Системная магистраль интерфейс И-41
Резидентное математическое обеспечение программа - монитор
Основные функции: управление модулями АК-8, РК-4; сбор информации о состоянии телефонных каналов, подключенных к этим модулям; организация интерфейса с оператором (отработка команд, вводимых с клавишной панели; ввод новых тарифов и т. д.); организация интерфейса с принтером (печать команд оператора, результатов их выполнения и различной другой информации).
АК-8 - модуль коммутаторов телефонных каналов для автоматической междугородней связи. Предназначен для сбора информации о состоянии подключенных к нему телефонных линий (наличие переполюсовки, положение трубки) а также для коммутации этих линий с телефонными аппаратами.
РК-4 - модуль коммутаторов телефонных каналов для ручной междугородней связи. Основные функции: коммутация телефонных линий и сбор информации об их состоянии. Возможно также подключение оператора для контроля качества связи, а также захват и удержание линии вызывающего абонента.
КЛАВИШНАЯ ПАНЕЛЬ - предназначена для ввода информации в АПП (команды оператора, ввод тарифов и т. д.).
ТЕЛЕФОННАЯ ПАНЕЛЬ - представляет собой телефонный номеронабиратель с памятью на 22 номера.
ПАНЕЛЬ П8 - предназначена для индикации занятости кабин, подключенных к модулям АК-8, а также положения телефонной трубки в этих кабинах.
ПАНЕЛЬ П4 - предназначена для индикации занятости кабин, подключенных к модулям РК-4, наличия в линии тонального сигнала вызова, а также управления модулем РК-4 (захват и удержание линии вызывающего абонента, подключения оператора к линии для контроля качества связи).
БЛОК ПИТАНИЯ - преобразует входное напряжение сети 220V в набор постоянных напряжений: +5V, +12V, -12V, обеспечивая тем самым электропитание всей системы.
КРОСС-ПЛАТА - является связующим звеном между всеми вышеперечисленными модулями. Кроме того, содержит генератор тональных сигналов, используемых модулями АК-8 и РК-4.
Взаимодействие блока управления с внешними устройствами
С целью создания удобства в эксплуатации весь обмен информацией между блоком управления и внешними устройствами осуществлен посредством стандартных интерфейсов:
блок управления и принтер - "Centronics" (ИРПР-М);
блок управления и АСУ - C2 или ИРПС;
блок управления и АТС - через двухпроводную линию;
блок управления и оконечные устройства - через двухпроводную линию.
Программное обеспечение АПП-РК располагается в ППЗУ микро-ЭВМ МПУ-80М. Его можно условно разделить на две части:
управляющее;
диагностическое.
Управляющее программное обеспечение выполняет функции управления, контроля и сервиса переговорного пункта в целом. Диагностическое программное обеспечение предназначено для проведения профилактических работ на переговорном пункте, а также при поиске и устранении неисправностей в период эксплуатации.
Программное обеспечение адаптируется поставщиком АПП под АТС заказчика. По желанию заказчика оно может быть дополнено функциями и возможностями, не входящими в вышеперечисленный стандартный набор.
Управление автоматическими кабинами производится с помощью блока АПП-РК (автоматически переговорный пункт с ручной коммутацией) с подключенным к нему принтером. При внесении клиентом задатка оператор включает кабину, указывая размер задатка. После окончания разговора клиент обращается к оператору, который отключает кабину. После отключения кабины принтер отпечатывает размер остатка, количество разговоров и их длительность, сумму по разговорам. Остаток возвращается клиенту.
Вся отчетность по работе автоматических кабин осуществляется на основании распечатки работы автоматических кабин, выдаваемой принтером.
При оформлении ручного заказа заполняется документ МТФ 4, являющийся документом строгой отчетности. Документы поступают на отделение электросвязи в виде пачек по 100 экземпляров в каждой. Каждый документ имеет свой уникальный номер.
При заполнении формы МТФ 4 указывается вызываемый населенный пункт, телефон вызываемого, список услуг (справка, пригласить к телефону и т.д.), время приема заказа, номер оператора, принявшего заказ, количество заказываемых минут.
После заполнения указанных выше сведений заказ передается на станцию. При этом в форме указывается время передачи заказа и номер оператора станции, принявшего заказ.
При соединении в форму заносится время выполнения заказа, номер оператора, выполнившего заказ.
По окончании разговора оператор станции передает оператору отделения электросвязи количество минут разговора и свой номер. Остаток суммы задатка возвращается клиенту.
В случае несостоявшегося разговора в форме МТФ 4 делается отметка о причине снятия заказа и номер оператора, снявшего заказ, при этом деньги возвращаются клиенту.
По отработанным формам МТФ 4 ведется статистика о состоявшихся и несостоявшихся разговорах по различным регионам: области, Украине и СНГ отдельно.
В последнее время отделения связи оснащены кассовыми аппаратами класса “Онега”. Данный кассовый аппарат позволяет печатать квитанцию с указанием текущей даты, номера отделения связи и суммы произведенной оплаты, а также снимать показания по суммам, оформленных с момента последнего снятия этих показаний.
Кассовый аппарат позволяет выделить на каждый вид оплаты отдельный уникальный номер (от 1 до 9) и вести оформление квитанций по отдельным видам оплат с суммированием этих сумм отдельно по каждому виду. При снятии информации в конце смены распечатываются суммы по отдельным видам оплат, а также общая сводка по всем принятым суммам. Кассовый аппарат позволяет получать сводку по оплате для отдельного вида оплаты с указанием в построчном виде всех принятых сумм. В случае оформления возврата денег клиенту по каким либо причинам, данная сумма вводится со знаком “-”, в сводках отображается с соответствующим знаком и к общей сумме не прибавляется, а вычитается.
Снятые показания с кассового аппарата служат для отчетности по отделению связи. Сводки по приему оплат по квитанциям за услуги, предоставленные в кредит снимаются в конце каждой смены и сшиваются вместе с корешками квитанций для отчетности с МГТС. В конце смены оператором производится также сверка корешков квитанций со сводкой на предмет правильности взымания платы. Сводка по приему телеграмм также распечатывается в конце смены и сшивается с заполненными бланками телеграмм с предварительной сверкой сумм по сводке. Аналогичная операция производится при работе с автоматическими и ручными кабинами.
АПП ГОЭС представляет собой аппаратно-программный комплекс, который включает в себя технические и программные средства, позволяющие автоматизировать ряд действий персонала городского отделения электросвязи или районного узла связи.
После исследования объектов проектирования, можно прийти к выводу, что наиболее удобной для использования на ГОЭС (РУЭС) является следующая структура системы.
На каждом ГОЭС ставится центральный компьютер, к которому подключается необходимый для данного ГОЭС набор технических средств: АПП, телеграфный адаптер, информационная система и т.д. На каждом отделении электросвязи будет иметься своя БД, включающая в себя все необходимые для работы ГОЭС справочники и НСИ. В этом случае будет иметь место избыточность информации, т.к. на каждом отделении электросвязи будет дублироваться БД массива квитанций населения города, картотеки квартирных улиц, тарифов и т.п. Но при этом достигается независимость функционирования ГОЭС от других ГОЭС, в связи с чем появляется возможность использования АПП ГОЭС (РУЭС) в виде независимой локальной системы, с возможностью связывания с другими машинами путем обмена информацией в специфичном виде через машинные носители, как то дискеты, переносной винчестер.
Для разрабатываемой системы выдвигается требование о том, что эксплуатация программно технического комплекса в части решения прикладных задач не должна предъявлять особых требований к квалификации пользователей и быть ориентированной на конечного пользователя независимо от того, является он руководителем или исполнителем (оператором).
Выполнение функций комплекса программ системы должно быть реализовано с применением современных средств организации взаимодействия с пользователем, включая:
привычные для операторов названия объектов и действий;
выбор операций посредством меню и функциональной клавиатуры;
выбор объектов и действий из выводимых на экран их перечней;
вывод поясняющих сообщений на любом этапе работы;
технологически близкий к естественному переход от одной операции к другой при решении задач.
Так как на каждом ГОЭС будет формироваться своя техническая база, но с использованием одной и той же системы, то мы может иметь возможность оперативно изменять состав технических средств без изменения программной части и с минимальными затратами на модификацию старой технической базы, т.к. в основе каждого ГОЭС будет стоять минимальный набор технических средств, как показано ниже, а дальнейшее его изменение будет происходить простым подключением дополнительных технических средств без изменения базовых.
АПП-РК хорошо зарекомендовал себя как устойчиво работающее оконечное устройство и это есть достаточное обоснование выбора его для использования как контроллера автоматических и ручных кабин. В АПП ГОЭС АПП-РК используется в качестве низового узла АСУ.
Информационная станция представляет собой специализированный интеллектуальный терминал, который подключен по каналу ИРПС к локальному серверу АПП ГОЭС. ИС собрана на базе ПК “ПРИОР-001” является серийно выпускаемым изделием СП “ПРОНАН ltd”. ПК “ПРИОР-001” представляет собой 8-разрядную одноплатную микро-ЭВМ и является аналогом широко распространенного компьютера “Spectrum 48+” фирмы “Sinclair”.
Компьютер “ПРИОР®-001” выполнен на современной элементной базе - интегральных микросхемах малой и средней степени интеграции. Архитектура компьютера базируется на высокопроизводительном микропроцессоре Z80A фирмы SGS-THOMPSON.
Упрощенная блок - схема информационной станции представлена на рис. 2.1
Схема информационной станции
рис. 2.1
С целью облегчения разработки программного обеспечения был использован единый подход, что привело к универсальности разработанного системного и прикладного ПО при использовании его в двух различных системах.
Программное обеспечение АРМ АПП и АРМ ИС подразделяется на две части.
Системное ПО, которое обеспечивает работу всего комплекса с соблюдением следующих условий:
функционирование операционной системы в многопользовательском режиме с минимальными затратами ресурсов последней;
работа в реальном или псевдореальном масштабе времени;
обеспечение возможности работы в локальной и глобальной сетях с использованием как выделенных, так и коммутируемых каналов связи;
использование средств формирования базы данных, обладающей минимальным временем доступа к данным и обеспечивающим сохранность и их целостность;
наличие эффективного языка программирования и хорошие инструментальные средства для разработки прикладного программного обеспечения;
возможность переносимости на различные технические платформы.
Прикладное программное обеспечение удовлетворят следующим требованиям:
имеет дружественный интерфейс с непрофессиональным пользователем;
обеспечивает адаптацию системы к изменяющимся условиям эксплуатации;
имеет возможность быстрого расширения и изменения круга реализуемых функций;
максимально удобно реализует связь всех функций с централизованной базой данных;
обеспечивает санкционированный доступ к информации базы данных;
ведет подробный протокол работы пользователей системы и оборудования;
позволяет оперативно и централизованно перераспределять ресурсы системы администратору базы данных;
обеспечивает преемственность работы на технических средствах различной конфигурации.
Инструментальным средством, удовлетворяющим вышеприведенным требованиям и обеспечивающим хорошее соотношение стоимость/производительность, является ОС ДТ-МАКС (DT-MAX) версии 6.0, которая и применены в данном комплексе.
Разрабатываемое автоматизированное рабочее место оператора автоматических кабин и информационной системы предназначено для работы на городских отделения электросвязи (ГОЭС) в составе автоматизированной системы управления АПП ГОЭС. АРМ АПП реализованы по принципу оконного интерфейса с использованием библиотеки ДТМ-ПРО (“DTM PRO”).
Реализованная в АРМ АПП концепция работы обеспечивает наиболее благоприятные условия по предоставлению услуг телефонной связи, а также сводит к минимуму затраты на его установку и эксплуатацию.
Пользовательский интерфейс разработанной системы построен таким образом, что оператор, работающий в системе, не встречает каких либо специфических особенностей при работе с любой задачей, независимо от того к какой подсистеме эта задача относится.
Функционально выделенная задача оформляется в виде отдельной программы, которая при запуске, оперируя с общесистемными переменными и специфическими (специальными) данными данной системы, решает поставленную задачу и возвращается в точку вызова этой программы.
При написании всех программ широко используется интегрированная среда разработчика, включающая в себя пакет "UniForm".
Данный пакет состоит из процедур и функций, позволяющих легко оперировать списками при их выводе на экран, организовывать специальные окна для вывода информации различного рода на экран. Кроме этого, пакет содержит редактор форм, позволяющий легко представить вид выводимой на экран информации, как статического вида, так и информации, изменяемой в процессе работы. Это позволяет организовывать различного вида строки поля, в позиции которых производится ввод и вывод изменяющейся информации. Каждой такой строке, кроме позиции, задается уникальное имя, порядковый номер, определяющий последовательность в котором будет производиться перемещение по строкам в процессе работы с данной формой вывода. Кроме этого, для каждого поля вывода задается функция контроля ввода символов, позволяющая задать набор допустимых символов для ввода. Данный пакет обладает широким набором типов используемых символов. Так, например, если указан тип поля "русские большие буквы", то независимо от того, в каком режиме ввода находится клавиатура, вводимые символы будут преобразовываться в заглавные русские буквы. Данный пакет позволят устанавливать активные и пассивные цвета для каждого поля, а также имена процедур, которые будут вызываться до и после обращения к данному полю вывода.
Кроме описанных выше характеристик, данный пакет обладает рядом возможностей, на которых мы не будем заострять внимание.
Программное обеспечение АРМ АПП и ИС:
системное ПО;
прикладное ПО.
Системное ПО представляет собой операционную систему ДТМ (DTM) версии 6.0, которая обеспечивает функционирование разработанного прикладного ПО, и на языке которой данное прикладное ПО реализовано.
При разработке прикладного ПО использованы следующие инструментальные средства:
редактор проектов;
редактор форм;
пакет программ “DTM PRO”, реализующий средства организации экранного интерфейса с пользователем.
Прикладное ПО представляет собой набор отдельных программных модулей, реализующих все функции АРМ АПП и ИС. Для объединения этих модулей в единый программный комплекс (проект) используется редактор проектов, который представляет собой средство для построения иерархических меню, в каждом конечном пункте которых может вызываться определенный программный модуль. Вся система меню построена таким образом, что задачи, назначение которых позволяет объединить их в группы, находятся в одном меню. Применение такого подхода позволяет строить интуитивно и логически понятное дерево меню. Редактор проектов также позволяет использовать “быстрые клавиши” для вызова любого программного модуля (пункта меню) из любого меню проекта, чем повышается удобство пользования системой, особенно при больших уровнях вложенности меню.
Редактор форм позволяет создавать разнообразные экранные формы, содержащие поля ввода и вывода информации различного типа, выполнять различные операции над формами (вывод экрана формы, вывод значений полей формы, опрос полей формы).
Пакет “DTM PRO” позволяет организовывать современный и удобный экранный интерфейс с пользователем, используя унифицированные средства построения различных списков, меню, диалогов. Используя большое разнообразие входных параметров функций данного пакета (размеры, цвета и т.п.), программист-разработчик может легко строить необходимый диалог с пользователем.
Для отслеживания набора номера одновременно в 32 работающих каналах и обслуживания периферийных устройств в АПП-РК реализован псевдо-многозадачный режим базирующийся на теории автоматов. Это позволило полностью использовать ресурсы микропроцессора. Обработчик прерываний от внешних устройств выставляет флаги различных событий, а автоматы их анализируют.
В АПП-РК реализованы два одновременно работающих автомата. Первый автомат реагирует на события связанные с изменениями состояний на линии автоматического канала (поднятие, укладка трубки; набор номера; датчики начала разговора). Второй автомат предназначен для формирования информации для последующей передачи ее в канал связи с локальным сервером АПП ГОЭС.
Процесс отслеживания событий происходящих на автоматической линии связи привязан к реальному времени и требует немедленной реакции на события. В среде АПП ГОЭС возможности автоматическими каналами увеличились (по сравнению с возможностями АПП-РК как автономного устройства) и поэтому пришлось снять с него функции тарификации разговоров, т.е. сложные математические операции, связанные с пятибайтовой арифметикой. Эти функции были возложены на DTM.
АПП-РК общается с сервером по каналу ИРПС через мультипортовую плату типа ASTBOARD. Обмен информацией происходит на скорости 2400 бод. Этой скорости вполне достаточно для данного объема передаваемой информации и обеспечения надежности. Канал типа ИРПС допускает устойчивую передачу информации с данной скорость на расстояние до 1км.
Каждая команда приходящая в или исходящая от АПП-РК заканчивается символом "*". Все команды большие латинские буквы. в табл. 3.1.
Таблица 3.1
Описание команд
Команда | Назначение |
E* |
Разрешить передачу информации. Эту команду следует передавать после включения или сброса АПП-РК, иначе АПП-РК будет удерживать всю информацию во внутреннем буфере (буфер не безразмерный, около 20 квитанций). |
D* |
Запретить передачу информации. После этой команды АПП-РК будет удерживать всю информацию во внутреннем буфере (буфер не безразмерный, около 20 квитанций) до поступления команды “Е*”. |
S* |
Список свободных кабин. АПП-РК возвращает список свободных кабин (см. Передаваемую информацию). |
V* |
Состояние кабин. |
F* |
Совмещенная команда состояний и списка кабин. |
Bn_s* |
Включить кабину с номером n на сумму s. Если кабина ручная то s - время в минутах. Ручную кабину можно включить без задания времени. |
On* |
Отключить кабину. |
L[строка тарифов]* |
Передать тарифы для АПП-РК. Формат строки тарифов смотрите ниже. |
P[строка установок]* |
Передать установки для АПП-РК. Формат строки установок смотрите ниже. |
Строки тарифов представляет собой набор символов, в котором заключены пятибайтные значения тарифов. Первый байт строки тарифов - размер оставшейся части строки. Второй байт строки - номер страницы тарифов (0 - междугородние, 1 - международные). Дальше по 5 байт идут тарифы соответственно по 0, 1, 2.. зонам (их может быть до 20 шт.).
Формат строки установок приведен в табл. 3.2.
Таблица 3.2
Формат строки установок
Количество байт | Назначение |
2 |
ВРЕМЯ ОТСУТСТВИЯ МАНИПУЛЯЦИЙ В ПЕРИОДАХ TUPDOWN |
2 | ВРЕМЯ ОЖИДАНИЯ В РУЧНОЙ КАБИНЕ С УЛОЖЕННОЙ ТРУБКОЙ В ПЕРИОДАХ TUPDOWN |
2 | ПАУЗА ПОСЛЕ ПОДНЯТИЯ ТРУБКИ В ТИКАХ |
2 | ПАУЗА ПОСЛЕ ПЕРВОЙ ЦИФРЫ В ТИКАХ |
2 | ВРЕМЯ ПОСЛЕ НАБОРА ВСЕХ ЦИФР ДО ОТВЕТА АБОН. В TUPDOWN |
1 | ВРЕМЯ БЕСПЛАТНОГО РАЗГОВОРА В ПЕРИОДАХ TUPDOWN |
1 | КОД, ОПРЕДЕЛЯЮЩИЙ ТИП НАБОРА |
1 | ФЛАГ МЕЖДУНАРОДНОЙ СВЯЗИ |
1 | ПРИЗНАК ТАРИФИКАЦИИ: 0FFh-ПОСЕКУНДНАЯ, 0-ПОМИНУТНАЯ, 1-ПОМИНУТНАЯ С ПЕРЕХОДОМ НА ПОСЕКУНДНУЮ |
2 | ДИСКРЕТ ОКРУГЛЕНИЯ ПРИ СЕК ТАРИФИКАЦИИ (КОП, РУБ) |
1 | ФЛАГ ЧТЕНИЯ ПЕРЕМЫЧЕК |
2 | ДВА БАЙТА СО ЗНАЧЕНИЕМ 0FFH |
1 тик - 1/4 секунды, 1 период TUPDOWN - 1/80 секунды.
На события происходящие в кабинах АПП-РК реагирует передачей сообщений.
Формат сообщения о начале разговора: “ВВВ NC HH.MM.SS TARIF FD PHONE”. Расшифровка полей сообщения приведена в табл. 3.3.
Таблица 3.3
Расшифровка полей сообщения “BBB”
Поле сообщения | Назначение |
PHONE |
Код+Телефон |
FD |
Номер цифры, с которой начинается код зоны |
TARIF |
Тариф |
HH.MM.SS |
Время начала разговора (фиктивное, не берите дурного в голову.) |
NC |
Номер кабины |
Пример сообщения: “BBB 01 01.10.07 8000.00 00 0951234567*”
Формат сообщения о конце разговора: “EEE NC MM.SS COSTF REST ZONE”. Расшифровка полей сообщения приведена в табл. 3.4.
Таблица 3.4
Расшифровка полей сообщения “EEE”
Поле сообщения | Назначение |
ZONE | Номер тарифной зоны |
REST | Остаток |
COST | Стоимость разговора |
MM.SS | Продолжительность разговора |
NC | Номер кабины |
Формат сообщения на команду списка свободных кабин: “SSS NC1 NC2T2 NCnTn*”. Расшифровка полей сообщения приведена в табл. 3.5.
Таблица 3.5
Расшифровка полей сообщения “SSS”
Поле сообщения | Назначение |
Ti |
Тип кабины (A - авт. P - ручн.) |
NCi |
Номер кабины |
В АПП ГОЭС один оператор может выполнять множество задач: прием кредитов, телеграмм, обслуживание АК и РК и т.д. Разговоры в кабинах происходят во времени не зависимо от того, чем занимается оператор и реакция на сообщения приходящие от АПП-РК должна происходить сразу. Для этого между процессом оператора и АПП-РК запускается теневой процесс который постоянно поддерживает связь с АПП-РК. Передача информации между процессами происходит через глобальные переменные. Теневой процесс реализован в модулях iapbckg и ipabckgsub. Помимо связи с АПП-РК теневой процесс занимается инициализацией АПП-РК, загрузкой системных установок, загрузкой тарифов, отслеживанием аварийных ситуаций, формированием записей в реестре, формированием сообщений для процесса операторы, формированием журнала работы АПП-РК. Описание глобальных переменных используемых в АРМ АПП приведено в табл. 3.6.
Таблица 3.6
Описание глобальных переменных
Название глобальной переменной | Узел | Назначение |
^appcab |
(i) |
состояние i-отй кабины |
^appcab |
(i,j) |
сумма и количество разговоров по j-той зоне в i-той кабине |
^appstat |
("CMD") |
передача команды от процесса оператора в теневой процесс |
^appstat |
("STATUS") |
состояние теневого процесса |
^appstat |
("TARIF","AUTO8",j) |
тарифы для СНГ по j-той зоне |
^appstat |
("TARIF","AUTO108",j) |
тарифы для СНГ по j-той зоне |
^appstat |
("SETUP") |
системные установки на АПП-РК |
^appticket |
(i,n) |
квитанции по i-той кабине для n-го разговора |
Идея информационной системы является новшеством в сфере услуг предоставляемых ЦТЭ МТТС потребителям. Зачастую рядовой пользователь не знает автоматических кодов городов СНГ и дальнего зарубежья. Использование автоматической телефонной связи требует знание кодов. Потребитель вынужден обращаться к оператору АПП за данной информацией, чем отнимает у оператора рабочее время. ИС дает потребителю достаточно просто и быстро получить нужную ему информацию.
Помимо кодов направлений автоматической телефонной связи ИС дает информацию пользователям об услугах МТТС, которые он должен оплатить, что особенно необходимо при переходе на безбумажную технологию.
Среди дополнительной информации выдаваемой ИС есть: тарифы на услуги телефонной связи и информация о подписных изданиях. Помимо информации ИС используется как рекламное табло с достаточно богатым набором функций MULTIMEDIA.
ИС общается с сервером по каналу ИРПС через мультипортовую плату типа ASTBOARD. Обмен информацией происходит на скорости 9600 бод. Этой скорости вполне достаточно для данного объема передаваемой информации и обеспечения надежности. Канал типа ИРПС допускает устойчивую передачу информации с данной скорость на расстояние до 1км.
Работа с пользователем организована в диалоговом режиме с использованием системы меню для запуска программы, выполняющей нужную функцию. Выбор пункта меню осуществляется перемещением указателя по пунктам и нажатием “ENTER” на нужном или нажатием “быстрой клавиши”, при котором осуществляется вызов пункта из любого меню, независимо от того, в каком меню находится оператор.
При разработке всего интерфейса было отдано предпочтение использованию черно-белой гаммы цветов, так как использование черно-белых мониторов позволяет значительно уменьшить нагрузку на зрение оператора. Кроме того, все программы разрабатывались с применением условия минимума вывода информации на экран. Это обусловлено тем, что почти все программы будут эксплуатироваться на терминалах, скорость вывода информации которых не очень велика.
АРМ АПП запускается из системы АПП ГОЭС посредством выбора пункта меню УПРАВЛЕНИЕ АПП-РК\УПРАВЛЕНИЕ АВТОМАТИЧЕСКИМИ КАБИНАМИ, или нажатием соответствующей клавиши быстрого запуска. Одновременно с АПП может работать только один оператор. После запуска АРМ АПП оператор увидит список кабин (рис. 4.1).
Форма экрана при работе с АК
Рис. 4.1
В верхней части рамки показан номер текущего оператора. В нижней - список возможных клавиш и их назначение.
Занятые кабина помечены ярким выделением. Для каждой кабины отображается задаток, остаток, тариф текущего разговора, продолжительность текущего разговора, код города и телефон и состояние кабины.
Для включения кабины необходимо нажать клавишу F3 затем ввести номер кабины и задаток, который клиент вносит в кассу перед разговором.
Для выключения кабины необходимо нажать клавишу F4 затем ввести номер кабины, после чего необходимо вернуть клиенту остаток изображенный на экране по нужной кабине.
Для просмотра протокола разговоров необходимо нажать клавишу F6 и ввести номер кабины. Приблизительная форма протокол изображена на рис. 4.2.
Протокол работы кабины
Рис. 4.2
По просьбе клиента после выключения кабины можно распечатать квитанцию состоявшихся разговоров. Для этого нужно нажать клавишу F5 затем ввести номер кабины. Приблизительная форма квитанции изображена на рис. 4.3.
Форма квитанции по разговорам в автоматической кабине
Рис. 4.3
Для перехода в оформление ручного заказа нужно нажать клавишу F8. Для выхода из АРМ АПП нужно нажать клавишу ESC.
При возникновении сбоя АПП-РК или пропадания связи с ним АРМ АПП выводит сообщение показанное на рис. 4.4.
Аварийное сообщение
Рис. 4.4
При возникновении
данного сообщения
необходимо
на задней панели
АПП-РК нажать
кнопку сброс
и затем на
клавиатуре
терминала
нажать
При вызове модуля оформления ручного разговора на экране появится список заказов, изображенный на рис. 4.5
Список ручных заказов
Рис. 4.5
В нижней части рамки показан список возможных клавиш и их назначение. В списке отображается номер заказа, номер оператора принявшего заказ, название страны, название областного центра, название региона, название населенного пункта, время или дата принятия заказа в зависимости от типа заказа (текущий или уведомление), время ожидания абонентом разговора.
Для получения более подробной информации по заказу нужно нажать клавишу F4. Вид подробной информации по текущему заказу показан на рис. 4.6, по уведомления на рис. 4.7.
Форма оформления текущего заказа
Рис. 4.6
Форма оформления уведомления
Рис. 4.7
Для оформления заказа необходимо нажать клавишу F2 затем выбрать тип заказа (уведомление или текущий) и заполнить прототип формы МТФ-4 (см рис.4.6.,рис.4.7).
Принимая заказ, телефонистка переговорного пункта заполняет со слов абонента прототип формы МТФ-4 (см рис.4.6, рис.4.7) , распечатать квитанцию о принятии задатка и выдает ее абоненту.
На квитанции должен быть поставлен календарный штемпель предприятия связи.
Если прием заказов на разговоры с данным городом регулируется, телефонистка переговорного пункта, принимая заказ от абонента, должна спросить у телефонистки заказной службы, на какое время можно принять заказ. Получив ответ, телефонистка переговорного пункта должна согласовать время с абонентом.
Сумма вносимой абонентом платы за заказываемый разговор определяется автоматически на основании:
тарифа;
стоимости минуты разговора с вызываемым пунктом;
предполагаемой абонентом продолжительности разговора;
указанных в заказе услуг.
После принятия у клиента задатка оператор передает по телефону заказ телефонистке заказного коммутатора в коммутаторный зал и оформляет передачу на терминале (клавиша ENTER). Пре оформлении передачи необходимо ввести номер телефонистки принявшей заказ.
Если продолжительность разговора за наличный расчет и выполненные платные услуги не соответствуют указанным в заказе, телефонистка междугородного коммутатора по окончании разговора сообщает оператору переговорного пункта продолжительность состоявшегося разговора и выполненные услуги. Оператор вводит продолжительность состоявшегося разговора машину.
Если телефонистка междугородного коммутатора сообщает, что невозможно предоставить разговор (нет вызываемого лица, по вызываемому телефону не ответили и пр.), оператор немедленно доводит до сведения абонента, ожидающего разговора. Если последний не называет другого лица и согласен ожидать, оператор сообщает об этом телефонистке междугородного коммутатора.
Если абонент отказывается ожидать и снимает заказ, оператор, прежде чем снять заказ, должна предложить абоненту ряд услуг для обеспечения разговора.
Если продолжительность разговора окажется менее оплаченной разница выдается абоненту оператором.
Если разговор не состоялся по вине станции или абонент не желает перенести его на другое время, то разговор снимается и сумма выдается абоненту оператором. Причина снятия фиксируется в машине. Машина сообщает оператору сумму остатка. Причины остатка перечислены в табл. 4.7.
Таблица 4.7
Причины снятия
Код причины | Описание причины |
ОМС | Отказ в момент соединения |
НВЛ | Нет вызываемого лица |
NoНО | Номер не ответил |
ПВ | Повреждения связи |
ПС | Плохая связь |
ТИ | Телефон испорчен |
СО | Сеанс окончен |
РВ | Связь под радиовещанием или ДГТС |
ВК | Связь занята разговорами высшей категории или по срочному тарифу |
ОДС | Отказ до соединения |
ЗНЯ | Абонент не явился |
При расчете квитанция, выданная абоненту при приеме заказа, отбирается и уничтожается; по требованию абонента ему выдается квитанция о стоимости состоявшегося разговора.
Оператор информационной системы обязан при принятии смены включить информационную систему. Обычно эту работу выполняет оператор АПП. Перед запуском информационной системы оператор должен проверить или при необходимости внести изменения в конфигурацию ИС. При в ходе в пункт меню УПРАВЛЕНИЕ ИНФОРМАЦИОННОЙ СИСТЕМОЙ/КОНФИГУРАЦИЯ ИНФОРМАЦИОННОЙ СИСТЕМЫ на экране появится список устройств зарезервированных для ИС и их состояние (рис. 4.8). Внизу подписаны возможные клавиши и их назначение.
Форма экран при конфигурации информационной системы
Рис. 4.8
При редактировании настроек или создании новой станции на экран выводится форма, показанная на рис. 4.9.
Форма экрана при редактировании настроек информационной станции
Рис. 4.9
Номер устройства соответствует номеру канал, к которому подключена ИС. Если выставлен флаг монитора АПП, то информационная станция выполняет функции табло расчетов с АПП. Флаг “АКТИВНО” говорит о том, что устройство будет запущено при запуске информационной системы.
Развитие современной техники характеризуется все возрастающей сложностью. Усложняются конструкции создаваемых машин и агрегатов, увеличивается число различных сопряженных звеньев в механизированных и автоматизированных комплексах. Целью исследования и проектирования все чаще становится комплексное решение вопросов внедрения новой техники, создание не отдельных машин, а целых систем.
При создании сложных объектов новой техники возникает необходимость в координации различных научно-исследовательских, опытно-конструкторских, технологических, производственных, строительных, монтажных, наладочных и других работ. В них принимают участие в порядке кооперирования многие предприятия различных отраслей промышленности: проектные, опытно-конструкторские, научно-исследовательские и иные организации, деятельность которых для обеспечения максимальной эффективности ведущихся разработок должна быть тесно увязана в единый координационный план, предусматривающий окончание всего комплекса работ в заданные сроки при минимальных или лимитированных издержках.
Планы работ по созданию новой техники должны устанавливать не только общую длительность всего процесса, но и продолжительность и последовательность всех входящих в него работ и их этапов.
При освоение относительно простых объектов для этой цели давно и широко применяют ленточные или поэтапные графики. На этих графиках по горизонтальной оси откладывают время, а по вертикальной перечисляют все работы или этапы процесса (рис. 5.1).
При освоении сложных объектов современной техники планирования и управления разработками должны выполняться при помощи методов сетевого планирования и управления (СПУ). Эти методы позволяют оптимизировать процесс создания новой техники как по времени (обеспечивать минимальную длительность цикла), так и по стоимости (обеспечивать минимум затрат).
СПУ основано на графическом изображении определенного комплекса работ, отражающем их логическую последовательность, взаимосвязь и длительность, с последующей оптимизацией разработанного графика при помощи методов прикладной математики и вычислительной техники и его использование для текущего руководства этими работами.
Ленточный график.
Рис 5.1
К числу основных областей применения сетевого планирования и управления относятся комплексные научные исследования, проектирование и подготовка производства сложных объектов новой техники, сооружения инженерных и прочих сложных объектов, включая строительство промышленных (в частности, машиностроительных) предприятий и цехов.
Модель всего процесса создания данного объекта изображается в виде ориентированного графа, называемого сетевым графиком или просто сетью. Сетевые модели могут иметь детерминированную, стохастичную и смешанную структуру.
В детерминированных моделях все работы проекта, их взаимосвязи и требования к ожидаемым результатам работ определены. Если работы включены с некоторой вероятностью, структура сетевой модели будет носить случайный характер. В смешанных моделях часть работ входит в сеть детерминировано, а часть - с некоторой вероятностью. Понятие детерминированности применяется как к структуре сети, так и к оценкам продолжительности планируемым работ. Детерминированными принято обычно называть сети, обладающие и детерминированной структурой, и детерминированными оценками продолжительности работ. Сетевые графики с детерминированной структурой, но с вероятностными оценками называют вероятностными.
Элемент сетевого графика.
Рис 5.2
изготовление опытного образца машины, а событием - момент завершения работы, в данном случае момент готовности образца, после которого должна начаться следующая работа - его испытание и доводка. Таким образом, сетевой график выражает логическую последовательность и связь событий, а каждое событие является промежуточным или окончательным результатом одной или нескольких выполненных работ.
На рис. 5.2 изображен фрагмент сетевого графика. Событие обозначены кружком с указанием в нем его последовательного номера, а работы - стрелкой. Номер события у острия стрелки конечного события j должен быть больше номера начального события i (с которого начинается данная работа). Длина стрелки графически не выражает продолжительности выполнения работы, она обозначается числом дней или недель и наносится над стрелкой. Если для перехода от одного события к другому не требуется затрачивать время, а на графике необходимо изобразить взаимную связь этих событий, то их соединяют пунктирной стрелкой. Такая работа называется фиктивной или условной.
На рис. 5.3. изображен сетевой график для весьма несложного комплекса работ по проектированию и изготовлению стенда.
Полный путь в сетевом графике - это любая непрерывная последовательность взаимосвязанных событий и работ, ведущая от события исходного (начального события всего сетевого графика) I к завершающему (последнему событию сетевого графика) C. Кроме полных путей L (I - C) следует различать:
путь от исходного события до данного промежуточного события L (I - i);
путь, соединяющий данное промежуточное событие с завершающим, L (i - C);
путь между двумя событиями, из которых ни одно не является, ни исходным, ни завершающим.
Сетевой график для комплекса работ по проектированию и изготовлению стенда.
Рис 5.3
Среди этих путей особое значение имеет критический путь - последовательность работ от исходного до завершающего события, требующая наибольшего времени для своего выполнения tmax [L(I- C)]. Таким образом, продолжительность работ, лежащих на критическом пути, определяет общий цикл завершения всего комплекса работ, планируемых при помощи сетевого графика.
Сетевое планирование и управление проводится в следующей примерной очередности. Разработки исходного плана:
расчленение комплекса работ на отдельные этапы или группы работ, закрепляемое за ответственными исполнителями;
выявление и описание каждым ответственным исполнителем всех событий и работ, необходимых для выполнения поставленной перед ним конечной цели; построение ("сшивание") первичной сети, частных и свободной сетей;
определение времени выполнения каждой работы в сети на основе системы оценок;
расчеты параметров сетевого графика;
анализ сетевого графика и его оптимизация.
Расчленение комплекса работ по созданию системы проводится руководителем головной организации или техническим руководителем проекта. Применяются два способа расчленения комплекса работ: путем разработки укрупненной сети или построением схемы уровней руководства - иерархической структуры.
В первом случае система подразделяется на крупные элементы, соответствующие отдельным машинам, агрегатам или этапам работ, для чего строится укрупненный сетевой график. Затем каждая машина, агрегат, этап делятся на узлы, подэтапы и т.п. и на каждый их них также составляется сетевой график.
Во втором случае создаваемая система делится на составные элементы при помощи построения ее иерархической структуры (рис.5.4). Проектирование графиков на каждом уровне руководства поручается руководителям, а на самом низшем - ответственным исполнителям.
В относительно несложном случае, например, при планировании подготовки производства какого-либо нового изделия, соответствующими уровнями могут быть:
1-й (высший) уровень - управление всей технической подготовкой производства;
2-й уровень - конструкторская, технологическая, материальная подготовка;
3-й уровень - стадии конструкторской, технологической и материальной подготовки производства;
4-й уровень - отдельные комплексы работ по каждой стадии подготовки производства.
Схема иерархическая структуры руководства созданием новой техники
Рис 5.4
Создание же сложного изделия или комплекса может потребовать значительно большего числа уровней руководства.
Первичные сети, строящиеся на уровне ответственных исполнителей, детализируются до такой степени, чтобы в них были отражены вся совокупность работ и все взаимосвязи событий и работ. Подобная детализация не является необходимой при "сшивании" частных сетей, каждая из которых объединяет первичные сети, составленные в данной организации или на данном предприятии. Первичные сети, являющиеся элементами такой частной сети, могут быть в ней укреплены. Отдельные пути, состоящие из целого ряда взаимосвязанных работ и событий первичной сети, могут быть показаны в виде одной работы. Например, вся первичная сеть по проектированию и изготовлению стенда (см. рис. 5.3) может быть представлена в виде одной работы: "Проектирование и изготовление стенда" с двумя событиями "Принято решение о создании стенда" и "Стенд готов и отлажен".
От первичных сетей в частной сети всегда должны сохраняться так называемые граничные события, т.е. события, принадлежащие двум или большему количеству первичных сетей, и граничные работы, т.е. работы, у которых предшествующее или последующее событие является граничным.
Аналогично строится и сводная сеть, т.е. сеть, объединяющая весь комплекс работ, в котором занят ряд организаций и предприятий. В одной сводной сети первичные и частичные сети еще более укрупняются, однако и в ней обязательно показать граничные события частных сетей.
Как в частных, так и в свободных сетях желательно более подробно показывать события и работы, относящиеся к критическому пути.
Прежде всего, необходимо выявить, какими событиями будет характеризоваться данный комплекс работ, порученный ответственному исполнителю. Каждое событие должно характеризовать законченность предшествующих действий, например, "Завершено испытание опытных образцов" или "Проведено обучение обслуживающего персонала" и т.д.
Все события и работы, входящие в комплекс работ, рекомендуется свести в таблицу в порядке их последовательности. Во избежание неправильной оценки в дальнейшем общей продолжительности разработки проекта необходимо тщательно проверить этот перечень. Например, для сети из 14 событий, входящих в процесс создания АПП ГОЭС, перечень может быть принят следующим (табл. 5.1).
Каждый ответственный исполнитель, используя составленный им перечень событий и работ, "сшивает" свою первичную сеть. Построение сети можно начинать как от завершающего события, постепенно приближаясь к исходному, так и наоборот - от исходного события к завершающему; в левом конце ее следует располагать исходной (нулевое) событие, а в правом - завершающее (см. рис. 5.3).
При проверке созданной сети из нее необходимо исключать:
"тупиковые события", т.е. те, от которых не начинается ни одна работа (естественно, за исключением завершающего события);
события, которым не предшествует ни одна работа (за исключением исходного события);
замкнутые контуры (направление стрелок, отображающих последовательность выполняемых работ, образует замкнутое кольцо);
одинаковые коды для параллельных работ между двумя событиями.
После составления и проверки первичных сетевых графиков, разрабатываемых каждым ответственным исполнителем для своей группы работ, переходят к сшиванию частных и свободного сетевых графиков, т.е. к объединению всех первичных сетевых графиков в общую сводную сеть, завершающее событие которой соответствует конечной цели разработки.
Таблица 5.1
Перечень событий, входящих в процесс создания АПП ГОЭС
Порядковый номер события | Событие | Коды работ | Работа |
0 | Решение о создании АПП ГОЭС принято | 0,1 | Разработка архитектуры системы |
1 | Архитектура АПП ГОЭС разработана | 1,2 | Разработка библиотеки функций для работы с пользователем |
1,3 | Разработка библиотеки функций для обслуживания работы оператора АПП ГОЭС | ||
1,8 | Разработка состыковки АПП-РК с IBM PC и программ связи | ||
1,4 | Разработка программ состыковки с ЕС ЭВМ | ||
2 | Библиотека DTM-PRO создана | 2,6 | Создание экранных форм для принятия оплат |
2,5 | Создание программы проектных решений | ||
2,7 | Создание интерфейса оператора АК и РК | ||
3 | Системная библиотека создана | 3,6 | Создание процедур принятия оплат |
4 | Комплекс программ связи с ЕС ЭВМ создан | 4,10 | Получение БД необходимых для нормального функционирования системы |
5 | Библиотека DPPRJ58 создана | 5,11 | Создание системы меню и защиты АПП ГОЭС |
6 | Комплекс приема оплат создан | 6,9 | Разработка программ просмотра реестров ГОЭС |
7 | Комплекс программ настройки системы создан | 7,10 | Внедрение комплекса в систему |
8 | АПП-РК подключен к IBM PC | 8,7 | Создание программ настройки системы на работу с АПП-РК |
8,6 | Создание программы оператора АК и РК |
продолжение табл. 5.1
Порядковый номер события | Событие | Коды работ | Работа |
9 | Комплекс программ просмотра реестров создан | 9,10 | Состыковка комплекса с другими программами |
10 | Комплес программ администрирования создан | 10,11 | Объединение созданных программ в единую систему |
11 | Все созданные комплексы объединены в единую систему | 11,12 | Тестирование системы в реальных условиях работы |
11,13 | Написание документации по созданной системе | ||
12 | Тестирование системы закончено | 12,14 | Внедрение системы в производство |
13 | Написание документации закончено | 13,14 | Обучение персонала по готовой документации |
14 | АПП ГОЭС создан и внедрен |
Практика применения СПУ показывает, что при наличии в системе до 300 событий все расчеты по сети могут быть проведены вручную или при помощи счетно-клавишных машин. Большее число событий вызывает необходимость применения ЭВМ и использования специальных программ.
Для планирования длительности работ необходимо пользоваться соответствующими нормативами и обобщенными опытными данными. При их отсутствии используют три оценки времени, даваемые ответственными исполнителями по каждой работе: минимальное, максимальное, наиболее вероятное время - или две: минимальное и максимальное время. Эти оценки обычно выражаются в днях или неделях.
Если от ответственного исполнителя работы затребовать только одну оценку времени tн.в., то возникает опасность, что она может оказаться нереальной, а это нарушит весь график работы по проекту, особенно, если данная работа будет лимитировать срок разработки в целом.
Минимальное время tmin - минимально возможное время выполнения данной работы. Вероятность выполнения работы за такое время невелика. Максимальное время tmax - это максимальное время выполнения данной работы при крайней неудачном стечении обстоятельств, например, при возможности разрушения испытываемого изделия, выявления неправильности пути, выбранного для исследования, и т.д. Наконец, наиболее вероятное время tн.в. - возможное время выполнения данной работы при условии, что не возникнет никаких особых и неожиданных трудностей.
Наиболее вероятная оценка времени tн.в. не может быть принята в качестве величины ожидаемого времени выполнения каждой работы tож, так как в большинстве случаев наиболее вероятное время оценивается ответственным исполнителем по-разному: в одних случаях - ближе к минимальному, в других - к среднему, т.е., как правило, не будет совпадать с ожидаемым. Поэтому для определения ожидаемого времени выполнения каждой работы полученные оценки подвергают статистической обработке, допустив, что вероятности продолжительности выполнения любой работы распределяются в соответствии с законом бета распределения. Тогда:
Среднее квадратическое отклонение принимается равным 1/6 размаха, т.е.
Квадрат stож называется дисперсией и служит мерой разброса ожидаемого времени:
Исследования советских математиков показали, что расчет с ошибкой, не превышающей 1%, может производиться и по двум оценкам времени tmin и tmax. Предложенные ими уравнения имеют следующий вид:
Решение двух уравнений для каждой работы дает необходимые значения ожидаемого времени и его дисперсию, нужную для оценки вероятности свершения событий в заданный срок.
Найденные значения tож заносят в таблицу и на сети над каждой работой проставляют оценки времени (см. рис. 5.3).
Применяемый в обоих случаях (при двух или трех оценках) метод усреднения продолжительности работ, полученных на основании вероятностных оценок, позволяет вероятностную сеть рассматривать как детерминированную.
Автоматизированный переговорный пункт городского отделения электросвязи представляет собой аппаратно-программный комплекс, который включает в себя технические и программные средства, позволяющие автоматизировать ряд действий персонала городского отделения электросвязи или районного узла связи в частности:
управление автоматическими кабинами междугородной телефонной связи;
управление приемом и обслуживанием разговоров при коммутации ручных междугородных разговоров;
прием и передача телеграфных сообщений;
"перенос на плечи" пользователя информирования о кодах городов дальнего и ближнего зарубежья, городов и районов Украины для автоматической телефонной связи, об услугах электросвязи, предоставленных в кредит, о перечне подписных изданий, о возможности подачи разного рода объявлений;
выполнение услуг по рекламе с помощью информационной системы, входящей в состав АПП ГОЭС (РУЭС)
автоматизация процессов передачи телефаксов;
автоматизация процесса получения оплат за услуги почтовой и электрической связи;
автоматизированное формирование различных реестров и дневника работы АПП ГОЭС (РУЭС) с накоплением информации по различным периодам;
загрузку и выгрузку информации об услугах, представленных в кредит, рассчитанных централизованно;
ведение справочника сотрудников АПП ГОЭС (РУЭС) с обеспечением парольной защиты и уровня доступа к системе различных категорий операторов;
настройка параметров на конкретные условия применения АПП ГОЭС (РУЭС).
Основная зарплата на 1 человека за 1 месяц $.
Основная зарплата на 5 человек за 2 месяцев $.
Дополнительная зарплата $*13%=$.
Сумма отчислений от зарплаты *52%=$.
Материалы и оборудование 500.00$.
Накладные расходы *300%=$.
Прибыль (+++)*25% = *0.25%=$.
Налог на добавочную стоимость *20%=$.
Расчет затрат приведен в табл. 5.2.
Таблица 5.2
Расчет затрат
Затраты | Сумма, $ | Удельный вес к ИТОГУ, % |
Основная зарплата | ||
Дополнительная зарплата | . | |
Сумма отчислений от зарплаты | . | |
Материалы и оборудование | ||
Накладные расходы | ||
Прибыль | ||
НДС | ||
ИТОГО ($) |
|
ИТОГО (крб.) $*200'000= крб.
Расчет эксплуатационных расходов до внедрения АПП ГОЭС приведен в табл. 5.3
Таблица 5.3
Затраты до внедрения АПП ГОЭС при кол-ве квитанций 150000 шт. в месяц
Расчитываемый параметр | Кол-во | Расчет |
Размер квитанции, м2 |
0.021 | |
Площадь расходуемой бумаги в м2 в месяц. |
3150 | 0.021*150000 |
Цена 1м2 бумаги, крб. |
30158 | |
Расходы на бумагу в месяц, крб. | 94'997'700 | 3150*30158 |
Стоимость разноски 1 квитанции, крб. | 5000 | |
Расходы на разноске квитанций в месяц, крб. | 750'000'000 | 5000*150000 |
Скорость печати принтера не менее квит/мин | 50 | |
Мощность принтера кВт | 0.6 | |
Стоимость 1кВт*ч, крб. | 5500 | |
Расходы на электроэнергию, потребляемую принтером в месяц, крб. | (0.6*5500)* ((150000/50)/60) | |
Стоимость принтера, крб. | 140'000'000 | |
Амортизационные расходы (11% от стоимости принтера в год*1/12) в месяц. | 140000000*0.11/12 | |
Итого в месяц, крб. | 846'446'033 | |
Итого в год (12 месяцев), крб. | 10'157'352'396 |
Идовнед=10'157'352'396 крб.
Расчет стоимости КТС на одно отделения связи приведен в табл. 5.4.
Таблица 5.4
Расчет стоимости КТС на одно отделение связи.
Наименование | Кол-во, шт. | Цена за шт., $ | Сумма, $ | |
Рабочая станция IBM PC/AT386 | 1 | 700 | 700 | |
Терминал КРОН-180 | 2 | 200 | 400 | |
Принтер Panasonic KX-130 | 2 | 100 | 200 | |
АПП-РК | 1 | 500 | 500 | |
Информационная станция | 1 | 200 | 200 | |
|
Итого | 2'000 | ||
Итого в крб | 400'000'000 | |||
Расчет затрат после внедрения АПП ГОЭС в табл. 5.4.
Таблица 5.5
Затраты после внедрения АПП ГОЭС
Расчитываемый параметр | Кол-во | Расчет |
Количество отделений связи, шт | 26 | |
Мощность КТС одного отделения связи, кВт*ч | 0.3 | |
Время работы одного отделения связи в месяц (14 часов * 365.25 дня), ч |
|
|
Стоимость 1кВт*ч, крб | 5'500 | |
Стоимость электричества на все отделения связи, крб | 219'390'600 | 26*0.3*420*5500 |
Амортизационные расходы на все отделения связи (11% от стоимости оборудования в год), крб | 400000000*0.11*26 | |
Текущий ремонт (3% от стоимости оборудования в год), крб | 400000000*0.3*26 | |
Прочие расходы (3% от стоимости оборудования в год), крб | 400000000*0.3*26 | |
Общие затраты в год, крб | 1'987'390'600 | |
Расчет капитальных вложений приведен в табл. 5.6
Таблица 5.6
Капитальные вложения на АПП ГОЭС.
Наименование |
стоимость крб |
Стоимость КТС на 26 отделений связи(КТС на отделениях связи используются только для работы с данной системой) | 10'400'000'000 |
Стоимость разработки ПО | 1'282'224'000 |
Итого | 11'682'224'000 |
Определение экономической эффективности
Э =Идовнед — Ипосле — Sрп/(n*Тс)= 10'157'352'396-1'987'390'600- =
ТОК = К/Э =11'682'224'000/=
Годовая экономия от внедрения АПП ГОЭС позволяет окупить затраты на разработку комплекса в течении 1.5 года. Таким образом уже через полтора года комплекс начнет приносить доход около 8 млрд. в год.
Охрана труда - это система правовых, социально-экономических, организационно-технических, санитарно-гигиенических и лечебно-профилактических мероприятий и средств, направленных на сохранение здоровья и работоспособности человека в процессе труда.
Государственная политика в области охраны труда базируется на принципах:
приоритета жизни и здоровья работников по отношению к результатам производственной деятельности предприятий, полной ответственности собственника за создание безопасных и безвредных условий труда;
комплексного решения задач охраны труда на основе национальных программ по этим вопросам с учетом других направлений экономической и социальной политики, достижений в области науки и техники и охраны окружающей среды;
социальной защиты работников, полного возмещения ущерба лицам, потерпевшим от несчастных случаев на производстве и профессиональных заболеваний;
установления единых нормативов по охране труда для всех предприятий, независимо от форм собственности и видов их деятельности, использование экономических методов управления охраной труда, проведения политики льготного налогообложения, что способствует созданию безопасных и безвредных условий труда, участия государства в финансировании мероприятий по вопросам охраны труда;
обеспечения координации деятельности государственных органов, учреждений, организаций и объединений граждан, решающих различные проблемы охраны здоровья, гигиены и безопасности труда, а также сотрудничества и проведения консультаций между собственниками и работниками, между всеми социальными группами при принятии решений по охране труда на местном и государственном уровнях;
международного сотрудничества в области охраны труда, использования мирового опыта организации работы по улучшению условий и повышению безопасности труда. /1/
Полностью безопасных и безвредных производств не существует. Задача охраны труда - свести к минимуму вероятность несчастного случая или заболевания работающего с одновременным обеспечением комфортных условий при максимальной производительности труда. /7/
Деятельность пользователя видеотерминала заключается в основном в наблюдении за появляющимися сигналами, принятии решения и использовании принятых решений или поступающих команд. В ряде случаев работа выполняется в соответствии с жестким алгоритмом, например, ввод информации, часто сопровождающийся проявлением монотонии.
В других случаях работа связана с диалогом, включающим интенсивную умственную нагрузку, в результате чего человек пребывает в постоянной готовности к действиям, нередко в условиях дефицита времени. Подобная работа часто сопровождается высоким нервно-эмоциональным напряжением, проявление которого накладывает определенные ограничения на режим работы.
Можно выделить три основных вида работ, в процессе выполнения которых используются дисплеи:
ввод и редактирование данных, характеризующиеся высокой скоростью ввода информации, небольшими перерывами в работе, низкой потребностью в обмене информацией и небольшой частотой принятия решений. Работа не требует большого умственного напряжения, чаще монотонная.
Диалоговые виды работ - с документами, экраном и клавиатурой, характеризующиеся средней скоростью ввода информации, часто сопровождающиеся перерывами различной длительности, непостоянной (неритмичной) потребностью в обмене информацией с ЭВМ, с принятием решений.
Отладка программ - работа преимущественно с экраном и документацией, характеризующиеся низкой скоростью ввода информации, частыми перерывами на обработку информации и ожидание ответных реакций ЭВМ, большой потребностью в обмене информацией и высокой частотой принятия решений. При этом объем интеллектуальных усилий, затрачиваемых на различных стадиях разработок, зависит от индивидуальных особенностей, качества программы.
В зависимости от вида деятельности пользователя в системе “человек-дисплей" могут преобладать сенсорно-перцептивная, моторная либо интеллектуальная деятельность (например, у операторов подготовки данных преобладает сенсорно-перцептивная и моторная деятельность, тогда как у инженеров-программистов - интеллектуальная).
Особенностью работы за дисплеем является постоянное и значительное напряжение функций зрительного анализатора, обусловленное необходимостью различения самосветящихся объектов (символов, знаков и т.п.) при наличии бликов на экране, мельканием изображения, недостаточной четкостью объектов различения.
Условия труда пользователя, работающего с дисплеем, определяются условиями освещения в помещении дисплейного зала и на рабочем месте; параметрами микроклимата; эргономическими характеристиками основных элементов рабочего места.
Согласно ст. 22 Закона Украины "Об охране труда" одним из наиболее важных подразделов коллективного договора должны быть комплексные мероприятия по достижению установленных нормативов безопасности, гигиены труда и производственной среды, повышению существующего уровня охраны труда, предотвращению случаев производственного травматизма, профессиональных заболеваний и аварий.
Это система организационных мероприятий и технических средств, предотвращающая или уменьшающая воздействие на работающих опасных и вредных производственных факторов.
Опасный производственный фактор - фактор, воздействие которого на работающего в определенных условиях приводит к травме или другому внезапному резкому ухудшению здоровья.
Вредный производственный фактор - фактор, воздействие которого на работающего в определенных условиях приводит к заболеванию или снижению работоспособности. /8/
Опасные и вредные производственные факторы подразделяются по природе действия на следующие группы: физические, химические, биологические, психофизиологические. /9/
При работе дисплея образуется ряд физических факторов, в том числе, таких как гамма, рентгеновское, микроволновое, радиочастотное, ультрафиолетовое, видимое и инфракрасное излучение, уровни которых значительно ниже предельно допустимых. Наряду с этим на рабочих местах с функционирующими видеотерминалами создается электростатическое поле между экраном и оператором. /11/
Автоматизированная программно-аппаратная система расчетов за услуги междугородной электросвязи разработана для работы с персональными ЭВМ класса IBM PC/AT, что обеспечивает высокую надежность в процессе эксплуатации данной системы.
Система работает в интерактивном режиме работы, при котором пользователь взаимодействует со стандартными устройствами ввода-вывода, полностью отвечающими требованиям безопасности.
Помещение по степени опасности поражения электрическим током относится к классу помещений без повышенной опасности.
Материалы конструкции оборудования не оказывают опасного и вредного воздействия на организм человека во всех режимах работы, предусмотренными условиями эксплуатации, а также не создают пожаро и взрывоопасные ситуации.
Конструкция оборудования и его отдельных частей исключает возможность их падения, опрокидывания и произвольного смещения при всех предусмотренных условиях эксплуатации.
Для персонала отделений электросвязи представляет опасность электрический ток. Безопасность эксплуатации оборудования обеспечивается комплексом мер безопасности, применением защитных средств и правильной организации эксплуатации действующих электроустановок.
Для обеспечения защиты от случайного прикосновения к токоведущим частям применяются следующие способы и средства:
защитные оболочки;
защитные ограждения;
безопасное расположение токоведущих частей;
изоляция токоведущих частей (рабочая, дополнительная, усиленная, двойная);
изоляция рабочего места;
малое напряжение;
защитное отключение;
предупредительная сигнализация, блокировка, знаки безопасности.
Для обеспечения защиты от поражения электрическим током при прикосновении к металлическим нетоковедущим частям, которые могут оказаться под напряжением в результате повреждения изоляции применяют следующие способы:
защитное заземление;
зануление;
выравнивание потенциалов;
защитное отключение;
изоляция нетоковедущих частей;
электрическое разделение сети;
малое напряжение;
контроль изоляции и др. /10/
На рабочих местах операторов установлены розетки с напряжением 220В.
Все оборудование поддерживается в рабочем состоянии и обслуживается специалистами цеха технической эксплуатации междугородной телефонно-телеграфной связи. В случае возникновения неисправности оборудования, оператор немедленно сообщает о неисправности в данное подразделение МТТС.
Изоляция составных частей оборудования, доступных для прикосновения, полностью обеспечивает защиту человека от поражения электрическим током.
Рабочее место для выполнения работ сидя организуют при легкой работе, не требующей свободного передвижения работающего. Устройство рабочего места и взаимное расположение всех его элементов (сиденье, органы управления, средства отображения информации и т.д.) соответствуют антропометрическим, физиологическим и психологическим требованиям, а также характеру работы.
Эргономическая организация рабочего места, оснащенного дисплеем, учитывает специфику конкретного рабочего места и особенности выполняемых пользователями задач с применением видеотерминала ЭВМ.
К основным эргономическим задачам организации рабочего места относятся:
определение пространственных параметров рабочего места и его элементов, соответствующих антропометрическим характеристикам контингента работающих;
оптимальное размещение элементов рабочего места относительно пользователя на основе анализа его деятельности.
Основными параметрами рабочего места, оснащенного дисплеем, являются 20 позиций (табл. 6.1). Рабочее место изображено на рис. 6.1.
Таблица 6.1
Пространственные параметры рабочего места
Условное обозначение параметра | Параметр |
Способ измерения параметра |
Степень необходи-мости регулирова-ния |
Значе- ние пара- метра мм (°) |
Примечание |
1 | Высота сиденья | От пола до верхней плоскости сиденья | Необходима | 400-500 | Регулируемый параметр |
2а | Высота клавиатуры | От пола до нижнего ряда клавиатуры | Желательна |
600-750 620-700 |
Диапазон регулировки Для нерегулируемой высоты |
2б | То же (от уровня стола) | От базовой поверхности до нижнего ряда клавиатуры | -”- | Около 20 | При необходимости клавиатуру можно встроить в поверхность стола |
3 | Угол наклона клавиатуры | От горизонтали | Возможна | (7-15) | Зависит от высоты клавиатуры |
4 | Ширина основной клавиатуры | Определяется оптимальной зоной моторного поля согласно ГОСТ 12.2.032-78 | -”- | Не более 400 | Дополнительные блоки и клавиши, нечасто используемые, могут быть размещены в зоне легкой досягаемости за пределами основной клавиатуры |
5 | Глубина основной клавиатуры | То же | -”- | Не более 200 | То же |
6 | Удаленность клавиатуры от края стола | От переднего края стола до нижнего | Возможна | Не менее 80-100 | При неподвижном креплении клавиатуры |
7 | Высота экрана | От пола до нижнего края экрана | Желательна |
950-1000 970-1050 |
Диапазон регулировки При отсутствии регулировки |
8 | Угол наклона экрана | От вертикали | -”- |
(0-30 =15°) опт |
Зависит от высоты экрана относительно глаз |
Продолжение табл. 6.1
Услов-ное обозна-чение пара-метра | Параметр |
Способ измерения параметра |
Степень необходи-мости регулирова-ния |
Значе- ние пара- метра мм (°) |
Примечание |
9 | Удаленность экрана от края стола | От переднего края стола до экрана дисплея | -”- |
500-700 500 |
Диапазон регулировки При отсутствии регулировки |
10 | Высота поверхности для записи | От пола | -”- |
670-860 725 |
Диапазон регулировки При отсутствии регулировки |
11 | Площадь поверхности для записи | Определяется оптимальной зоной моторного поля | -”- |
600x400 900x600 |
Прямоугольной формы Треугольной формы |
12 | Угол наклона поверхности для записи | От горизонтали | Возможна | (0-10) |
Для постоянной письменной работы Для периодических записей |
13а 13б |
Глубина пространства для ног на уровне: коленей ступней |
От переднего края стола | -”- |
0 Не менее 400 Не менее 600 |
|
14а 14б |
Высота пространства для ног на уровне: коленей ступней |
От пола | Возможна | Не менее 600 Не менее 100 |
Для нерегулируемой высоты стола |
15а 15б |
Ширина пространства для ног на уровне: коленей ступней |
Возможна | Не менее 500 Не менее 250 |
Параметр необходим при наличии боковых тумб или аналогичного оборудования | |
16 | Высота подставки для ног | От пола до передней части подставки | Желательна |
50-130 80 |
Регулируемая величина Нерегулируемая |
Продолжение табл. 6.1
Услов-ное обозна-чение пара-метра | Параметр |
Способ измерения параметра |
Степень необходи-мости регулирова-ния |
Значе- ние пара- метра мм (°) |
Примечание |
17 | Угол наклона подставки для ног | От горизонтали | -”- |
(0-25) (15) |
Диапазон регулировки Нерегулируемая величина |
18 | Глубина подставки для ног | От переднего до заднего края | -”- | 400 | |
19 | Ширина подставки для ног | -”- | 300 | ||
20 | Пюпитр-подставка для документов | От горизонтали | -”- |
15°-20° |
Рабочее место пользователя ЭВМ (обозначения на рис 6.1 соответствуют отмеченным в табл. 6.1).
Рис 6.1
Расстояние от глаз пользователя до экрана дисплея составляет 500-700мм, угол зрения 10-20°, но не более 40°; угол между верхним краем видеотерминала и уровнем глаз оператора составляет менее 10°. Предпочтительным является расположение экрана перпендикулярно к линии зрения пользователя.
Конструкцией рабочего места обеспечено оптимальное положение работающего. Руки пользователя располагаются на рабочем столе в горизонтальном положении или слегка наклонно, угол локтя должен составлять 70-90°. Необходима хорошая опора для спины и ягодиц. Бедра располагаются параллельно полу. Ноги стоят плоско на полу или на подставке. /13,14,15/
Для обеспечения удобства в случаях выполнения интенсивной работы предпочтение отдается отделяемой клавиатуре. Встроенные клавиатуры более приемлемы для компактных настольных дисплеев, предназначенных для периодического пользования.
Рабочие места, оборудованные дисплеями, расположены таким образом, чтобы в поле зрения оператора не попадали окна и осветительные приборы. Видеотерминалы размещаются под углом 90-105° к окнам и на расстоянии не менее 2.5-3 м от стены с оконными проемами.
В поле зрения оператора, работающего с дисплеем, не попадают поверхности окружностей среды, которые обладают зеркальным отражением. Соотношение яркости экрана и ближайших поверхностей отражения не превышает 5:1. Покрытие стола матовое с коэффициентом отражения 0.25-0.4. /12/
Помещения, оснащенные дисплеями, располагаются в северной или северо-восточной части здания. В случае если же помещение ориентировано на юг, предусмотрены солнцезащитные устройства (жалюзи, шторы и т.п.).
Объем производственных помещений на одного работающего составляет не менее 15м3, а площадь помещений - не менее 4.5м2. Расстояние между рабочими местами, оборудованными дисплеями, не менее 1м между рядами.
В помещениях, оборудованных видеотерминалами, стены окрашены красками пастельных тонов с коэффициентом отражения 40-60%. Окраске поверхностей придана матовая фактура. /12/
В залах вычислительной техники и других производственных помещениях при выполнении работ операторского типа, связанных с нервно-эмоциональным напряжением, соблюдаются оптимальные величины температуры воздуха 22-24° при его относительной влажности 40-60% и скорости движения воздуха не более 0.1м/с. /16/
Помещение оборудовано установками кондиционирования воздуха. Системы вентиляции и кондиционирования воздуха оснащены устройствами для виброгашения и шумопоглощения, обеспечивающими снижение шума до допустимых значений для данного вида работ.
Для искусственного освещения помещений, в которых используют дисплеи, применяется система комбинированного освещения. Предусмотрено устройство рабочего и эвакуационного освещения.
Освещенность рабочих мест в горизонтальной плоскости на уровне 0.8м от пола - не менее 400лк. Вертикальная освещенность в плоскости экранов дисплеев - не более 300лк. Коэффициент пульсации освещенности - не более 10%. Показатель дискомфорта - не более 40. Для ограничения отраженных от экранов бликов обеспечено снижение яркости излучателей в угловой зоне более 55° от вертикали не более 200 кд/м2.
Для искусственного освещения применяются люминесцентные лампы типа ЛБ. Для достаточно высоких помещений (4м и более) в случае устройства отраженного освещения применены металло-галогенные лампы мощности менее 250Вт и высокими индексами цветопередачи.
Для общего освещения использованы светильники с люминесцентными лампами и зеркальными экранирующими решетками и отражателями. Не применяются для общего освещения помещений с использованием дисплеев светильников любого класса светораспределения, за исключением светильников класса светораспределения О и с кривой силы света в нижней полусфере типов Л, Ш, М и С. /17/
Использована система переключателей, позволяющих регулировать интенсивность искусственного освещения в зависимости от естественного, а также позволяющих в данный момент времени освещать только необходимые для работы зоны помещения. /12/
При устройстве местного освещения применяются поворачивающиеся, передвижные лампы на гибком шланге или передвижных шарнирах. Свет падает слева. Рекомендуемая мощность ламп - не менее 50-70Вт. Одно местное освещение недопустимо, так как связано с неизбежной адаптацией зрения. Необходимо следить за чистотой светильников и окон. Грязная поверхность электрических ламп задерживает до 80% света, а слегка покрытое пылью оконное стекло - до 30% света (чистое оконное стекло пропускает до 80% световых лучей).
Рабочие места программистов вычислительных машин не имеют уровни звука и эквивалентные уровни звука выше 50ДбА, а в помещениях телефонных и телеграфных станций, в залах обработки информации на вычислительных машинах - не выше 65ДбА, в помещениях для размещения шумных агрегатов вычислительных машин - 75ДбА. Нормирование параметров среды проводится с учетом вида трудовой деятельности, учитывая сходство механизмов действия на организм человека шума и напряженности труда. При выполнении работ по выработке концепций новых программ уровни звука не превышают 40ДбА; при выполнении операторской работы - 65ДбА. /18/
Для поддержания нормированных значений концентрации отрицательных и положительных токов предусмотрена искусственная ионизация. В помещениях с дисплеями проводится ежедневная влажная уборка и регулярные проветривания в течение рабочей смены. Удаление пыли с экрана дисплея производится не реже 1 раза в смену. В периоды смены, когда работа не выполняется, дисплей выключен.
Характер труда за ВДТ приводит к ограниченной двигательной активности, сопровождающейся малыми мышечными усилиями (гиподинамией). При некоторых видах труда (ввод и редактирование информации) имеется значительная, но однообразная и упрощенная нагрузка на небольшие группы мышц рук (гипокинезия). Для устранения вредного воздействия гиподинамии и гипокинезии вводятся паузы для выполнения комплекса упражнений, направленных на увеличение затрат энергии на мышечную работу и на устранение изменений, вызванных локальным характером мышечных действий.
Для основных видов работ, выполняемых за видеотерминалом, вводятся официально предусмотренные перерывы. Общие требования к перерывам:
они установлены для предупреждения утомления;
короткие и частые, а не длинные и редкие;
перерывы проводятся вне рабочего места с видеотерминалом.
Разные виды работ требуют различного подхода к организации перерывов. Частота и продолжительность (микропаузы или более длительные перерывы) перерывов зависит от типа и интенсивности выполняемой работы. Для работ, выполняемых с большой нагрузкой, рекомендован 10-15-минутный перерыв после каждого часа работы, а при интенсивной и монотонной работе 10-15 минут через каждые 2 часа. Количество микропауз (длительностью до 1 минуты) регулируется индивидуально.
Формы и содержание перерывов могут быть разными: выполнение альтернативной вспомогательной работы, не требующей большого напряжения; длительные перерывы для приема пищи, с начала регламентированных перерывов - гимнастика для глаз, во время одного из перерывов рекомендуется проведение общей гимнастики.
Проведение физических упражнений с дозированной нагрузкой в течение рабочего дня рекомендуется индивидуально, в зависимости от ощущения усталости. Гимнастика направлена на коррекцию вынужденной позы, улучшение венозного кровообращения, частичное восполнение дефицита двигательной активности. Мышечные усилия комплекса упражнений умеренные, темп средний. После окончания гимнастики необходим пассивный отдых, длительностью в 2-3 минуты перед работой. Комплекс упражнений меняется 1 раз в неделю.
Специальные упражнения для глаз, способствующие усилению кровообращения, сбалансированию тонуса глазных мышц, профилактике утомления, выполняются в начале регламентированных перерывов, в течение 2-3 минут, сидя на рабочем месте.
В случае возникновения чрезмерного зрительного напряжения, сопровождающегося ухудшением самочувствия, несмотря на хорошую эргономическую организацию работы и соблюдение режимных моментов, необходим индивидуальный подход в ограничении времени работы, коррекция длительности перерывов для отдыха или смена деятельности другой, не связанной с использование ЭВМ.
Обеспечение пожарной безопасности является неотъемлемой частью государственной деятельности по охране жизни и здоровья людей, национального богатства и окружающей природной Среды.
Собственник предприятия, учреждения или организации обязан:
разработать комплексные мероприятия по обеспечению пожарной безопасности;
в соответствии с нормативными актами по пожарной безопасности разработать и утвердить положения, инструкции, иные нормативные акты, действующие в пределах предприятия, учреждения и организации, осуществлять постоянный контроль за их выполнением;
обеспечить соблюдение противопожарных требований, норм, правил, а также выполнение требований, предписаний и постановлений органов государственного пожарного надзора;
организовать обучение работников правилам пожарной безопасности и пропаганду мер по их обеспечению;
при отсутствии в нормативных актах требований, необходимых для обеспечения пожарной безопасности, принимать соответствующие меры, согласовывая их с органами государственного пожарного надзора;
содержать в исправном состоянии средства противопожарной защиты и связи, пожарную технику, оборудование и инвентарь, не допускать их использование не по назначению;
представить по требованию государственной пожарной охраны сведения и документы о состоянии пожарной безопасности объектов и производимой ими продукции;
осуществлять меры по внедрению автоматических средств обнаружения и тушения пожаров и использованию для этой цели производственной автоматики;
своевременно информировать пожарную охрану о неисправности пожарной техники, систем противопожарной защиты, водоснабжения, а также о закрытии дорог и проездов на своей территории;
проводить служебное расследование в случае пожаров. /19/
Все работники при приеме на работу ежегодно по месту работы проходят инструктажи по вопросам пожарной безопасности.
Хранилища информации, помещения для хранения машинных носителей информации размещаются в подсобных отдельных помещениях, оснащенных негорючими стеллажами и шкафами. Машинные носители информации хранятся в металлических кассетах.
Пол в помещении, где используются ЭВМ, изготовлен из негорючих материалов. Звукопоглощающая облицовка потолков и стен этих помещений также изготовлена из негорючих или тяжело горючих материалов.
Для мытья деталей используются негорючие моющие вещества. Для промывания сменных устройств горючими веществами выделены специальные помещения, оснащенные приточно-вытяжной вентиляцией.
В случае необходимости проведения мелкого ремонта или технического обслуживания ЭВМ непосредственно в рабочем помещении и с использованием горючих веществ разрешается иметь не более 0.5 л в таре, которая не разбивается и плотно закрывается.
В помещениях, в которых находятся ПЭВМ (если автоматическая система пожаротушения не обязательна), имеются переносные углекислотные огнетушители из расчета 2 шт на каждые 20 м2 площади помещения с учетом предельно-допустимой концентрации огнетушащего вещества.
Персональные компьютеры после окончания работы на них выключаются из сети.
Не реже одного раза в квартал производится чистка от пыли агрегатов, узлов, кабельных каналов.
Не разрешается:
размещать ЭВМ в подвалах;
проводить работу по ремонту узлов или блоков ЭВМ непосредственно в машинном зале;
хранить постоянно в залах ЭВМ машинные носители информации, запасные блоки и детали;
оставлять без присмотра включенную в сеть электронную аппаратуру, которая используется для испытания и контроля ЭВМ. /20/
ЗАКЛЮЧЕНИЕ
В результате проделанной работы создан программный продукт способный обеспечить уровень автоматизации достаточный для выполнения основных функций предоставления услуг электросвязи населению области, быстро и корректно обработать информацию, что обеспечивает получения прибыли за предоставленные услуги в полном объеме.
Созданная система расширила спектр услуг электросвязи, предоставляемых населению области, и имеет существенные преимущества, основными из которых являются: качественно новый метод работы операторов, существенно снижающие уровень ручного труда; информирование абонента о размерах и сроках оплаты за услуги; оперативность и качество подготовки данных, исключающее ошибки в системе расчетов за услуги; экономия расходных материалов.
Первая версия системы запущена в эксплуатацию в августе 1995 года на двух центральных отделениях связи. К концу 1995 года система успешно эксплуатировалась на 19 отделениях связи г. Запорожья.
Список использованных источников
1. Руководство системного менеджера по ДТ-МАКС. Кембридж. ИнтерСистемы, 1994 г.
2. Руководство программиста по ДТ-МАКС. Кембридж. ИнтерСистемы, 1994 г.
3. Междугородние телефонные правила. Министерство связи СССР. “Связь”. 1968 г.
4. Закон Украины "Об охране труда", Постановление Верховного Совета Украины от 14.10.92 г. N 2696-XII
5. Державний реєстр міжгалузевих і галузевих нормативних актів про охорону праці (Реєстр ДНАОП). За станом на 01.02.95 р. Затверджено наказом Державного комітету України по нагляду за охороною праці від 06.02.95 р. N 12, Київ, 1995 р.
6. Законодавство України про охорону праці. Збірник нормативних документів. Том 1,2,3,4. Київ, 1995 р.
7. В.Ф. Кобевник. Охрана труда. Киев. "Выща школа" 1990 г.
8. ГОСТ 12.0.002-80 ССБТ Термины и определения.
9. ГОСТ 12.0.003-74* ССБТ Опасные и вредные производственные факторы.
10. ГОСТ 12.1.019-79* ССБТ Электробезопасность. Общие требования и номенклатура видов защиты.
11. Создание благоприятных условий труда пользователей ЭВМ, работающих с дисплеями на информационно-вычислительных центрах. Методические рекомендации. Одобрены Постановлением Госкомтруда УССР 15.10.86 г. N 134.
12. Временные санитарные нормы и правила для работников вычислительных центров, утв. Гл. госуд. сан. врачом СССР от 2.03.88 г. N 4559-88.
13. ГОСТ 12.2.032-78 ССБТ. Рабочее место при выполнении работ сидя.
14. ГОСТ 12.2.049-80 ССБТ. Оборудование производственное. Общие эргономические требования.
15. ГОСТ 21689-76 "Система" Человек-машина. "Кресло человека-оператора. Общие эргономические требования."
16. ГОСТ 12.1.005-88 ССБТ. Общие санитарно-гигиенические требования к воздуху рабочей зоны.
17. СНиП 11-4-79. Естественное и искусственное освещение. Нормы проектирования. Изменения, утвержденные Госстроем СССР от 4.12.1985 г. N 205.
18. ГОСТ 12.1.003-83 ССБТ. Шум. Общие требования безопасности.
19. Закон Украины “О пожарной безопасности” от 17.12.93.
20. Правила пожежної безпеки України. Затверджені: В.О. головного державного інспектора України з пожежного нагляду 14.06.95. Київ “ Укрархбудінформ” 1995
ПРИЛОЖЕНИЕ 1
Спецификация компонентов системы
Обозначение | Наименование | Примечание |
iap | АРМ АПП АК | Интерфейсная секция работы с оператором автоматических кабин |
iapbckg | Монитор АПП-РК | Модуль коммуникации с АПП-РК |
iapbckgsub | Монитор АПП-РК | Набор прцедур для модуля коммуникации с АПП-РК |
iaphand | АРМ АПП РК | Интерфейсная секция работы с оператором ручных кабин |
iaphandsub | АРМ АПП РК | Набор прцедур для интерфейсной секции работы с оператором ручных кабин |
iaphandinit | АРМ АПП РК | Модуль инициализация справочника услуг для ручных кабин |
iapmon | Стартер могитора АПП-РК | Модуль инициализации и запуска |
ПРИЛОЖЕНИЕ 2
Текст программы АРМ АПП АК
iap | |
iap | ;IAKoff;04:04 PM 6 Mar 1996 |
;Обслуживание АПП-РК | |
n %res,%,%NCAB,%OLDTRAPER,%BEEP,%LON,%LOFF | |
s %BEEP=$c(7)_$c(7)_$c(7)_$c(7)_$c(7)_$c(7)_$c(7)_$c(7) | |
s %=$c(30) s %OLDTRAPER=$ztrap | |
s $ztrap="ERROR^iap" | |
s %LON=0,%LOFF=0 | |
reinit | |
i $$INITAPP()=0 q | |
s %NCAB=$$INITCAB() | |
i %NCAB=0 s %res=$$^dp58msg(12,30,"Ошибка в определении кабин",1) q | |
i %NCAB>16 s %NCAB=16 | |
w /color(7,0) d ^dp58box(0,0,24,79,0,$c(177)) | |
w /color(0,7),/c(0,0),$zzr($$DAYNAME^dp58sys()_" "_$$FULLDATE^dp58sys(),80) | |
redraw | |
s %res=$$LIST^dp58Sel("^appstat(""CABLIST"",%i)","%i",0,1,78,%NCAB+1,"N",1,"DOUBLE","Опреатор : "_%APPSYS("NOM_OPER")_$c(30)_" N ЗАДАТОК ОСТАТОК ТАРИФ ВРЕМЯ КОД+ТЕЛЕФОН СОСТ."_$c(30)_"F3-Вкл. F4-Откл. F5-Кв. F6-Прткл. F8-Ручн.заказ. ESC-Выход","DrawCab^iap||OutCab^iap","KEYF3,KEYF4,KEYCRASH,KEYF5,KEYF6,KEYF8") | |
i $p(%res,$c(30),2)="KEYCRASH" d CRASH q | |
i $p(%res,$c(30),2)="KEYENTER" | |
i $p(%res,$c(30),2)="KEYF3" s %LON=$$OPENCAB(%LOFF) s %LOFF="" | |
i $p(%res,$c(30),2)="KEYF4" s %LOFF=$$CLOSECAB(%LON) s %LON="" | |
i $p(%res,$c(30),2)="KEYF5" s %LOFF=$$TICKETS(%LOFF) | |
i $p(%res,$c(30),2)="KEYF6" s %LOFF=$$HISTORY(%LOFF) | |
i $p(%res,$c(30),2)="KEYF8" d ^iaphand | |
i $p(%res,$c(30),2)="KEYESC" s ^appstat(1)="F" q | |
g redraw | |
DrawCab | |
n %s,I,P,%CAB | |
i %dpINDEX="DRAWFREE" w $j("",%dpSX) q | |
s %CAB=^appcab(%i) | |
s %s=$p(%CAB,$c(30),1) | |
s I=$s(%s=-1:7,%s=0:14,%s=1:0,%s=2:14,%s=3:14,%s=4:0,1:7) | |
s P=$s(%s=-1:0,%s=0:0,%s=1:15,%s=2:7,%s=3:0,%s=4:15,1:7) | |
w /color(I,P) | |
w " " | |
w $j(^appstat("CABLIST",%i),2)_" " | |
w /color($p(%dpCOLORS,",",7),$p(%dpCOLORS,",",8)) | |
w " ¦ " | |
i %LON=%i w /color(0,15) | |
w $p($zzc($p(%CAB,$c(30),3),18),".",1) | |
w /color($p(%dpCOLORS,",",7),$p(%dpCOLORS,",",8))," ¦ " | |
i %LOFF=%i w /color(0,15) | |
w $p($zzc($p(%CAB,$c(30),4),18),".",1) | |
w /color($p(%dpCOLORS,",",7),$p(%dpCOLORS,",",8)) | |
w " ¦ ",$p($zzc($p(%CAB,$c(30),6),12),".",1) | |
n %time | |
s %time=$p(%CAB,$c(30),14) | |
i %time=-1 s %time=$p(%CAB,$c(30),13) | |
e d | |
. s %time=$p($h,",",2)-%time | |
. s %s=%time\60 | |
. s %time=$zzj(%s,2)_":"_$zzj(%time#60,2) | |
w " ¦",$j(%time,5) | |
w "¦ ",$j($p(%CAB,$c(30),7)_"-"_$p(%CAB,$c(30),5),11) | |
s %s=$p(%CAB,$c(30),2) | |
w " ¦ ",$s(%s=0:"к",%s=1:"А",%s=2:"Р") | |
s %s=$p(%CAB,$c(30),15)+0 | |
w $s(%s=0:"..",%s=1:"..",%s=2:"--",1:"/\") | |
q | |
OutCab | |
i (^appstat("STATUS")="A") s %dpKEYCODE="KEYCRASH" | |
s %str=$$TIME^dp58sys() | |
w /c(80-$l(%str),0),/color(0,7),%str | |
i %dpKEYCODE="KEYNOPRESS" s %dpKEYCODE="KEYREDRAW" | |
i %dpKEYCODE="KEYDOWN" s %dpKEYCODE="KEYEND" | |
i %dpKEYCODE="KEYUP" s %dpKEYCODE="KEYHOME" | |
i %dpKEYCODE="KEYPAGEDOWN" s %dpKEYCODE="KEYEND" | |
i %dpKEYCODE="KEYPAGEUP" s %dpKEYCODE="KEYHOME" | |
q | |
; ----------------------------------------------------------- | |
INITCAB() | |
n %i,%n | |
s %i="",%n=0 | |
initcab1 | |
s %i=$o(^appstat("CABLIST",%i)) | |
i %i="" q %n | |
s %n=%n+1 | |
g initcab1 | |
; ----------------------------------------------------------- | |
INITAPP() | |
n %res,%ws | |
i $$tstjob^iapmon()'="" g initapp3 | |
w /color(14,0) | |
s %res=$$^dp58msg(12,30,"Запуск монитора",0.1) | |
s %res=$$run^iapmon | |
i %res=1 s %res=$$^dp58msg(12,30,"АПП не подключен"_%_"к вашей станции."_%_"Опишите в устаноквх на АПП",0) q 0 | |
i %res=2 s %res=$$^dp58msg(12,30,"Не верный номер устройства."_%_"Опишите в устаноквх на АПП",0) q 0 | |
h 3 | |
initapp2 | |
s %ws=10 | |
initapp1 | |
w /color(14,0) | |
s %res=$$^dp58msg(12,35,"Ожидание готовности монитора :"_%ws,0.1) h 1 | |
i ^appstat("STATUS")="A" s %res=$$^dp58msg(12,30,"Неполадки ! ! !"_%_"Авария АПП-РК"_%_"Сбросте АПП-РК"_%_"и попытайтесь еще раз.",0) q 0 | |
i ^appstat("STATUS")="H" s %res=$$^dp58msg(12,30,"Неполадки ! ! !"_%_"Сбросте АПП-РК"_%_"и попытайтесь еще раз.",0) q 0 | |
s %ws=%ws-1 i %ws=0 q 0 | |
i ^appstat("CMD")'="R" g initapp1 | |
initapp3 | |
i (^appstat(1)'="F") s %res=$$^dp58msg(12,30,"Второй лишний.",1) q 0 | |
s ^appstat(1)=%APPSYS("NOM_OPER") | |
s ^appstat(1,"NOM_OPER")=%APPSYS("NOM_OPER") | |
s ^appstat(1,"NOM_GOES")=%APPSYS("NOM_GOES") | |
s ^appstat(1,"NOM_MESS")=%APPSYS("NOM_MESS") | |
s ^appstat(1,"NOM_DENN")=%APPSYS("NOM_DENN") | |
s ^appstat(1,"NOM_SMEN")=%APPSYS("NOM_SMEN") | |
s ^appstat("USD_KURS")=%APPSYS("USD_KURS") | |
q 1 | |
; ----------------------------------------------------------- | |
CRASH | |
i $$^dp58msg(8,30,"А
В А Р И Я ! ! !"_%_"Нажмите
на задней панели
АПП-РК"_%_"маленькую
беленькую
кнопочку"_%_"и
затем нажмите
на клавиатуре
|
|
s ^appstat(1)="F" | |
q | |
; ----------------------------------------------------------- | |
OPENCAB(%cab) | |
n %forma,%res | |
i (^appstat("STATUS")="A")!(^appstat("STATUS")="H") s %res=$$^dp58msg(12,35,"АВАРИЙНАЯ СИТУАЦИЯ !"_$c(30)_"ВКЛЮЧАТЬ КАБИНЫ НЕЛЬЗЯ.",0) q %cab | |
i $g(%cab)'="" s %forma("CABNUM")=$g(^appstat("CABLIST",%cab)) | |
s %forma("SUMMA")=0 | |
d drscr^uf58("iap!OPEN") | |
i $$get^uf58("iap!OPEN","%forma")="ESC" q %cab | |
s %cab=$$phys(%forma("CABNUM")) | |
i (^appcab(%cab).2=2) d ^AppOnRk58(%cab,"ON") q %cab | |
d cabon(%cab,%forma("SUMMA")) | |
q %cab | |
OutOPCN() | |
n %res,%cab | |
s %cab=$$phys($p(%ufNEWDATA,$c(30),1)) | |
i $p(%ufNEWDATA,$c(30),2)="KEYESC" q %ufNEWDATA | |
i $g(^appcab(%cab))="" s %res="Неверный номер кабины !" g OPCN1 | |
i ^appcab(%cab).1=-1 s %res="Кабина на ремонте !" g OPCN1 | |
i ^appcab(%cab).1=1 s %res="Кабина занята !" g OPCN1 | |
i ^appcab(%cab).1=2 s %res="В кабине остаток !" g OPCN1 | |
q %ufNEWDATA | |
OPCN1 | |
s %res=$$^dp58msg(3,35,%res,0) | |
d drscr^uf58("iap!OPEN") | |
d redraw^uf58("iap!OPEN","%forma") | |
q "PROBLEM" | |
InOPSM() | |
n %cab | |
s %cab=$$phys($p(%ufNEWDATA,$c(30),1)) | |
i (^appcab(%cab).2=2) q "FIELDOFF" | |
q %ufOLDDATA | |
; ----------------------------------------------------------- | |
CLOSECAB(%cab) | |
n %forma,%res | |
i $g(%cab)'="" s %forma("CABNUM")=$g(^appstat("CABLIST",%cab)) | |
d drscr^uf58("iap!CLOSE") | |
i $$get^uf58("iap!CLOSE","%forma")="ESC" q %cab | |
s %cab=$$phys(%forma("CABNUM")) | |
i (^appcab(%cab).2=2) d ^AppOnRk58(%cab,"OFF") q %cab | |
d caboff(%cab) | |
q %cab | |
OutCLCN() | |
n %res,%cab | |
s %cab=$$phys($p(%ufNEWDATA,$c(30),1)) | |
i $p(%ufNEWDATA,$c(30),2)="KEYESC" q %ufNEWDATA | |
i $g(^appcab(%cab))="" s %res="Неверный номер кабины !" g CLCN1 | |
i ^appcab(%cab).1=-1 s %res="Кабина на ремонте !" g CLCN1 | |
i ^appcab(%cab).1=0 s %res="Кабина свободна !" g CLCN1 | |
q %ufNEWDATA | |
CLCN1 | |
s %res=$$^dp58msg(3,35,%res,0) | |
d drscr^uf58("iap!CLOSE") | |
d redraw^uf58("iap!CLOSE","%forma") | |
q "PROBLEM" | |
; ----------------------------------------------------------- | |
phys(%l) | |
n %i | |
s %i="" | |
phys1 | |
s %i=$o(^appstat("CABLIST",%i)) | |
i %i="" q 0 | |
i %l=^appstat("CABLIST",%i) q %i | |
g phys1 | |
; ----------------------------------------------------------- | |
cabon(%numcab,%zadat) | |
k ^appticket(%numcab) | |
n %hl | |
s %hl="1" i %numcab>16 s %hl="2" | |
s %cmd="B"_%numcab_" "_%zadat | |
cabon1 | |
i ^appstat("CMD")'="R" g cabon1 | |
s ^appstat("CMD")="WRQ"_%hl | |
i ^appstat("CMD")="WEN"_%hl g cabon3 | |
i ^appstat("CMD")="R" g cabon1 | |
cabon3 | |
s ^appstat("CMD","COM")=%cmd | |
s ^appstat("CMD")="WAC"_%hl | |
q | |
; ----------------------------------------------------------- | |
caboff(%numcab) | |
n %hl,%kk | |
s %hl="1" i %numcab>16 s %hl="2" | |
i ^appstat("STATUS")="A" g caboff6 | |
s %cmd="O"_%numcab | |
caboff1 | |
i ^appstat("CMD")'="R" g caboff1 | |
s ^appstat("CMD")="WRQ"_%hl | |
i ^appstat("CMD")="WEN"_%hl g caboff3 | |
i ^appstat("CMD")="R" g caboff1 | |
caboff3 | |
s ^appstat("CMD","COM")=%cmd | |
s ^appstat("CMD")="WAC"_%hl | |
caboff4 | |
r *%kk:0.1 i %kk'=-1 g caboff5 | |
caboff6 | |
i (^appcab(%numcab).1'=0)&(^appcab(%numcab).1'=2)&(^appcab(%numcab).1'=1) g caboff4 | |
caboff5 | |
q | |
; ----------------------------------------------------------- | |
TICKETS(%cab) | |
n %forma,%res,%sel,%sid,%id | |
i $g(%cab)="" s %cab=0 | |
s %forma("CABNUM")=$g(^appstat("CABLIST",%cab)) | |
d drscr^uf58("iap!TICKET") | |
i $$get^uf58("iap!TICKET","%forma")="ESC" q %cab | |
s %cab=$$phys(%forma("CABNUM")) | |
s %id="" f d s %id=$o(^appticket(%cab,%id)) s:%id'="" %sel(%id)=%id q:%id="" | |
i (^appcab(%cab).2=2) q %cab ; ПЕЧАТЬ КВИТАНЦИЙ ПО РУЧНОЙ КАБИНЕ | |
tickets1 | |
s
%res=$$SELECT^dp58Sel("^appticket(%cab,%id)","%id","%sel(%sid)","%sid",10,12,61,9,"",0,"SINGLE","Квитанции
по кабине N
"_%cab_$c(30)_"ПРОД. КОД
ГОРОД РЕГИОН
ТЕЛЕФОН СУММА
"_$c(30)_"-ОТМЕТКА
|
|
i $p(%res,$c(30),2)="KEYESC" q %cab | |
i $p(%res,$c(30),2)="KEYF4" d TICKPRINT q %cab | |
g tickets1 | |
DrawTicket | |
i %dpINDEX="DRAWFREE" w $j("",%dpSX) q | |
w $j($p(^appticket(%cab,%id),$c(30),3),5)_" " | |
w $j($p(^appticket(%cab,%id),$c(30),4),3)_" " | |
w $j($p(^appticket(%cab,%id),$c(30),5),12)_" " | |
w $j($p(^appticket(%cab,%id),$c(30),8),14)_" " | |
w $j($p(^appticket(%cab,%id),$c(30),6),10)_" " | |
w $zzc($p(^appticket(%cab,%id),$c(30),7),12,2) | |
q | |
OutTCCN() | |
n %res,%cab | |
s %cab=$$phys($p(%ufNEWDATA,$c(30),1)) | |
i $p(%ufNEWDATA,$c(30),2)="KEYESC" q %ufNEWDATA | |
i $g(^appcab(%cab))="" s %res="Неверный номер кабины !" g TCCN1 | |
i ^appcab(%cab).1=-1 s %res="Кабина на ремонте !" g TCCN1 | |
i ^appcab(%cab).1=1 s %res="Кабина занята !" g TCCN1 | |
i $d(^appticket(%cab))=0 s %res="Нет квитанции !" g TCCN1 | |
i ^appcab(%cab).1=2 s %res="В кабине остаток !" g TCCN1 | |
q %ufNEWDATA | |
TCCN1 | |
s %res=$$^dp58msg(3,35,%res,0) | |
d drscr^uf58("iap!TICKET") | |
d redraw^uf58("iap!TICKET","%forma") | |
q "PROBLEM" | |
; ----------------------------------------------------------- | |
TICKPRINT | |
n %KVIT,%sid | |
s %sid=$o(%sel("")) i %sid="" q | |
tickprn1 | |
i $g(%sel(%sid))=0 g tickprn3 | |
s %KVIT(%sid)=<9,$p(^appticket(%cab,%sid),%,7),$p(^appticket(%cab,%sid),%,4)_"-"_$p(^appticket(%cab,%sid),%,6)_" "_$p(^appticket(%cab,%sid),%,3)> |
|
tickprn3 | |
s %sid=$o(%sel(%sid)) i %sid'="" g tickprn1 | |
d PrintKvit^AppSysd | |
q | |
; ----------------------------------------------------------- | |
HISTORY(%cab) | ;IAKoff;10:34 PM 26 Aug 1995; |
n %ll,%ee,%id | |
i $g(%cab)="" s %cab=0 | |
s %forma("CABNUM")=$g(^appstat("CABLIST",%cab)) | |
d drscr^uf58("iap!HISTORY") | |
i $$get^uf58("iap!HISTORY","%forma")="ESC" q %cab | |
s %cab=$$phys(%forma("CABNUM")) | |
s %ee="C"_%cab | |
i $d(^appjrn(%ee))=0 g ihlp1 | |
s %ll="^appjrn(%ee,%id)" s %id="" s %id=$o(^appjrn(%ee,%id),-1) | |
s %rr=$$LIST^dp58Sel(%ll,"%id",1,10,76,12,"",0,"DOUBLE"," Журнал ","DrawHist^iap") | |
ihlp1 | |
q %cab | |
OutHSCN() | |
n %res,%cab | |
s %cab=$$phys($p(%ufNEWDATA,$c(30),1)) | |
i $p(%ufNEWDATA,$c(30),2)="KEYESC" q %ufNEWDATA | |
i $g(^appcab(%cab))="" s %res="Неверный номер кабины !" g HSCN1 | |
i ^appcab(%cab).1=-1 s %res="Кабина на ремонте !" g HSCN1 | |
q %ufNEWDATA | |
HSCN1 | |
s %res=$$^dp58msg(3,35,%res,0) | |
d drscr^uf58("iap!HISTORY") | |
d redraw^uf58("iap!HISTORY","%forma") | |
q "PROBLEM" | |
DrawHist | |
n %rrr,%time,%date | |
i %dpINDEX="DRAWFREE" w $j("",%dpSX) q | |
s %rrr=^appjrn(%ee,%id,"MSG") | |
s %time=$j($p(^appjrn(%ee,%id,"TIME"),$c(30),1),8) | |
s %date=$j($p(^appjrn(%ee,%id,"TIME"),$c(30),2),5) | |
i $p(%rrr," ",1)="ON" g drwh1 | |
i $p(%rrr," ",1)="OFF" g drwh2 | |
i $p(%rrr," ",1)="BBB" g drwh3 | |
i $p(%rrr," ",1)="EEE" g drwh4 | |
i $p(%rrr," ",1)="AAA" g drwh5 | |
w $zzr(%rrr,61)_%time_" "_%date_" " q | |
drwh1 | |
w $zzr("Вкл. "_$p(%rrr," ",2),61)_%time_" "_%date_" " q | |
drwh2 | |
w $zzr("Выкл. "_$p(%rrr," ",2),61)_%time_" "_%date_" " q | |
drwh3 | |
w $zzr("Нач. разг. тариф:"_$p(%rrr," ",4)_" тел:"_$p(%rrr," ",6),61)_%time_" "_%date_" " q | |
drwh4 | |
w $zzr("Кон. разг. время:"_$p(%rrr," ",3)_" сумма:"_$p(%rrr," ",5),61)_%time_" "_%date_" " | |
q | |
drwh5 | |
w $zzr("Авар. зав. время:"_$p(%rrr," ",3)_" сумма:"_$p(%rrr," ",5),61)_%time_" "_%date_" " | |
q | |
; ----------------------------------------------------------- | |
ERROR | |
s $ztrap=%OLDTRAPER | |
s ^appstat(1)="F" | |
g @$ztrap |
ПРИЛОЖЕНИЕ 3
Текст программы монитора АПП-РК
iapbckg | |
iapbckg(%an) | ;IAKoff;03:44 PM 6 Mar 1996 |
n %cc,%free,%zone,%cmd,%i,%summ,%tsec,%tmin,%min,%hour,%sec,%cod,%idev | |
n %cabspis,%to,%hl,%SHARE,%noper,%nsmen | |
s %SHARE=$$SHARE^AppSyst() | |
s $zp=$c(30) s $ztrap="errhndr^iapbckgsub" | |
s ^appstat("CMD")="WAIT" | |
s ^appstat("STATUS")="INIT" | |
o %an u %an:(ixxlate=0:speed=2400:parity="none":stopbits=1) | |
d addjrn^iapbckgsub("APPRK","Запуск Апп монитор","") | |
w "E*" | |
k ^appzxcab | |
k ^appcab | |
f %i=1:1:32 d | |
. s ^appcab(%i)="-1"_$zp_"0"_$zp_"00.00"_$zp_"00.00"_$zp_""_$zp | |
. s ^appcab(%i)=^appcab(%i)_"00.00"_$zp_""_$zp_"0"_$zp_"0"_$zp | |
. s ^appcab(%i)=^appcab(%i)_"0"_$zp_"0"_$zp_"0"_$zp_"00.00"_$zp | |
. s ^appcab(%i)=^appcab(%i)_"-1"_$zp_"0" | |
. w "O"_%i_"*" | |
. f %zone=0:1:20 s ^appcab(%i,%zone)="0"_$zp_"0" | |
. f %zone=128:1:148 s ^appcab(%i,%zone)="0"_$zp_"0" | |
s %ws=0 | |
freecab | ; получить список кабин |
s %ws=%ws+1 | |
i %ws=20 g thlt | |
s ^appstat("STATUS")="CAB OFF" | |
w "I*" | |
s ^appstat("STATUS")="LIST" | |
w "S*" | |
s %free=$$gres^iapbckgsub() i %free="HALT" g thlt | |
i %free="TIME" g thlt | |
s %i=1 | |
ncab | |
s %cmd=$p(%free," ",%i+1) | |
s %cc=$e(%cmd,1,2)+0 | |
s %cod=$e(%cmd,3,3) | |
i %cmd="" g lastcab | |
i (%cc>32)!(%cc<1) d addjrn^iapbckgsub("APPRK","InitError Cab",%free) g freecab |
|
i (%cod'="A")&(%cod'="P") d addjrn^iapbckgsub("APPRK","InitError Stat",%free) g freecab | |
s %cabspis(%i)=%cc | |
s ^appcab(%cc).1=0 | |
s ^appcab(%cc).2=2 i %cod="A" s ^appcab(%cc).2=1 | |
s %i=%i+1 | |
g ncab | |
lastcab | |
; --------------------------- | |
; Загрузка системных установок | |
s ^appstat("STATUS")="SETUP" | |
w "P"_^appstat("SETUP")_"*" | |
; --------------------------- | |
; Загрузка тарифов по СНГ | |
LoadTarif | |
s ^appstat("STATUS")="TARIF" | |
i $d(^appstat("TARIF","AUTO8"))=0 g nosngtarif | |
s %zone="" s %cmd="" | |
nx1tarif | |
s %zone=$o(^appstat("TARIF","AUTO8",%zone)) | |
i %zone="" g ldtarif1 | |
s %sec=$p(^appstat("TARIF","AUTO8",%zone),$c(30),%SHARE+1) | |
i %sec<20 s %sec=%sec*^AppSys58("USD_KURS") |
|
s %cmd=%cmd_$$dec2hex^iapbckgsub(%sec) g nx1tarif | |
ldtarif1 | |
w "L"_$c($l(%cmd))_$c(0)_%cmd_"*" | |
; Загрузка международных тарифов | |
nosngtarif | |
i $d(^appstat("TARIF","AUTO810"))=0 g nofgrtarif | |
s %zone="" s %cmd="" | |
nx2tarif | |
s %zone=$o(^appstat("TARIF","AUTO810",%zone)) | |
i %zone="" g ldtarif2 | |
s %sec=$p(^appstat("TARIF","AUTO810",%zone),$c(30),%SHARE+1) | |
i %sec<20 s %sec=%sec*^AppSys58("USD_KURS") |
|
s %cmd=%cmd_$$dec2hex^iapbckgsub(%sec) g nx2tarif | |
ldtarif2 | |
w "L"_$c($l(%cmd))_$c(255)_%cmd_"*" | |
nofgrtarif | |
s ^appstat("CMD")="R" | |
s %to=0 | |
mainloop | |
i %SHARE'=$$SHARE^AppSyst() s %SHARE=$$SHARE^AppSyst() g LoadTarif | |
s ^appstat("STATUS")="GET" | |
s %free=$$gres^iapbckgsub() | |
s ^appstat("STATUS")="SEL" | |
i %free="HALT" g thlt | |
i %free="TIME" g inerror | |
i $$instat^iapbckgsub($p(%free," ",1))="B" s %to=0 g talkbeg | |
i $$instat^iapbckgsub($p(%free," ",1))="E" s %to=0 g talkend | |
i $$instat^iapbckgsub($p(%free," ",1))="L" g life | |
d addjrn^iapbckgsub("APPRK","Unknown command",%free) | |
g mainloop | |
life | |
s %to=%to+1 | |
s ^appstat("STATUS")="L" | |
s %i=1 | |
lf1 | |
s %cmd=$p(%free," ",%i+1) | |
i %cmd="" g lf3 | |
s %cod=$e(%cmd,3,4)+0 | |
i $d(%cabspis(%i))=0 d addjrn^iapbckgsub("APPRK","Unknown Life",%free) g mainloop | |
s %cc=%cabspis(%i) | |
s ^appcab(%cc).15=%cod ; номер автомата | |
i ^appcab(%cc).2=1 g lfa | |
; Ручная кабина | |
i $e(%cmd,1,1)="B" s ^appcab(%cc).1=1 s %to=0 g lf2 | |
i ($e(%cmd,1,1))="F" w "B"_%cc_"*" d addjrn^iapbckgsub("C"_%cc,"ON") | |
; РУЧНЫЕ КАБИНЫ ВСЕГДА ВКЛЮЧЕНЫ | |
i ($e(%cmd,1,1)="F")&(^appcab(%cc).1=0) s ^appcab(%cc).1=0 g lf2 | |
i ($e(%cmd,1,1)="F")&(^appcab(%cc).1=1) s ^appcab(%cc).1=2 g lf2 | |
d addjrn^iapbckgsub("APPRK","US Cab"_%cc,%cmd) g lf2 | |
lfa | ; Автоматическая кабина |
i (^appcab(%cc).1'=0)!($e(%cmd,1,1)'="F") s %to=0 | |
i (^appcab(%cc).1=0)&($e(%cmd,1,1)="B") s ^appcab(%cc).1=1 g lf2 | |
i (^appcab(%cc).1=0)&($e(%cmd,1,1)="F") s ^appcab(%cc).1=0 g lf2 | |
i (^appcab(%cc).1=1)&($e(%cmd,1,1)="B") s ^appcab(%cc).1=1 g lf2 | |
i (^appcab(%cc).1=1)&($e(%cmd,1,1)="F") s ^appcab(%cc).1=2 g lf2 | |
i (^appcab(%cc).1=2)&($e(%cmd,1,1)="B") s ^appcab(%cc).1=1 g lf2 | |
i (^appcab(%cc).1=2)&($e(%cmd,1,1)="F") s ^appcab(%cc).1=2 g lf2 | |
i (^appcab(%cc).1=3)&($e(%cmd,1,1)="B") s ^appcab(%cc).1=3 g lf2 | |
i (^appcab(%cc).1=3)&($e(%cmd,1,1)="F") s ^appcab(%cc).1=0 g lf2 | |
i (^appcab(%cc).1=4)&($e(%cmd,1,1)="B") s ^appcab(%cc).1=1 g lf2 | |
i (^appcab(%cc).1=4)&($e(%cmd,1,1)="F") s ^appcab(%cc).1=4 g lf2 | |
i (^appcab(%cc).1=-1)&($e(%cmd,1,1)="B") s ^appcab(%cc).1=1 g lf2 | |
i (^appcab(%cc).1=-1)&($e(%cmd,1,1)="F") s ^appcab(%cc).1=0 g lf2 | |
d addjrn^iapbckgsub("APPRK","USS Cab"_%cc,$p(^appcab(%cc),$zp,1)_%cmd) | |
lf2 | |
s %i=%i+1 | |
g lf1 | |
lf3 | |
i %to>50 g timeout | |
g mainloop | |
talkbeg | |
s ^appstat("STATUS")="TB" | |
s %cc=$j($p(%free," ",2),1,0) | |
i (%cc>32)!(%cc<1) d addjrn^iapbckgsub("C99","Шо це таке ?",%free) g mainloop |
|
s %i=$j($p(%free," ",5),1,0) | |
s ^appcab(%cc).6=$p(%free," ",4) | |
i $p(^appcab(%cc),$c(30),2)=2 g tbegrk | |
s %tsec=$p(%free," ",6) | |
s ^appcab(%cc).5=$e(%tsec,4,$l(%tsec)) s ^appcab(%cc).7=$e(%tsec,1,3) | |
tbegrk | |
s ^appcab(%cc).1=1 | |
s %tsec=$p($h,",",2) ;---системное время в секундах | |
s ^appcab(%cc).14=%tsec ; фиксируем время начала разговора | |
d addjrn^iapbckgsub("C"_%cc,%free) | |
g mainloop | |
talkend | |
s ^appstat("STATUS")="TE" | |
s %cc=$j($p(%free," ",2),1,0) | |
i (%cc>32)!(%cc<1) d addjrn^iapbckgsub("C99","Шо це таке ?",%free) g mainloop |
|
s ^appcab(%cc).14=-1 | |
i $p(^appcab(%cc),$c(30),2)=1 g acabin | |
s ^appcab(%cc).4=$p(%free," ",3) | |
s ^appcab(%cc).1=2 | |
g mainloop | |
acabin | |
s %zone=$j($p(%free," ",6),1,0) | |
s %summ=$zzoo($p(%free," ",4)) | |
s ^appcab(%cc).4=$p(^appcab(%cc),$zp,4)-%summ | |
s ^appcab(%cc).8=^appcab(%cc).8+1 | |
s ^appcab(%cc).9=^appcab(%cc).9+1 | |
s ^appcab(%cc).10=^appcab(%cc).10+%summ | |
s ^appcab(%cc).11=%summ | |
s ^appcab(%cc).12=^appcab(%cc).12+%summ | |
s ^appcab(%cc).13=$p(%free," ",3) | |
i ($p(%free," ",5)+0)=0 s ^appcab(%cc).1=0 | |
d AFTERTE | |
s ^appcab(%cc).14=-1 | |
d addjrn^iapbckgsub("C"_%cc,%free) | |
g mainloop | |
; ------------------------------------ | |
inerror | |
d addjrn^iapbckgsub("APPRK","Авария АПП-РК.") | |
s %i=1 | |
ie1 | |
i $d(%cabspis(%i))=0 g ie2 | |
s %cc=%cabspis(%i) | |
i ^appcab(%cc).1=-1 g ie3 | |
i ^appcab(%cc).1=0 g ie3 | |
i ^appcab(%cc).1=2 g ie3 | |
i ^appcab(%cc).14=-1 s ^appcab(%cc).1=2 g ie3 | |
s %tsec=$p($h,",",2)-$p(^appcab(%cc),$zp,14) | |
s %tmin=%tsec\60 s %sec=$tr($j(%tsec#60,2)," ",0) | |
s %min=$e(%tmin#60+100,2,3) | |
s %tmin=%min+1 | |
i $p(^appcab(%cc),$c(30),2)=1 g ieac | |
s ^appcab(%cc).4=$j(%min,2)_"."_$j(%sec,2) | |
s ^appcab(%cc).1=0 | |
s ^appcab(%cc).14=-1 | |
d htalkend^iapbckgsub(%cc) | |
s %i=%i+1 | |
g ie1 | |
ieac | |
s %zone=3 | |
s %summ=$p(^appcab(%cc),$zp,4) | |
i (%tmin*$p(^appcab(%cc),$zp,6))>$p(^appcab(%cc),$zp,4) g aie1 | |
s %summ=$zzoo($p(^appcab(%cc),$zp,6)*%tmin) | |
aie1 | |
s ^appcab(%cc).4=$p(^appcab(%cc),$zp,4)-%summ | |
s ^appcab(%cc).8=^appcab(%cc).8+1 | |
s ^appcab(%cc).9=^appcab(%cc).9+1 | |
s ^appcab(%cc).10=^appcab(%cc).10+%summ | |
s ^appcab(%cc).11=%summ | |
s ^appcab(%cc).12=^appcab(%cc).12+%summ | |
s ^appcab(%cc).13=$j(%min,2)_"."_$j(%sec,2) | |
s ^appcab(%cc).1=2 | |
i ^appcab(%cc).4=0 s ^appcab(%cc).1=0 | |
d addjrn^iapbckgsub("C"_%cc,"AAA "_%cc_" "_$p(^appcab(%cc),$zp,13)_" "_%summ_" "_$p(^appcab(%cc),$zp,4)_" UNKNOWN") | |
d AFTERTE | |
s ^appcab(%cc).14=-1 | |
ie3 | |
s %i=%i+1 | |
g ie1 | |
ie2 | |
s ^appstat("STATUS")="A" | |
g thlt1 | |
; ------------------------------------ | |
timeout | |
d addjrn^iapbckgsub("APPRK","Монитор остановлен.","Timeout") | |
s ^appstat("STATUS")="H" | |
; ------------------------------------ | |
thlt | |
d addjrn^iapbckgsub("APPRK","Монитор остановлен.","") | |
s ^appstat("STATUS")="H" | |
thlt1 | |
c %an | |
k %cc,%free,%zone,%cmd,%i,%summ,%tsec,%tmin,%min,%hour,%sec,%cod,%idev | |
q | |
; ---------------------------------- КОНЕЦ | |
AFTERTE | |
s %tsec=$p(^appcab(%cc),$c(30),14) | |
s %tmin=%tsec\60 ;---системное время в минутах | |
s %sec=$tr($j(%tsec#60,2)," ",0) ;---кол-во секунд | |
s %min=$e(%tmin#60+100,2,3) ;---кол-во минут | |
s %hour=%tmin\60+23#24+1 ;---кол-во часов | |
s %hour=$tr($j(%hour,2)," ",0) | |
; заполнение журнала ==================================== | |
i %zone=0 s ^appcab(%cc).5=$p(^appcab(%cc),$zp,7)_$p(^appcab(%cc),$zp,5) s ^appcab(%cc).7="ГОР" | |
i %zone>127 s ^appcab(%cc).7=$e($p(^appcab(%cc),$zp,7),3,3)_$e($p(^appcab(%cc),$zp,5),1,2) s ^appcab(%cc).5=$e($p(^appcab(%cc),$zp,5),3,11) | |
; заполнение квитанций ================================== | |
s ^appticket(%cc,$o(^appticket(%cc,""),-1)+1)=$zd_$zp_%hour_":"_%min_$zp_"0"_$zp_"КОД"_$zp_"ГОРОД"_$zp_"ТЕЛЕФОН"_$zp_"0000.00" | |
s ^appticket(%cc,$o(^appticket(%cc,""),-1)).3=^appcab(%cc).13 | |
s ^appticket(%cc,$o(^appticket(%cc,""),-1)).4=^appcab(%cc).7 | |
s %cmd="" | |
s %cod=$p(^appcab(%cc),$c(30),7) | |
i %zone>127 g COUNTRY | |
s %i=$e($p(^appcab(%cc),$c(30),5),1,3) | |
i $e(%cod,1,1)="2" s %i=$e(%cod,2,3) s %cod=^AppSys58("KOD_OBLS") | |
i $d(^app8DCAC(%cod))>0 s %cmd=$p(^app8DCAC(%cod),$c(30),2) | |
s ^appticket(%cc,$o(^appticket(%cc,""),-1)).8=$e(%cmd,1,14) | |
i $d(^app8DCAC(%cod,$e(%i,1,2)))>0 d | |
. s %cmd=^app8DCAC(%cod,$e(%i,1,2)) | |
s ^appticket(%cc,$o(^appticket(%cc,""),-1)).5=$e(%cmd,1,12) | |
g cntick | |
COUNTRY | |
s %i=%cod_$p(^appcab(%cc),$c(30),5) | |
s %cmd="" | |
cntry1 | |
i %i="" g cntry2 | |
i $g(^appDCAC(%i))="" s %i=$e(%i,1,$l(%i)-1) g cntry1 | |
s %cmd=$g(^appDCAC(%i)) | |
cntry2 | |
s ^appticket(%cc,$o(^appticket(%cc,""),-1)).5=$e($p(%cmd,$c(30),2),1,12) | |
s ^appticket(%cc,$o(^appticket(%cc,""),-1)).8=$e($p(%cmd,$c(30),1),1,14) | |
cntick | |
s ^appticket(%cc,$o(^appticket(%cc,""),-1)).6=^appcab(%cc).5 | |
s ^appticket(%cc,$o(^appticket(%cc,""),-1)).7=^appcab(%cc).11 | |
; заполнение реестра ======================================= | |
s %gs=^appstat(1,"NOM_GOES") s %ms=^appstat(1,"NOM_MESS") s %dn=^appstat(1,"NOM_DENN") | |
d inreestr^iapbckgsub(%summ,%zone) | |
s %noper=^appstat(1,"NOM_OPER") | |
s %nsmen=^appstat(1,"NOM_SMEN") | |
i $d(^ReestrApp(%gs,%ms,%dn,%noper,%nsmen,"ACAB",%cc))=0 s ^ReestrApp(%gs,%ms,%dn,%noper,%nsmen,"ACAB",%cc).1=%summ_$zp_1 g after1 | |
s ^ReestrApp(%gs,%ms,%dn,%noper,%nsmen,"ACAB",%cc).1=$p(^ReestrApp(%gs,%ms,%dn,%noper,%nsmen,"ACAB",%cc),$zp,1)+%summ | |
s ^ReestrApp(%gs,%ms,%dn,%noper,%nsmen,"ACAB",%cc).2=$p(^ReestrApp(%gs,%ms,%dn,%noper,%nsmen,"ACAB",%cc),$zp,2)+1 | |
after1 | |
i $d(^ReestrApp(%gs,%ms,%dn,%noper,%nsmen,"AZONE",%zone))=0 s ^ReestrApp(%gs,%ms,%dn,%noper,%nsmen,"AZONE",%zone).1=%summ_$zp_1 g after2 | |
s ^ReestrApp(%gs,%ms,%dn,%noper,%nsmen,"AZONE",%zone).1=$p(^ReestrApp(%gs,%ms,%dn,%noper,%nsmen,"AZONE",%zone),$zp,1)+%summ | |
s ^ReestrApp(%gs,%ms,%dn,%noper,%nsmen,"AZONE",%zone).2=$p(^ReestrApp(%gs,%ms,%dn,%noper,%nsmen,"AZONE",%zone),$zp,2)+1 | |
after2 | |
q | |
; IAKoff Save, %n, 05/06/96 | |
iapbckgsub | |
iapbckgsub | ;IAKoff;09:47 PM 28 Feb 1996 |
q | |
instat(%s) | |
n %res | |
i $l(%s)>3 s %res="?" g ins1 | |
i ($l(%s)<2) g ins2 |
|
i ($e(%s,1,1)=$e(%s,2,2)) s %res=$e(%s,2,2) g ins1 | |
i ($l(%s)<3) g ins2 |
|
i ($e(%s,1,1)=$e(%s,3,3)) s %res=$e(%s,1,1) g ins1 | |
i ($e(%s,2,2)=$e(%s,3,3)) s %res=$e(%s,2,2) g ins1 | |
ins2 | |
i "EBSL"[$e(%s,1,1) s %res=$e(%s,1,1) g ins1 | |
i ($l(%s)<2) s %res="?" g ins1 |
|
i "EBSL"[$e(%s,2,2) s %res=$e(%s,2,2) g ins1 | |
i "EBSL"[$e(%s,3,3) s %res=$e(%s,3,3) g ins1 | |
s %res="?" | |
ins1 | |
q %res | |
; ------------------------------------ | |
gres() | ; получить строку от АПП |
i $$CHECK^dp58ups()="S" q "TIME" | |
n %res,%cc,%cnt | |
s %res="" s %cnt=0 | |
nxtchr | |
r *%cc:1 i %cc'=-1 g getchr | |
i (^appstat("CMD")'="R")&(^appstat("CMD")'="WAIT") g ghlt | |
s %cnt=%cnt+1 | |
i %cnt=10 w "V*" | |
i %cnt<20 g nxtchr |
|
s %res="TIME" g gend | |
getchr | |
i $c(%cc)'="*" s %res=%res_$c(%cc) g nxtchr | |
g gend | |
ghlt | |
i ^appstat("CMD")="H" s %res="HALT" g gend | |
i $e(^appstat("CMD"),1,3)'="WRQ" g mbewac | |
s ^appstat("CMD")="WEN"_$e(^appstat("CMD"),4,4) g nxtchr | |
mbewac | |
i $e(^appstat("CMD"),1,3)'="WAC" g oprcmderr | |
w ^appstat("CMD","COM")_"*" | |
s %to=0 | |
d addjrn("OPER","Приход",^appstat("CMD","COM")) | |
s %cc=$e(^appstat("CMD","COM"),2,3)+0 | |
i $e(^appstat("CMD","COM"),1,1)="B" d | |
. d addjrn("C"_%cc,"ON "_$p(^appstat("CMD","COM")," ",2)) | |
. i ^appcab(%cc).2=1 d | |
. . s ^appcab(%cc).3=$p(^appstat("CMD","COM")," ",2) | |
. . s ^appcab(%cc).4=$p(^appstat("CMD","COM")," ",2) | |
. . s ^appcab(%cc).6=0 | |
. . s ^appcab(%cc).7="" | |
. . s ^appcab(%cc).8=0 | |
. . s ^appcab(%cc).10=0 | |
. . s ^appcab(%cc).11=0 | |
. . s ^appcab(%cc).13=0 | |
. . s ^appcab(%cc).1=1 | |
. i ^appcab(%cc).2=2 d | |
. . s ^appcab(%cc).1=1 | |
. . s ^appcab(%cc).3=$p(^appstat("CMD","COM")," ",2) | |
. . s ^appcab(%cc).4="" | |
. . s ^appcab(%cc).6=0 | |
. . s ^appcab(%cc).7="" | |
. . s ^appcab(%cc).8=0 | |
. . s ^appcab(%cc).10=0 | |
. . s ^appcab(%cc).11=0 | |
. . s ^appcab(%cc).13=0 | |
i $e(^appstat("CMD","COM"),1,1)="O" d | |
. d addjrn("C"_%cc,"OFF "_$p(^appcab(%cc),$zp,4)) | |
. s ^appcab(%cc).14=-1 | |
. i ^appcab(%cc).2=1 d | |
. . s ^appcab(%cc).1=3 | |
. . s ^appzxcab(%cc)=^appcab(%cc) | |
. i ^appcab(%cc).2=2 d | |
. . i ^appcab(%cc).1=1 s ^appcab(%cc).4=0 d ^iaphcabbckg(%cc) | |
. . s ^appcab(%cc).1=0 | |
. . s ^appcab(%cc).5="СВОБ" | |
s ^appstat("CMD")="R" | |
w "V*" ; жизненный тик-так | |
g nxtchr | |
oprcmderr | |
d addjrn("OPER","Unknown command",^appstat("CMD")) | |
g nxtchr | |
gend | |
q %res | |
; ----------------------------------- | |
dec2hex(%dec) | ; Конвертор из десятичного числа в 5 байт для АПП |
n %hex,%kop,%hh,%hl,%lh,%ll,%al | |
s %hh=%dec\16777216 | |
s %hl=(%dec-(%hh*16777216))\65536 | |
s %lh=(%dec-(%hh*16777216)-(%hl*65536))\256 | |
s %ll=(%dec-(%hh*16777216)-(%hl*65536)-(%lh*256))\1 | |
s %al=(%dec-(%dec\1)*100)\1 | |
s %hex=$c(%al,%ll,%lh,%hl,%hh) | |
q %hex | |
; ---------------------------------- | |
errhndr | |
n %ei,%iiii | |
s %ei=$zzerr | |
d addjrn("ERROR",$zename($p(%ei,",",1)),$$GetDTQ^AppSys()) | |
d init^%errlog | |
g inerror^iapbckg | |
; ---------------------------------- | |
inreestr(%increment,%z) | |
n %mess,%denn,%oper,%smen | |
s %mess=^appstat(1,"NOM_MESS") | |
s %denn=^appstat(1,"NOM_DENN") | |
s %oper=^appstat(1,"NOM_OPER") | |
s %smen=^appstat(1,"NOM_SMEN") | |
; ОБЩИЙ | |
l +^AppSmena | |
s ^AppSmena(%mess,%denn,%oper,%smen).6=$p(^AppSmena(%mess,%denn,%oper,%smen),$zp,6)+%increment | |
; ЧИСТО ВСЕ ПО АК | |
i %z=0 s ^AppSmena(%mess,%denn,%oper,%smen).30=$p(^AppSmena(%mess,%denn,%oper,%smen),$zp,30)+%increment g inree1 | |
i %z<128 s ^AppSmena(%mess,%denn,%oper,%smen).22=$p(^AppSmena(%mess,%denn,%oper,%smen),$zp,22)+%increment g inree1 |
|
s ^AppSmena(%mess,%denn,%oper,%smen).29=$p(^AppSmena(%mess,%denn,%oper,%smen),$zp,29)+%increment | |
inree1 | |
l -^AppSmena | |
q | |
; ------------------------------------ | |
addjrn(%ind,%txt,%res) | |
n %id | |
s %id=$o(^appjrn(%ind,""),-1)+1 | |
s ^appjrn(%ind,%id,"MSG")=$g(%txt) | |
s ^appjrn(%ind,%id,"RES")=$g(%res) | |
s ^appjrn(%ind,%id,"TIME")=$$GetDTQ^AppSys | |
k ^appjrn(%ind,%id-200) | |
q | |
; ---------------------------------- |
ПРИЛОЖЕНИЕ 4
Текст программы АРМ АПП РК
; IAKoff Save, %n, 05/06/96 | |
iaphand | |
iaphand | ;IAKoff;12:49 PM 2 Mar 1996 |
n %T,%DEMO | |
s %DEMO="DEMO VERSION FOR DOORS" | |
l +^ReestrIndRK:1 | |
s %T=$TEST | |
i %T=0 l -^ReestrIndRK q | |
d ^iaphandinit | |
d ORDERLIST^iaphandsub | |
l -^ReestrIndRK | |
q | |
; ----------------------------------------------------------- | |
ADDORDER(%nord) | |
n %f,%addtime,%zone,%tarif,%tarif1,%notify,%key,%ef,%DDDD,%HHHH | |
n %month,%ltarif | |
s %ltarif=0 | |
s %DDDD=$p($h,",",1) | |
s %HHHH=$p($h,",",2) | |
s %f("FAST")=0 s %f("TOTAL")=0 s %f("TIME")=3 | |
i $g(%nord)="" g add | |
i $p(^appstat("ORDERS",%nord),$c(30),20)'="" g VIEWORDER | |
d str2frm^uf58("%f",^appstat("ORDERS",%nord),$c(30),"iap!HORD") | |
s %notify=$p(^appstat("ORDERS",%nord),$c(30),18) | |
s %ef=1 | |
g edd | |
add | |
s %ef=0 | |
s %key=$$^dp58dlg(10,30,15,50,"ОФОРМЛЕНИЕ ЗАКАЗА","ТЕКУЩИЙ"_%_"УВЕДОМЛЕНИЕ","",2,"","VC") i $p(%key,%,2)="KEYESC" q | |
s %notify=$p(%key,%,1)-1 | |
s %nord=$g(^appstat("LASTORDER"))+1 | |
s %month=$g(^appstat("LASTORDER","MONTH")) | |
i ($p($zdate,"/",1)+0)'=%month s %nord=1 s %month=($p($zdate,"/",1)+0) | |
edd | |
d drscr^uf58($s(%notify=0:"iap!HORD",%notify=1:"iap!NORD")) | |
w /color(7,0),/c(20,3),$j(%nord,3) | |
i $$get^uf58($s(%notify=0:"iap!HORD",%notify=1:"iap!NORD"),"%f")="ESC" q | |
s %f("X")=%addtime,%f("Y")=%tarif,%f("Z")=%zone,%f("ZZ")=%notify | |
s ^appstat("ORDERS",%nord)=$$frm2str^uf58("%f",%)_%_$h_%_""_%_%APPSYS("NOM_OPER") | |
s $p(^appstat("ORDERS",%nord),$c(30),25)=%ltarif | |
i %ef=0 s ^appstat("LASTORDER")=%nord s ^appstat("LASTORDER","MONTH")=%month | |
q | |
; ----------------------------------------------------------- | |
VIEWORDER | |
d str2frm^uf58("%f",^appstat("ORDERS",%nord),$c(30),"iap!HORD") | |
s %notify=$p(^appstat("ORDERS",%nord),$c(30),18) | |
s %tarif1=$p(^appstat("ORDERS",%nord),$c(30),16) | |
s %addtime=$p(^appstat("ORDERS",%nord),$c(30),15) | |
d drscr^uf58($s(%notify=0:"iap!HORD",%notify=1:"iap!NORD",%notify=2:"iap!FORD")) | |
w /color(7,0),/c(20,3),$j(%nord,3) | |
d redraw^uf58($s(%notify=0:"iap!HORD",%notify=1:"iap!NORD",%notify=2:"iap!FORD"),"%f") | |
w /c(57,5),/color(7,0),$zzc(%tarif1,13) | |
w /color(7,0),/c(38,10),$j(%addtime,3) | |
w /color(7,0),/c(26,3),"Оператор МТТС : "_$j($p(^appstat("ORDERS",%nord),$c(30),24),3) | |
vo1 | |
s %key=$$RKey^uf58() i %key="KEYNOPRESS" g vo1 | |
q | |
; ----------------------------------------------------------- | |
OutCOUNTRY() | |
i $p(%ufNEWDATA,$c(30),2)="KEYESC" q %ufNEWDATA | |
i $p(%ufNEWDATA,$c(30),2)'="KEYENTER" q "PROBLEM" | |
i $p(%ufNEWDATA,$c(30),1)="" q "СНГ"_$c(30)_$p(%ufNEWDATA,$c(30),2) | |
i $p(%ufNEWDATA,$c(30),1)="СНГ" q %ufNEWDATA | |
n %id,%res | |
s %id=$p(%ufNEWDATA,$c(30),1) | |
i $d(^appACDC(%id))>0 q %ufNEWDATA | |
s %res=$$LIST^dp58Sel("^appACDC(%id)","%id",20,13,40,8,"",0,"SINGLE","","DrawCOUNTRY^iaphand") | |
i $p(%res,$c(30),2)="KEYESC" q "PROBLEM" | |
q %id_$c(30)_"KEYENTER" | |
DrawCOUNTRY | |
i %dpINDEX="DRAWFREE" w $j("",%dpSX) q | |
w $j(%id,%dpSX) q | |
OutSHTAT() | |
i $p(%ufNEWDATA,$c(30),2)="KEYESC" q $p(%ufNEWDATA,$c(30),1)_$c(30)_"KEYUP" | |
i $p(%ufNEWDATA,$c(30),2)'="KEYENTER" q "PROBLEM" | |
n %id,%id1,%res | |
s %id=$p(%ufNEWDATA,$c(30),1) | |
s %id1=%f("COUNTRY") i %id1="СНГ" g OutSHT1 | |
i %id="" g OutSHT0 | |
i $d(^appACDC(%id1,%id))>0 q %ufNEWDATA | |
OutSHT0 | |
s %res=$$LIST^dp58Sel("^appACDC(%id1,%id)","%id",20,13,40,8,"",0,"SINGLE","","DrawCOUNTRY^iaphand") | |
g OutSHT2 | |
OutSHT1 | |
i %id="" g OutSHT3 | |
i $d(^app8ACDC(%id))>0 q %ufNEWDATA | |
OutSHT3 | |
s %res=$$LIST^dp58Sel("^app8ACDC(%id)","%id",20,13,40,8,"",0,"SINGLE","","DrawCOUNTRY^iaphand") | |
OutSHT2 | |
i $p(%res,$c(30),2)="KEYESC" q "PROBLEM" | |
q %id_$c(30)_"KEYENTER" | |
InREGION() | |
s %f("REGION")="" | |
i %f("COUNTRY")'="СНГ" q "FIELDOFF" | |
q %ufOLDDATA | |
OutREGION() | |
i $p(%ufNEWDATA,$c(30),2)="KEYESC" q $p(%ufNEWDATA,$c(30),1)_$c(30)_"KEYUP" | |
i $p(%ufNEWDATA,$c(30),2)'="KEYENTER" q "PROBLEM" | |
n %id1,%id,%res | |
s %id1=%f("SHTAT") | |
s %id=$p(%ufNEWDATA,$c(30),1) | |
i %id="" q %ufNEWDATA | |
i $d(^app8ACDC(%id1,%id))>0 q %ufNEWDATA | |
s %res=$$LIST^dp58Sel("^app8ACDC(%id1,%id)","%id",20,13,40,8,"",0,"SINGLE","","DrawCOUNTRY^iaphand") | |
i $p(%res,$c(30),2)="KEYESC" q "PROBLEM" | |
q %id_$c(30)_"KEYENTER" | |
OutTARGET() | |
i $p(%ufNEWDATA,$c(30),2)="KEYESC" q $p(%ufNEWDATA,$c(30),1)_$c(30)_"KEYUP" | |
i $p(%ufNEWDATA,$c(30),2)'="KEYENTER" q "PROBLEM" | |
q %ufNEWDATA | |
InCODE() | |
i %f("COUNTRY")'="СНГ" q ^appACDC(%f("COUNTRY"),%f("SHTAT")) | |
i (^app8ACDC(%f("SHTAT"))=^AppSys58("KOD_OBLS"))&(%f("REGION")="") q 2 | |
i %f("REGION")="" q ^app8ACDC(%f("SHTAT")) | |
i ^app8ACDC(%f("SHTAT"))=^AppSys58("KOD_OBLS") q 2_^app8ACDC(%f("SHTAT"),%f("REGION")) | |
q ^app8ACDC(%f("SHTAT"))_^app8ACDC(%f("SHTAT"),%f("REGION")) | |
OutCODE() | |
i $p(%ufNEWDATA,$c(30),2)="KEYESC" q $p(%ufNEWDATA,$c(30),1)_$c(30)_"KEYUP" | |
i $p(%ufNEWDATA,$c(30),2)'="KEYENTER" q "PROBLEM" | |
i $l($p(%ufNEWDATA,$c(30),1))<3 q "PROBLEM" |
|
n %code s %code=$e($p(%ufNEWDATA,$c(30),1),1,3) | |
i %f("COUNTRY")="СНГ" g outcod | |
i $g(^appMGTRF(%code))="" s ^appMGTRF(%code)=3 | |
s %zone=^appMGTRF(%code) | |
i $g(^appstat("TARIF","HAND810",%zone))="" s ^appstat("TARIF","HAND810",%zone)=^appstat("TARIF","HAND810",3) | |
s %tarif1=$$NTARIF(^appstat("TARIF","HAND810",%zone)) | |
g outcod1 | |
outcod | |
i $e(%code,1,1)="2" s %code=^AppSys58("KOD_OBLS") | |
i $g(^app8MTRF(%code))="" s ^app8MTRF(%code)=3 | |
s %zone=^app8MTRF(%code) | |
i $g(^appstat("TARIF","HAND8",%zone))="" s ^appstat("TARIF","HAND8",%zone)=^appstat("TARIF","HAND8",3) | |
s %tarif1=$$NTARIF(^appstat("TARIF","HAND8",%zone)) | |
outcod1 | |
w /c(57,5),/color(7,0),$zzc(%tarif1,13) | |
q %ufNEWDATA | |
NTARIF(Str) | |
s %ltarif=$$SHARE^AppSyst(%DDDD,%HHHH) | |
s Str=$p(Str,$c(30),%ltarif+1) | |
i Str<20 s Str=Str*^AppSys58("USD_KURS") |
|
q Str | |
q %ufNEWDATA | |
InPH1() | |
i %notify s %f("PH1")="" q "FIELDOFF" | |
q %ufOLDDATA | |
OutPH1() | |
i %notify q $p(%ufNEWDATA,$c(30),1)_%_"KEYENTER" | |
i $p(%ufNEWDATA,$c(30),2)="KEYESC" q $p(%ufNEWDATA,$c(30),1)_$c(30)_"KEYUP" | |
i $p(%ufNEWDATA,$c(30),2)'="KEYENTER" q "PROBLEM" | |
;i $p(%ufNEWDATA,$c(30),1)="" q "PROBLEM" | |
q %ufNEWDATA | |
InDATE() | |
;n %dd s %dd=$$DATE^dp58sys() | |
;i %ufOLDDATA="" q $p(%dd,"/",1)_$p(%dd,"/",2)_$p(%dd,"/",3) | |
q %ufOLDDATA | |
OutDATE() | |
i $p(%ufNEWDATA,$c(30),2)="KEYESC" q $p(%ufNEWDATA,$c(30),1)_$c(30)_"KEYUP" | |
i $p(%ufNEWDATA,$c(30),2)'="KEYENTER" q "PROBLEM" | |
i $e($p(%ufNEWDATA,$c(30),1),5,6)="" s $p(%ufNEWDATA,$c(30),1)=$p(%ufNEWDATA,$c(30),1)_"96" | |
n %d s %d=$p(%ufNEWDATA,$c(30),1) | |
s %DDDD=$$DATE2SYS^dp58sys($e(%d,1,2)_"/"_$e(%d,3,4)_"/"_$e(%d,5,6)) | |
q %ufNEWDATA | |
InNTIME() | |
;n %dd s %dd=$$TIME^dp58sys() | |
;i %ufOLDDATA="" q $p(%dd,":",1)_$p(%dd,":",2) | |
q %ufOLDDATA | |
OutNTIME() | |
i $p(%ufNEWDATA,$c(30),2)="KEYESC" q $p(%ufNEWDATA,$c(30),1)_$c(30)_"KEYUP" | |
i $p(%ufNEWDATA,$c(30),2)'="KEYENTER" q "PROBLEM" | |
n %t s %t=$p(%ufNEWDATA,$c(30),1) | |
s %HHHH=$$TIME2SYS^dp58sys($e(%t,1,2)_":"_$e(%t,3,4)) | |
i %f("COUNTRY")="СНГ" s %tarif1=$$NTARIF(^appstat("TARIF","HAND8",%zone)) | |
i %f("COUNTRY")'="СНГ" s %tarif1=$$NTARIF(^appstat("TARIF","HAND810",%zone)) | |
w /c(57,5),/color(7,0),$zzc(%tarif1,13) | |
q %ufNEWDATA | |
InADDR() | |
q "" | |
OutADDR() | |
i $p(%ufNEWDATA,$c(30),2)="KEYESC" q $p(%ufNEWDATA,$c(30),1)_$c(30)_"KEYUP" | |
i $p(%ufNEWDATA,$c(30),2)'="KEYENTER" q "PROBLEM" | |
q %ufNEWDATA | |
InPH() | |
i %notify s %f(%ufII)="" q "FIELDOFF" | |
i %f("PH"_($e(%ufII,3,3)-1))="" s %f(%ufII)="" q "FIELDOFF" | |
q %ufOLDDATA | |
OutPH() | |
i %notify q ""_%_"KEYENTER" | |
i $p(%ufNEWDATA,$c(30),2)="KEYESC" q $p(%ufNEWDATA,$c(30),1)_$c(30)_"KEYUP" | |
i $p(%ufNEWDATA,$c(30),2)'="KEYENTER" q "PROBLEM" | |
q %ufNEWDATA | |
OutCALL() | |
i $p(%ufNEWDATA,$c(30),2)="KEYESC" q $p(%ufNEWDATA,$c(30),1)_$c(30)_"KEYUP" | |
i $p(%ufNEWDATA,$c(30),2)'="KEYENTER" q "PROBLEM" | |
i (%notify)&($p(%ufNEWDATA,$c(30),1)="") q "PROBLEM" | |
q %ufNEWDATA | |
OutTIME() | |
i $p(%ufNEWDATA,$c(30),2)="KEYESC" q $p(%ufNEWDATA,$c(30),1)_$c(30)_"KEYUP" | |
i $p(%ufNEWDATA,$c(30),2)'="KEYENTER" q "PROBLEM" | |
i ($p(%ufNEWDATA,$c(30),1)="")&(%f("PH1")="") g outime2 | |
i ($p(%ufNEWDATA,$c(30),1)+0)<3 q "PROBLEM" |
|
i ($p(%ufNEWDATA,$c(30),1)+0)>255 q "PROBLEM" | |
outime2 | |
s %addtime=0 | |
s %addtime=$p(^SpravUsl(61+%notify),%,4) | |
i %f("CALL")'="" s %addtime=%addtime+$p(^SpravUsl(61+%notify,31),%,4) | |
i %notify g outime1 | |
i %f("PH1")="" s %addtime=%addtime+$p(^SpravUsl(61,32),%,4) g outime1 | |
i %f("PH5")'="" s %addtime=%addtime+$p(^SpravUsl(61,35),%,4) g outime1 | |
i %f("PH4")'="" s %addtime=%addtime+$p(^SpravUsl(61,34),%,4) g outime1 | |
i %f("PH3")'="" s %addtime=%addtime+$p(^SpravUsl(61,33),%,4) g outime1 | |
outime1 | |
w /color(7,0),/c(38,10),$j(%addtime,3) | |
q %ufNEWDATA | |
OutFAST() | |
i $p(%ufNEWDATA,$c(30),2)="KEYESC" q $p(%ufNEWDATA,$c(30),1)_$c(30)_"KEYUP" | |
i $p(%ufNEWDATA,$c(30),2)'="KEYENTER" q "PROBLEM" | |
q %ufNEWDATA | |
InTOTAL() | |
n %summ | |
s %tarif=%tarif1*$p(^SpravUsl(61+%notify,10+%f("FAST")),%,4) | |
s %summ=%tarif*(%f("TIME")+%addtime) | |
w /c(57,5),/color(7,0),$zzc(%tarif,13) | |
q $zzoo(%summ) | |
OutTOTAL() | |
i $p(%ufNEWDATA,$c(30),2)="KEYESC" q $p(%ufNEWDATA,$c(30),1)_$c(30)_"KEYUP" | |
i $p(%ufNEWDATA,$c(30),2)'="KEYENTER" q "PROBLEM" | |
q %ufNEWDATA | |
AskPrint() | |
n %Ret | |
askdel | |
s %Ret=$$^dp58dlg(20,42,23,77,"ПОДТВЕРДИТЕ ПЕЧАТЬ"," Печатать "_%_" Не печатать ","",2,"7,0,7,0,0,7,7,0") | |
w /color(0,8) | |
d ^dp58box(20,42,23,77,0," ") | |
i $p(%Ret,%,2)="KEYENTER" q (2-%Ret) | |
i $p(%Ret,%,2)="KEYESC" q 0 | |
g askdel | |
; IAKoff Save, %n, 05/06/96 | |
iaphandsub | |
iaphandsub | ;IAKoff;02:41 PM 2 Mar 1996; |
q | |
SYSH() | q %APPSYS("NOM_OPER")_","_%APPSYS("NOM_SMEN")_","_%APPSYS("NOM_DENN")_","_%APPSYS("NOM_MESS") |
ORDERLIST | |
n %key,%title,%id | |
s %title="Nзк Опр "_$zzr("СТРАНА",7)_$zzr("ОБЛАСТЬ",8)_$zzr("РЕГИОН",7)_$zzr("НАС.ПУНКТ",10)_$zzr("ПРИНЯТ",9)_$zzr("ПЕРЕДАН",9)_$zzr("ЖДЕТ",6) | |
ordlist | |
s
%key=$$LIST^dp58Sel("^appstat(""ORDERS"",%id)","%id",2,3,65,8,"",0,"SINGLE","
Список заказов
"_%_$zzr(%title,58)_%_"F2-Принять
F4-Ред/Смтр F8-Снять
|
|
i $p(%key,%,2)="KEYESC" q | |
i $p(%key,%,2)="KEYF2" d ADDORDER^iaphand() g ordlist | |
i %id="" g ordlist | |
i $p(%key,%,2)="KEYF4" d ADDORDER^iaphand(%id) g ordlist | |
i ($p(%key,%,2)="KEYENTER")&($p(^appstat("ORDERS",%id),%,23)'="") d REST(%id) g ordlist | |
i ($p(%key,%,2)="KEYENTER")&($p(^appstat("ORDERS",%id),%,20)="") d SENT(%id) g ordlist | |
i $p(%key,%,2)="KEYENTER" d EXECUTE(%id) g ordlist | |
i $p(%key,%,2)="KEYF8" d ABORT(%id) g ordlist | |
g ordlist | |
DrawORDERS | |
i %dpINDEX="DRAWFREE" w $j("",%dpSX) q | |
i %id="" w $zzr(" НЕТ ЗАКАЗОВ ",%dpSX) q | |
w $zzr(%id,4) | |
w $zzr($e($p(^appstat("ORDERS",%id),%,21),1,3),4) | |
w $zzr($e($p(^appstat("ORDERS",%id),%,3),1,6),7) | |
w $zzr($e($p(^appstat("ORDERS",%id),%,11),1,7),8) | |
w $zzr($e($p(^appstat("ORDERS",%id),%,10),1,6),7) | |
w $zzr($e($p(^appstat("ORDERS",%id),%,12),1,9),10) | |
i $p(^appstat("ORDERS",%id),%,23)="" g drord3 | |
w "Остаток:"_$zzc($p(^appstat("ORDERS",%id),%,23),17) g drord2 | |
drord3 | |
i $p(^appstat("ORDERS",%id),%,18) g drord1 | |
w $$TIME^dp58sys($p($p(^appstat("ORDERS",%id),%,19),",",2))_" " | |
i $p(^appstat("ORDERS",%id),%,20)="" w "----- " | |
e w $$TIME^dp58sys($p($p(^appstat("ORDERS",%id),%,20),",",2))_" " | |
w $zzr(($p($h,",",2)-$p($p(^appstat("ORDERS",%id),%,19),",",2))\60,3)_"мин " | |
g drord2 | |
drord1 | |
n %d s %d=$p(^appstat("ORDERS",%id),$c(30),5) | |
w $j($e(%d,1,2)_"/"_$e(%d,3,4)_"/"_$e(%d,5,6),9) | |
s %d=$p(^appstat("ORDERS",%id),$c(30),6) w $j($e(%d,1,2)_":"_$e(%d,3,4),9) | |
w $j("",7) | |
drord2 | |
q | |
SENT(%nord) | |
n %key,%msg,%notify,%ord,%reestr,%fff | |
s %ord=^appstat("ORDERS",%nord) | |
s %notify=$p(%ord,%,18) | |
s %msg=%APPSYS("NOM_GOES")_"-му отд. связи"_% | |
i $p(%ord,%,4)=1 s %msg=%msg_"СРОЧНЫЙ"_% | |
s %msg=%msg_$p(%ord,%,3)_% | |
i %notify s %msg=%msg_$p(%ord,%,11)_% | |
i %notify s %msg=%msg_$p(%ord,%,10)_% | |
i %notify s %msg=%msg_$p(%ord,%,12)_% | |
i '%notify s %msg=%msg_"Код:"_$p(%ord,%,2)_% | |
i %notify s %msg=%msg_$tr($p(%ord,%,7)," ",%)_% | |
i %notify s %msg=%msg_"Дата:"_$p(%ord,%,5)_% | |
e s %msg=%msg_"Тел:"_$p(%ord,%,5)_% | |
i %notify s %msg=%msg_"Время:"_$p(%ord,%,6)_% | |
i '%notify f %key=6:1:9 i $p(%ord,%,%key)'="" s %msg=%msg_" или "_$p(%ord,%,%key)_% | |
i $p(%ord,%,1)'="" s %msg=%msg_"Пригласить "_$p(%ord,%,1)_% | |
s %msg=%msg_$p(%ord,%,13)_" минут"_% | |
s %key=$$^dp58dlg(3,20,5+$l(%msg,%),60,%msg,"ПЕРЕДАН"_%_"ОТКАЗ","",2,"","") | |
i $p(%key,$c(30),2)="KEYESC" q | |
i $p(%key,$c(30),1)=2 q | |
s %fff("NOPER")="" | |
d drscr^uf58("iap!HSENT") | |
i $$get^uf58("iap!HSENT","%fff")="ESC" q | |
s $p(%ord,%,24)=%fff("NOPER") | |
s $p(%ord,%,20)=$p($h,",",2-$p(%ord,%,18)) | |
s $p(%ord,%,28)=$$SYSH | |
s ^appstat("ORDERS",%nord)=%ord | |
s %reestr=$$REESTR^iaphandsub("ПРН",%nord,$p(%ord,%,13),,$p(%ord,%,14),,) | |
d AddOplata^AppSys($s($p(%ord,%,3)="СНГ":81,1:881),$p(%ord,%,14),%reestr,"",$$KVITAN(%nord,%ord,0)) | |
d ADDRRR(%reestr) | |
i $$AskPrint^iaphand() d PrintKvit^AppSysd | |
e d NewKvit^AppSysd | |
q | |
InTIME() | |
i ($p(^appstat("ORDERS",%id),%,13)+0)<3 s %fff("TIME")=0 q "FIELDOFF" |
|
i $p(^appstat("ORDERS",%id),%,13)'>3 s %fff("TIME")=3 q "FIELDOFF" | |
q $p(^appstat("ORDERS",%id),%,13) | |
OutTIME() | |
i $p(%ufNEWDATA,$c(30),2)="KEYESC" q %ufNEWDATA | |
i ($p(%ufNEWDATA,$c(30),1)+0)<3 q "PROBLEM" |
|
i ($p(%ufNEWDATA,$c(30),1)+0)>$p(^appstat("ORDERS",%id),%,13) q "PROBLEM" | |
q %ufNEWDATA | |
InTEL() | |
n %ntel,%i | |
i $p(^appstat("ORDERS",%id),%,18)=1 s %fff("TEL")=0 q "FIELDOFF" | |
s %ntel=0 f %i=5:1:9 i $p(^appstat("ORDERS",%id),%,%i)'="" s %ntel=%ntel+1 | |
i %ntel=1 s %fff("TEL")=1 q "FIELDOFF" | |
q %ntel | |
OutTEL() | |
n %ntel,%i | |
s %ntel=0 f %i=5:1:9 i $p(^appstat("ORDERS",%id),%,%i)'="" s %ntel=%ntel+1 | |
i %ntel=0 q %ufNEWDATA | |
i ($p(%ufNEWDATA,$c(30),1)+0)<1 q "PROBLEM" |
|
i ($p(%ufNEWDATA,$c(30),1)+0)>%ntel q "PROBLEM" | |
q %ufNEWDATA | |
EXECUTE(%nord) | |
n %fff,%reestr,%tsumm,%ord,%ntel,%i,%key | |
s %ntel=0 | |
i $p(^appstat("ORDERS",%nord),%,18) g exec2 | |
f %i=5:1:9 i $p(^appstat("ORDERS",%id),%,%i)'="" s %ntel=%ntel+1 | |
exec2 | |
s %ord=^appstat("ORDERS",%nord) | |
s %fff("TIME")=$p(%ord,%,13) | |
d drscr^uf58("iap!HEXEC") | |
i $$get^uf58("iap!HEXEC","%fff")="ESC" q | |
s %fff("NOPER")=$p(%ord,%,24) | |
d drscr^uf58("iap!HSTOL") | |
i $$get^uf58("iap!HSTOL","%fff")="ESC" q | |
s $p(%ord,%,24)=%fff("NOPER") | |
s %key=$$^dp58dlg(7,20,11,60,"Подтвердите выполнение","ВЫПОЛНИТЬ"_%_"ОТМЕНА","",2,"","") | |
i $p(%key,$c(30),2)="KEYESC" g exec2 | |
i $p(%key,$c(30),1)=2 q | |
s $p(%ord,%,22)=%fff("TIME") | |
i %ntel=0 s $p(%ord,%,27)=%fff("TEL") g exec1 | |
s %i=0 i %ntel>2 s %i=$p(^SpravUsl(61,30+%ntel),%,4) | |
s $p(%ord,%,15)=$p(%ord,%,15)-%i | |
s %i=0 i %fff("TEL")>2 s %i=$p(^SpravUsl(61,30+%fff("TEL")),%,4) | |
s $p(%ord,%,15)=$p(%ord,%,15)+%i | |
s $p(%ord,%,27)=%fff("TEL") | |
exec1 | |
s %tsumm=$zzoo((%fff("TIME")+$p(%ord,%,15))*$p(%ord,%,16)) | |
s %rest=$p(%ord,%,14)-%tsumm | |
s $p(%ord,%,23)=%rest | |
i %rest=0 s %key=1 g exec11 | |
s %key=$$^dp58dlg(3,20,7,60,"Неужели клиент явился за остатком ?","ЯВИЛСЯ"_%_"НЕ ЯВИЛСЯ","",2,"","") | |
i $p(%key,$c(30),2)="KEYESC" g exec2 | |
exec11 | |
s ^appstat("ORDERS",%nord)=%ord | |
s %reestr=$$REESTR("ВЫП",%nord,$p(%ord,%,13),$p(%ord,%,22),,%tsumm,) | |
;d AddOplata^AppSys($s($p(%ord,%,3)="СНГ":82,1:882),%tsumm,%reestr) | |
d AddOplata^AppSys($s($p(%ord,%,3)="СНГ":82,1:882),0,%reestr) | |
d ADDRRR(%reestr) | |
i $p(%key,$c(30),1)=1 g exec4 | |
s %reestr=$$REESTR("НЕВ",%nord,$p(%ord,%,13),$p(%ord,%,22),,,%rest) | |
d AddOplata^AppSys($s($p(%ord,%,3)="СНГ":84,1:884),0,%reestr,"","Заказ "_%nord) | |
d ADDRRR(%reestr) | |
g exec3 | |
exec4 | |
s %reestr=$$REESTR("ОСТ",%nord,$p(%ord,%,13),$p(%ord,%,22),,,%rest) | |
s %i=$s($p(%ord,%,3)="СНГ":85,1:885) | |
s %i=%i+($$SYSH=$p(%ord,%,28)) | |
d AddOplata^AppSys(81,$p(%ord,%,14),"","",$$KVITAN(%nord,%ord,1),"p") | |
d AddOplata^AppSys(%i,-%rest,%reestr) | |
d ADDRRR(%reestr) | |
i %rest>0 s %key=$$^dp58msg(3,20,"Барышня,"_%_"верните пожалуста клиенту остаток"_%_$zzc(%rest),0) | |
k ^appstat("ORDERS",%nord) | |
i $$AskPrint^iaphand() d PrintKvit^AppSysd | |
e d NewKvit^AppSysd | |
exec3 | |
q | |
ABORT(%nord) | |
n %ord,%notify,%tarif,%key,%id,%tsumm,%rest,%reestr,%ttime,%fff | |
s %ord=^appstat("ORDERS",%nord) s %notify=$p(%ord,%,18) | |
i $p(%ord,%,20)="" s %key=$$^dp58msg(3,20,"Девушка с двумя веслами,"_%_"нельзя снимать заказ"_%_"если вы его еще не педерали",0) q | |
s %tarif=$p(%ord,%,16) | |
abr2 | |
s %id="" | |
s %key=$$LIST^dp58Sel("^SpravUsl(61+%notify,51,%id)","%id",60,3,10,11,"",0,"SINGLE","Причина","DrawREASON^iaphandsub") | |
i $p(%key,%,2)="KEYESC" q | |
s $p(%ord,%,26)=$p(^SpravUsl(61+%notify,51,%id),%,1) | |
s %ttime=$p(^SpravUsl(61+%notify,50,%id),%,4) | |
i $p(%ord,%,1)'="" s %ttime=%ttime+$p(^SpravUsl(61+%notify,51,%id),%,4) | |
i %notify g abr1 | |
i $p(%ord,%,5)="" s %ttime=%ttime+$p(^SpravUsl(61,52,%id),%,4) g abr1 | |
i $p(%ord,%,9)'="" s %ttime=%ttime+$p(^SpravUsl(61,55,%id),%,4) g abr1 | |
i $p(%ord,%,8)'="" s %ttime=%ttime+$p(^SpravUsl(61,54,%id),%,4) g abr1 | |
i $p(%ord,%,7)'="" s %ttime=%ttime+$p(^SpravUsl(61,53,%id),%,4) g abr1 | |
abr1 | |
s %fff("NOPER")=$p(%ord,%,24) | |
d drscr^uf58("iap!HSTOL") | |
i $$get^uf58("iap!HSTOL","%fff")="ESC" g abr2 | |
s $p(%ord,%,24)=%fff("NOPER") | |
s %tsumm=$zzoo(%ttime*$p(%ord,%,16)) | |
s %rest=$p(%ord,%,14)-%tsumm | |
s $p(%ord,%,23)=%rest | |
s %key=$$^dp58dlg(3,20,7,60,"Неужели клиент явился за остатком ?","ЯВИЛСЯ"_%_"НЕ ЯВИЛСЯ","",2,"","") | |
i $p(%key,$c(30),2)="KEYESC" g abr2 | |
s ^appstat("ORDERS",%nord)=%ord | |
s %reestr=$$REESTR("СНТ",%nord,$p(%ord,%,13),$p(%ord,%,22),,%tsumm,) | |
d AddOplata^AppSys($s($p(%ord,%,3)="СНГ":82,1:882),0,%reestr) | |
d ADDRRR(%reestr) | |
i $p(%key,$c(30),1)=1 g abr4 | |
s %reestr=$$REESTR("НЕВ",%nord,$p(%ord,%,13),$p(%ord,%,22),,,%rest) | |
d AddOplata^AppSys($s($p(%ord,%,3)="СНГ":84,1:884),0,%reestr,"","Заказ "_%nord) | |
d ADDRRR(%reestr) | |
g abr3 | |
abr4 | |
s %reestr=$$REESTR("ОСТ",%nord,$p(%ord,%,13),$p(%ord,%,22),,,%rest) | |
s %i=$s($p(%ord,%,3)="СНГ":85,1:885) | |
s %i=%i+($$SYSH=$p(%ord,%,28)) | |
d AddOplata^AppSys(81,$p(%ord,%,14),"","",$$KVITAN(%nord,%ord,1),"p") | |
d AddOplata^AppSys(%i,-%rest,%reestr) | |
d ADDRRR(%reestr) | |
i %rest>0 s %key=$$^dp58msg(3,20,"Барышня,"_%_"верните пожалуста клиенту остаток"_%_$zzc(%rest),0) | |
k ^appstat("ORDERS",%nord) | |
i $$AskPrint^iaphand() d PrintKvit^AppSysd | |
e d NewKvit^AppSysd | |
abr3 | |
q | |
DrawREASON | |
i %dpINDEX="DRAWFREE" w $j("",%dpSX) q | |
w $zzr($p(^SpravUsl(61+%notify,51,%id),%,1),%dpSX) q | |
REST(%nord) | |
n %ord,%notify,%tarif,%key,%id,%tsumm,%rest,%reestr,%ttime,%i | |
s %ord=^appstat("ORDERS",%nord) s %notify=$p(%ord,%,18) | |
s %key=$$^dp58dlg(3,20,7,60,"Неужели клиент явился за остатком ?","ЯВИЛСЯ"_%_"НЕ ЯВИЛСЯ","",2,"","") | |
i $p(%key,$c(30),2)="KEYESC" q | |
i $p(%key,$c(30),1)=2 q | |
s %rest=$p(%ord,%,23) | |
s %reestr=$$REESTR("ВЗВ",%nord,$p(%ord,%,13),$p(%ord,%,22),,,%rest) | |
s %i=$s($p(%ord,%,3)="СНГ":85,1:885) | |
s %i=%i+($$SYSH=$p(%ord,%,28)) | |
d AddOplata^AppSys(81,$p(%ord,%,14),"","",$$KVITAN(%nord,%ord,1),"p") | |
d AddOplata^AppSys(%i,-%rest,%reestr) | |
d ADDRRR(%reestr) | |
i %rest>0 s %key=$$^dp58msg(3,20,"Девушка с веслом,"_%_"верните пожалуста клиенту остаток"_%_$zzc(%rest),0) | |
k ^appstat("ORDERS",%nord) | |
i $$AskPrint^iaphand() d PrintKvit^AppSysd | |
e d NewKvit^AppSysd | |
q | |
REESTR | (%SUBJECT,%NORD,%FULLTIME,%TOTALTIME,%DEPOSIT,%TOTAL,%REST) |
n %r,%z,%t | |
s %z=^appstat("ORDERS",%NORD) | |
s %r.1=8 | |
s %r.2=%APPSYS("NOM_GOES") | |
s %r.3=%APPSYS("NOM_OPER") | |
s %r.4=$p($$GetDTQ^AppSys,%,1) | |
s %r.5=%NORD | |
s %r.6=%APPSYS("NOM_KVIT") ; НОМЕР КВИТАНЦИИ | |
s %r.7="" i %SUBJECT="ПРН" s %r.7=%APPSYS("NOM_OPER") | |
s %r.8="" i %SUBJECT="ПРН" s %r.8=$p(%z,%,19) ; $h принятия заказа | |
s %r.9=$p(%z,%,24) ; номер опреатора который принял заказ на столе | |
s %r.10="" i %SUBJECT="ПРН" s %r.10=$p(%z,%,20) ; $h передачи заказа | |
s %r.11="" i %SUBJECT'="ПРН" s %r.11=%APPSYS("NOM_OPER") | |
s %r.12="" i %SUBJECT'="ПРН" s %r.12=$h ; выполнение заказа | |
s %r.13=$g(%FULLTIME) | |
s %r.14=$g(%TOTALTIME) | |
s %r.15=$p(%z,%,17) | |
s %r.16=%SUBJECT | |
s %r.17=$p(%z,%,2) | |
s %r.18=$p(%z,%,16) | |
s %r.19=$p(%z,%,3) | |
s %r.20="ОБЫЧНЫЙ" i $p(%z,%,4)=1 s %r.20="СРОЧНЫЙ" | |
s %r.21=$p(%z,%,11) | |
s %r.22=$p(%z,%,15) | |
s %r.23=$g(%DEPOSIT) | |
s %r.24=$g(%TOTAL) | |
s %r.25=$g(%REST) | |
s %r.26="" i $p(%z,%,25)=1 s %r.26="ЛЬГОТНЫЙ" | |
s %r.27=$p(%z,%,10) | |
s %r.28=$p(%z,%,12) | |
s %r.29="" | |
i $p(%z,%,18) d | |
. s %r.29=$$DATE2SYS^dp58sys($e($p(%z,%,5),1,2)_"/"_$e($p(%z,%,5),3,4)_"/"_$e($p(%z,%,5),5,6))_","_$$TIME2SYS^dp58sys($e($p(%z,%,6),1,2)_":"_$e($p(%z,%,6),3,4)) | |
s %t=$p(%z,%,5)_","_$p(%z,%,6)_","_$p(%z,%,7)_","_$p(%z,%,8)_","_$p(%z,%,9) | |
i $p(%z,%,27)'="" s $p(%t,",",$p(%z,%,27))="["_$p(%t,",",$p(%z,%,27))_"]" | |
s %r.30=%t | |
i $p(%z,%,18) s %r.30=$p(%z,%,7) | |
s %r.31=$p(%z,%,1) | |
s %r.32=$p(%z,%,24) | |
s %r.33=$p(%z,%,26) | |
i $p(%z,%,27)'="" s %r.33=$p(%z,%,27)_" "_$p(%z,%,26) | |
s %r.34=$p(%z,%,23) | |
q %r | |
ADDRRR(%RRR) | |
s ^ReestrIndRK($p(%RRR,$c(30),5),$p(%RRR,$c(30),16))=%APPSYS("LAST_IND") | |
q | |
KVITAN(%NORD,%ORD,%RESTF) | |
n %kv,%d s %kv="Заказ N "_%NORD | |
s %kv=%kv_$c(13)_$p(%ORD,%,11) | |
s %d=$p(%ORD,%,5) | |
i $p(%ORD,%,18) | |
s %kv=%kv_$c(13)_$e(%d,1,2)_"/"_$e(%d,3,4)_"/"_$e(%d,5,6) | |
s %d=$p(%ORD,%,6) | |
i $p(%ORD,%,18) | |
s %kv=%kv_$c(13)_$e(%d,1,2)_":"_$e(%d,3,4) | |
i %RESTF s %kv=%kv_$c(13)_$p(%ORD,%,2)_"-"_$p(%ORD,%,4+$p(%ORD,%,27)) | |
q %kv | |
; IAKoff Save, %n, 05/06/96 | |
iaphandinit | |
iaphandinit | ;IAKoff;02:06 PM 12 Feb 1996; |
i $g(^SpravUsl(61))="" s ^SpravUsl(61)="РУЧНОЙ ЗАКАЗ 0 0 0 0 мин." | |
i $g(^SpravUsl(61,10))="" s ^SpravUsl(61,10)="ОБЫЧНЫЙ 1 1 1 0 разы" | |
i $g(^SpravUsl(61,11))="" s ^SpravUsl(61,11)="СРОЧНЫЙ 1 1 2 0 разы" | |
i $g(^SpravUsl(61,31))="" s ^SpravUsl(61,31)="ПРИГЛАШЕНИЕ 0 0 1 0 мин." | |
i $g(^SpravUsl(61,32))="" s ^SpravUsl(61,32)="СПРАВКА 0 0 2 0 мин." | |
i $g(^SpravUsl(61,33))="" s ^SpravUsl(61,33)="ВЫЗОВ ПО 3 ТЛФ. 0 0 1 0 мин." | |
i $g(^SpravUsl(61,34))="" s ^SpravUsl(61,34)="ВЫЗОВ ПО 4 ТЛФ. 0 0 2 0 мин." | |
i $g(^SpravUsl(61,35))="" s ^SpravUsl(61,35)="ВЫЗОВ ПО 5 ТЛФ. 0 0 3 0 мин." | |
i $g(^SpravUsl(61,50))="" s ^SpravUsl(61,50)="СНЯТИЕ ЗАКАЗА 0 0 0 0 мин." | |
i $g(^SpravUsl(61,50,1))="" s ^SpravUsl(61,50,1)="ОМС 0 0 1 0 мин." | |
i $g(^SpravUsl(61,50,2))="" s ^SpravUsl(61,50,2)="НВЛ 0 0 0 0 мин." | |
i $g(^SpravUsl(61,50,3))="" s ^SpravUsl(61,50,3)="NoНО 0 0 0 0 мин." | |
i $g(^SpravUsl(61,50,4))="" s ^SpravUsl(61,50,4)="ПВ 0 0 0 0 мин." | |
i $g(^SpravUsl(61,50,5))="" s ^SpravUsl(61,50,5)="ПС 0 0 0 0 мин." | |
i $g(^SpravUsl(61,50,6))="" s ^SpravUsl(61,50,6)="ТИ 0 0 0 0 мин." | |
i $g(^SpravUsl(61,50,7))="" s ^SpravUsl(61,50,7)="СО 0 0 0 0 мин." | |
i $g(^SpravUsl(61,50,8))="" s ^SpravUsl(61,50,8)="РВ 0 0 0 0 мин." | |
i $g(^SpravUsl(61,50,9))="" s ^SpravUsl(61,50,9)="ВК 0 0 0 0 мин." | |
i $g(^SpravUsl(61,50,10))="" s ^SpravUsl(61,50,10)="ОДС 0 0 0 0 мин." | |
i $g(^SpravUsl(61,50,11))="" s ^SpravUsl(61,50,11)="ЗНЯ 666 0 1 0 мин." | |
i $g(^SpravUsl(61,51))="" s ^SpravUsl(61,51)="СНЯТИЕ С ПРИГЛАШЕНИЯ 0 0 0 0 мин." | |
i $g(^SpravUsl(61,51,1))="" s ^SpravUsl(61,51,1)="ОМС 0 0 1 0 мин." | |
i $g(^SpravUsl(61,51,2))="" s ^SpravUsl(61,51,2)="НВЛ 0 0 1 0 мин." | |
i $g(^SpravUsl(61,51,3))="" s ^SpravUsl(61,51,3)="NoНО 0 0 0 0 мин." | |
i $g(^SpravUsl(61,51,4))="" s ^SpravUsl(61,51,4)="ПВ 0 0 0 0 мин." | |
i $g(^SpravUsl(61,51,5))="" s ^SpravUsl(61,51,5)="ПС 0 0 0 0 мин." | |
i $g(^SpravUsl(61,51,6))="" s ^SpravUsl(61,51,6)="ТИ 0 0 0 0 мин." | |
i $g(^SpravUsl(61,51,7))="" s ^SpravUsl(61,51,7)="СО 0 0 0 0 мин." | |
i $g(^SpravUsl(61,51,8))="" s ^SpravUsl(61,51,8)="РВ 0 0 0 0 мин." | |
i $g(^SpravUsl(61,51,9))="" s ^SpravUsl(61,51,9)="ВК 0 0 0 0 мин." | |
i $g(^SpravUsl(61,51,10))="" s ^SpravUsl(61,51,10)="ОДС 0 0 0 0 мин." | |
i $g(^SpravUsl(61,51,11))="" s ^SpravUsl(61,51,11)="ЗНЯ 666 0 1 0 мин." | |
i $g(^SpravUsl(61,52))="" s ^SpravUsl(61,52)="СНЯТИЕ СО СПРАВКИ 0 0 0 0 мин." | |
i $g(^SpravUsl(61,52,1))="" s ^SpravUsl(61,52,1)="ОМС 0 0 1 0 мин." | |
i $g(^SpravUsl(61,52,2))="" s ^SpravUsl(61,52,2)="НВЛ 0 0 1 0 мин." | |
i $g(^SpravUsl(61,52,3))="" s ^SpravUsl(61,52,3)="NoНО 0 0 0 0 мин." | |
i $g(^SpravUsl(61,52,4))="" s ^SpravUsl(61,52,4)="ПВ 0 0 0 0 мин." | |
i $g(^SpravUsl(61,52,5))="" s ^SpravUsl(61,52,5)="ПС 0 0 0 0 мин." | |
i $g(^SpravUsl(61,52,6))="" s ^SpravUsl(61,52,6)="ТИ 0 0 0 0 мин." | |
i $g(^SpravUsl(61,52,7))="" s ^SpravUsl(61,52,7)="СО 0 0 0 0 мин." | |
i $g(^SpravUsl(61,52,8))="" s ^SpravUsl(61,52,8)="РВ 0 0 0 0 мин." | |
i $g(^SpravUsl(61,52,9))="" s ^SpravUsl(61,52,9)="ВК 0 0 0 0 мин." | |
i $g(^SpravUsl(61,52,10))="" s ^SpravUsl(61,52,10)="ОДС 0 0 0 0 мин." | |
i $g(^SpravUsl(61,52,11))="" s ^SpravUsl(61,52,11)="ЗНЯ 666 0 1 0 мин." | |
i $g(^SpravUsl(61,53))="" s ^SpravUsl(61,53)="СНЯТИЕ С 3-Х ТЕЛЕФОНОВ 0 0 0 0 мин." | |
i $g(^SpravUsl(61,53,1))="" s ^SpravUsl(61,53,1)="ОМС 0 0 1 0 мин." | |
i $g(^SpravUsl(61,53,2))="" s ^SpravUsl(61,53,2)="НВЛ 0 0 1 0 мин." | |
i $g(^SpravUsl(61,53,3))="" s ^SpravUsl(61,53,3)="NoНО 0 0 0 0 мин." | |
i $g(^SpravUsl(61,53,4))="" s ^SpravUsl(61,53,4)="ПВ 0 0 0 0 мин." | |
i $g(^SpravUsl(61,53,5))="" s ^SpravUsl(61,53,5)="ПС 0 0 0 0 мин." | |
i $g(^SpravUsl(61,53,6))="" s ^SpravUsl(61,53,6)="ТИ 0 0 0 0 мин." | |
i $g(^SpravUsl(61,53,7))="" s ^SpravUsl(61,53,7)="СО 0 0 0 0 мин." | |
i $g(^SpravUsl(61,53,8))="" s ^SpravUsl(61,53,8)="РВ 0 0 0 0 мин." | |
i $g(^SpravUsl(61,53,9))="" s ^SpravUsl(61,53,9)="ВК 0 0 0 0 мин." | |
i $g(^SpravUsl(61,53,10))="" s ^SpravUsl(61,53,10)="ОДС 0 0 0 0 мин." | |
i $g(^SpravUsl(61,53,11))="" s ^SpravUsl(61,53,11)="ЗНЯ 666 0 1 0 мин." | |
i $g(^SpravUsl(61,54))="" s ^SpravUsl(61,54)="СНЯТИЕ С 4-Х ТЕЛЕФОНОВ 0 0 0 0 мин." | |
i $g(^SpravUsl(61,54,1))="" s ^SpravUsl(61,54,1)="ОМС 0 0 1 0 мин." | |
i $g(^SpravUsl(61,54,2))="" s ^SpravUsl(61,54,2)="НВЛ 0 0 1 0 мин." | |
i $g(^SpravUsl(61,54,3))="" s ^SpravUsl(61,54,3)="NoНО 0 0 0 0 мин." | |
i $g(^SpravUsl(61,54,4))="" s ^SpravUsl(61,54,4)="ПВ 0 0 0 0 мин." | |
i $g(^SpravUsl(61,54,5))="" s ^SpravUsl(61,54,5)="ПС 0 0 0 0 мин." | |
i $g(^SpravUsl(61,54,6))="" s ^SpravUsl(61,54,6)="ТИ 0 0 0 0 мин." | |
i $g(^SpravUsl(61,54,7))="" s ^SpravUsl(61,54,7)="СО 0 0 0 0 мин." | |
i $g(^SpravUsl(61,54,8))="" s ^SpravUsl(61,54,8)="РВ 0 0 0 0 мин." | |
i $g(^SpravUsl(61,54,9))="" s ^SpravUsl(61,54,9)="ВК 0 0 0 0 мин." | |
i $g(^SpravUsl(61,54,10))="" s ^SpravUsl(61,54,10)="ОДС 0 0 0 0 мин." | |
i $g(^SpravUsl(61,54,11))="" s ^SpravUsl(61,54,11)="ЗНЯ 666 0 1 0 мин." | |
i $g(^SpravUsl(61,55))="" s ^SpravUsl(61,55)="СНЯТИЕ С 5-ТИ ТЕЛЕФОНОВ 0 0 0 0 мин." | |
i $g(^SpravUsl(61,55,1))="" s ^SpravUsl(61,55,1)="ОМС 0 0 1 0 мин." | |
i $g(^SpravUsl(61,55,2))="" s ^SpravUsl(61,55,2)="НВЛ 0 0 1 0 мин." | |
i $g(^SpravUsl(61,55,3))="" s ^SpravUsl(61,55,3)="NoНО 0 0 0 0 мин." | |
i $g(^SpravUsl(61,55,4))="" s ^SpravUsl(61,55,4)="ПВ 0 0 0 0 мин." | |
i $g(^SpravUsl(61,55,5))="" s ^SpravUsl(61,55,5)="ПС 0 0 0 0 мин." | |
i $g(^SpravUsl(61,55,6))="" s ^SpravUsl(61,55,6)="ТИ 0 0 0 0 мин." | |
i $g(^SpravUsl(61,55,7))="" s ^SpravUsl(61,55,7)="СО 0 0 0 0 мин." | |
i $g(^SpravUsl(61,55,8))="" s ^SpravUsl(61,55,8)="РВ 0 0 0 0 мин." | |
i $g(^SpravUsl(61,55,9))="" s ^SpravUsl(61,55,9)="ВК 0 0 0 0 мин." | |
i $g(^SpravUsl(61,55,10))="" s ^SpravUsl(61,55,10)="ОДС 0 0 0 0 мин." | |
i $g(^SpravUsl(61,55,11))="" s ^SpravUsl(61,55,11)="ЗНЯ 666 0 1 0 мин." | |
i $g(^SpravUsl(62))="" s ^SpravUsl(62)="ЗАКАЗ ПО УВЕДОМЛЕНИЮ 0 0 1 0 мин." | |
i $g(^SpravUsl(62,10))="" s ^SpravUsl(62,10)="ОБЫЧНЫЙ 1 1 1 0 разы" | |
i $g(^SpravUsl(62,11))="" s ^SpravUsl(62,11)="СРОЧНЫЙ 1 1 2 0 разы" | |
i $g(^SpravUsl(62,31))="" s ^SpravUsl(62,31)="ПРИГЛАШЕНИЕ 0 0 1 0 мин." | |
i $g(^SpravUsl(62,32))="" s ^SpravUsl(62,32)="СПРАВКА 0 0 1 0 мин." | |
i $g(^SpravUsl(62,50))="" s ^SpravUsl(62,50)="СНЯТИЕ ЗАКАЗА 0 0 0 0 мин." | |
i $g(^SpravUsl(62,50,1))="" s ^SpravUsl(62,50,1)="ОМС 0 0 2 0 мин." | |
i $g(^SpravUsl(62,50,2))="" s ^SpravUsl(62,50,2)="НВЛ 0 0 2 0 мин." | |
i $g(^SpravUsl(62,50,3))="" s ^SpravUsl(62,50,3)="NoНО 0 0 2 0 мин." | |
i $g(^SpravUsl(62,50,4))="" s ^SpravUsl(62,50,4)="ПВ 0 0 0 0 мин." | |
i $g(^SpravUsl(62,50,5))="" s ^SpravUsl(62,50,5)="ПС 0 0 0 0 мин." | |
i $g(^SpravUsl(62,50,6))="" s ^SpravUsl(62,50,6)="ТИ 0 0 0 0 мин." | |
i $g(^SpravUsl(62,50,7))="" s ^SpravUsl(62,50,7)="СО 0 0 0 0 мин." | |
i $g(^SpravUsl(62,50,8))="" s ^SpravUsl(62,50,8)="РВ 0 0 0 0 мин." | |
i $g(^SpravUsl(62,50,9))="" s ^SpravUsl(62,50,9)="ВК 0 0 0 0 мин." | |
i $g(^SpravUsl(62,50,10))="" s ^SpravUsl(62,50,10)="ОДС 0 0 2 0 мин." | |
i $g(^SpravUsl(62,50,11))="" s ^SpravUsl(62,50,11)="ЗНЯ 666 0 2 0 мин." | |
i $g(^SpravUsl(62,51))="" s ^SpravUsl(62,51)="СНЯТИЕ С ПРИГЛАШЕНИЯ 0 0 0 0 мин." | |
i $g(^SpravUsl(62,51,1))="" s ^SpravUsl(62,51,1)="ОМС 0 0 1 0 мин." | |
i $g(^SpravUsl(62,51,2))="" s ^SpravUsl(62,51,2)="НВЛ 0 0 0 0 мин." | |
i $g(^SpravUsl(62,51,3))="" s ^SpravUsl(62,51,3)="NoНО 0 0 0 0 мин." | |
i $g(^SpravUsl(62,51,4))="" s ^SpravUsl(62,51,4)="ПВ 0 0 0 0 мин." | |
i $g(^SpravUsl(62,51,5))="" s ^SpravUsl(62,51,5)="ПС 0 0 0 0 мин." | |
i $g(^SpravUsl(62,51,6))="" s ^SpravUsl(62,51,6)="ТИ 0 0 0 0 мин." | |
i $g(^SpravUsl(62,51,7))="" s ^SpravUsl(62,51,7)="СО 0 0 0 0 мин." | |
i $g(^SpravUsl(62,51,8))="" s ^SpravUsl(62,51,8)="РВ 0 0 0 0 мин." | |
i $g(^SpravUsl(62,51,9))="" s ^SpravUsl(62,51,9)="ВК 0 0 0 0 мин." | |
i $g(^SpravUsl(62,51,10))="" s ^SpravUsl(62,51,10)="ОДС 0 0 0 0 мин." | |
i $g(^SpravUsl(62,51,11))="" s ^SpravUsl(62,51,11)="ЗНЯ 666 0 1 0 мин." | |
q |
ПРИЛОЖЕНИЕ 5
Текст программы стартера монитора
; IAKoff Save, %n, 05/06/96 | |
iapmon | |
iapmon | ;IAKoff;11:47 PM 23 Jan 1996; |
q | |
;Обслуживание АПП-РК | |
run() | |
n %nname,%d | |
i $g(^appstat("NODE"))'=$znode q 1 | |
s %d=$g(^appstat("DEVICE"))+0 | |
i (%d<100)!(%d>108) q 2 |
|
i $$tstjob()'="" g endrun | |
s ^appstat(1)="F" s ^appstat(2)="F" s ^appstat(3)="F" | |
j ^iapbckg(^appstat("DEVICE")):(name="APP-MON":strstk=8000:sysstk=8000) | |
endrun | |
q 0 | |
; ---------------------------------------- | |
tstjob() | |
n %c,%i,%n | |
s $zp=$c(30) | |
s %c=$zjob("*")_"*" s %i=1 | |
m2 | |
s %n=$p(%c,",",%i) | |
i %n="" g etm | |
i $p($zjob(%n),"|",9)="APP-MON" g etm | |
s %i=%i+1 g m2 | |
etm | |
q %n | |
; ---------------------------------------- | |
stop | |
i $$tstjob()="" g endstop | |
nobckg1 | |
i (^appstat(1)="F")&(^appstat(2)="F")&(^appstat(3)="F") g stopbckg | |
g endstop | |
stopbckg | |
s ^appstat("CMD")="H" | |
; ниже была оШибка ! | |
i ^appstat("STATUS")'="H" g nobckg1 | |
endstop | |
q |
отзыв
на дипломный проект студента группы РП 411 Коновалова Ильи Анатольевича “Автоматизированное рабочее место переговорного пункта и информационной системы”.
Автоматизированные системы управления городскими отделениями связи являются непременной атрибутикой современных переговорных пунктов общего пользования. АПП ГОЭС представляет новое поколение АСУ этого класса
Данный дипломный проект посвящен разработке автоматизированного рабочего места переговорного пункта и информационной системы. Работа выполнена в полном объеме, в соответствии с требованиями технического задания.
В дипломном проекте на высоком уровне решены вопросы обеспечения эргономических и психофизиологических требований.
В дипломном проекте проявлены хорошие знания принципов работы аппаратных и программных частей комплекса "Автоматизированный переговорный пункт городского отделения электросвязи”, а также в области проектирования и построения автоматизированных систем.
Недостатком выполнения данной дипломной работы явилось отсутствие универсального протокола общения с аппаратными средствами, что требует согласования программного обеспечения при переходе на новые модели аппаратуры, и неунифицированность информации в рамках системы, связанной с тем, что задачи аппаратного продолжения работают в реальном масштабе времени.
Большое внимание было уделено вопросу построения дружественного пользовательского интерфейса, обеспечивающего легкость и простоту работы в системе, надежности.
Считаю, что дипломный проект заслуживает оценки “отлично”, а студент Коновалов И.А. достоин присвоения ему квалификации “инженер программист” по специальности “ПО ВТ и АС”.
Руководитель дипломного проекта | |
Онищенко В.Ф. | |
10 июня 1996 года | |
рецензия
на дипломный проект Коновалова Ильи Анатольевича “Автоматизированное рабочее место переговорного пункта и информационной системы” (АРМ АПП и ИС).
На рецензию представлен дипломный проект с пояснительной запиской на 113 листах, 5 плакатах.
Дипломанту была поставлена задача проектирования автоматизированного переговорного пункта и информационной системы.
Так как комплекс “Автоматизированное рабочее место переговорного пункта и информационной системы” включает в себя задачи аппаратного продолжения, то для обеспечения разработки комплекса возникла необходимость разработки задач, работающих в режиме реального времени.
Дипломантом проделана большая работа по проектированию программного и информационного обеспечения указанного выше комплекса.
Проектирование и программная реализация всех задач выполнена грамотно, на инженерном уровне и полностью удовлетворяет требованиям заказчика.
Заслуживает внимания выполненная на высоком инженерном уровне проработка вопросов связи между программными компонентами комплексов в целом и аппаратно программное взаимодействие. Связь компонентов проектируемых задач между собой отличается легкостью и простотой.
Недостатком выполнения данной дипломной работы явилось отсутствие универсального протокола общения с аппаратными средствами, что требует согласования программного обеспечения при переходе на новые модели аппаратуры, и неунифицированность информации в рамках системы, связанной с тем, что задачи аппаратного продолжения работают в реальном масштабе времени.
В целом дипломная работа выполнена на инженерном уровне. Дипломант показал высокий уровень знаний в области микропроцессорной техники и автоматизированных систем, проявил умение грамотно решать проектные задачи. Дипломная работа заслуживает отличной оценки, а дипломант Коновалов И.А. присвоения ему квалификации “инженер программист”.
Рецензент | |
Главный конструктор СП “ПРОНАН ltd” | А.Г. Падалка |
17 июня 1996 года | |
г. Запорожье |
Объектно-ориентированная СУБД (прототип)
Общие сведения о языке программирования Qbasic
Работа в системе Eureka
Лаба по информатике
Написание БД «Распределение затрат аварийно-диспетчерской службы предприятия»
Анализ, оценка и выбор пользователем пакетов прикладных программ для автоматизации своей деятельности (Microsoft Access)
Расчет связного АМ суперитероидного приемника
Моделирование на GPSS
Алгоритмы выделения контуров
Основные понятия алгоритмического языка
Copyright (c) 2024 Stud-Baza.ru Рефераты, контрольные, курсовые, дипломные работы.