Автоматизированное рабочее место оператора автоматизированного переговорного пункта и информационной системы

Министерство образования Украины
запорожский государственный технический университет
Зав. кафедрой
Автоматизированное рабочее место оператора автоматизированного
переговорного пункта и информационной системы
Пояснительная записка к дипломному проекту
Разработал
ст. гр. РП-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
Студент - дипломник
Руководитель проекта
РЕФЕРАТ
Текст ПЗ 1 с., 14 табл., 16 рис., 20 источника, 5 прил.
АВТОМАТИЧЕСКИЕ КАБИНЫ, РУЧНЫЕ КАБИНЫ, АВТО-
МАТИЗИРОВАННЫЙ ПЕРЕГОВОРНЫЙ ПУНКТ, АВТОМАТИЗИ-
РОВАННОЕ РАБОЧЕЕ МЕСТО АВТОМАТИЧЕСКОГО ПЕРЕГО-
ВОРНОГО ПУНКТА И ИНФОРМАЦИОННОЙ СИСТЕМЫ, ФОРМЫ
ОФОРМЛЕНИЯ РУЧНЫХ ЗАКАЗОВ.
Междугородная телефонная связь - один из наиболее опера-
тивных видов связи. Она имеет важное значение для руководства
деятельностью предприятий, учреждений со стороны государственных,
общественных и хозяйственных организаций.
Междугородная телефонная связь должна работать четко,
бесперебойно. Работники междугородной телефонной связи на основе
сознательного, рыночного отношения 'к труду и строгой произ-
водственной дисциплины должны культурно и внимательно обслу-
живать государственные учреждения и предприятия, общественные
организации и население Украины.
Автоматизированные системы управления городскими отделе-
ниями связи являются непременной атрибутикой современных пере-
говорных пунктов общего пользования. АПП ГОЭС представляет новое
поколение АСУ этого класса из семейства выпускаемой нами
продукции, хорошо зарекомендовавшей себя более чем в трехстах
городах СНГ, Балтии и за рубежом.
В АПП ГОЭС реализованы последние достижения в этой об-
ласти. АПП ГОЭС является комплексным изделием, сконцентриро-
вавшим в себе весь спектр услуг предоставляемый сегодня на ГОЭС.
Существующий на сегодняшний день уровень автоматизации
достаточен для выполнения основных функций предоставления услуг
электросвязи населению области, однако информация, обрабатываемая
отделом автоматизированных систем управления (АСУ) не обес-
печивает получения прибыли за предоставленные услуги в полном
объеме. Существующая система предоставления услуг электросвязи
населению области приводит к прямым потерям средств при сущест-
вующей системе платежей. Действующая система расчетов за услуги
междугородной электросвязи имеет существенные недостатки,
основными из которых являются:
длительное время оповещения абонента о размерах и сроках
оплаты за услуги;
наличие серьезных организационно-технических проблем кон-
троля неплатежей и выполнения санкций за неуплату (отключение
телефона);
большой объем ручного труда (несмотря на использование
ЭВМ), снижающего уровень оперативности подготовки данных и
приводящего ошибки в систему расчетов за услуги.
СОДЕРЖАНИЕ
ЗАДАНИЕ НЕ ПРОЕКТ 2
РЕФЕРАТ 3
ВВЕДЕНИЕ 7
1. ХАРАКТЕРИСТИКА ОБЪЕКТА ПРОЕКТИРОВАНИЯ 10
1.1. Применяемые технические средства 10
1.2. Действующая методика обслуживания автоматических
кабин 15
1.3. Действующая методика оформления ручных заказов 15
2. ВЫБОР И ОБОСНОВАНИЕ СТРУКТУРЫ ПРОЕКТИРУЕ-
МОЙ СИСТЕМЫ 18
2.1. Общие сведения 18
2.2. Обоснование выбора технических средств 18
2.3. Программное обеспечение АРМ АПП и ИС 20
3. ОСНОВНЫЕ РЕШЕНИЯ ПО РЕАЛИЗАЦИИ КОМПОНЕН-
ТОВ СИСТЕМЫ 23
3.1. Общие положения 23
3.2. Принципы обслуживания автоматических каналов 26
3.3. Взаимодействие системы DTM с АПП-РК 26
3.4. Взаимодействие оператора с АПП-РК 30
3.5. Взаимодействие системы DTM с информационной
системой 31
4. МЕТОДИКА РАБОТЫ ПОТРЕБИТЕЛЯ С СИСТЕМОЙ 33
4.1. Общие сведения 33
4.2. Методика работы с автоматическими кабинами 33
4.3. Методика работы с ручными заказами 36
4.4. Методика работы с информационной системой 40
5. ЭКОНОМИКО-ОРГАНИЗАЦИОННАЯ ЧАСТЬ 42
5.1. Сущность сетевого планирования и управления 42
5.2. Построение сетевых графиков и оценка времени вы-
полнения работ 47
5.3. Экономический расчет 56
6. ОХРАНА ТРУДА 61
6.1. Значение охраны труда 61
6.2. Организационно-технические мероприятия 64
6.3. Мероприятия по производственной санитарии и гигиене
труда 71
6.4. Меры обеспечения пожарной безопасности 76
ЗАКЛЮЧЕНИЕ 79
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 80
Приложение 1: СПЕЦИФИКАЦИЯ КОМПОНЕНТОВ
СИСТЕМЫ 82
Приложение 2: ТЕКСТ ПРОГРАММЫ АРМ АПП АК 83
Приложение 3: ТЕКСТ ПРОГРАММЫ МОНИТОРА АПП-РК 90
Приложение 4: ТЕКСТ ПРОГРАММЫ АРМ АПП РК 98
Приложение 5: ТЕКСТ ПРОГРАММЫ СТАРТЕРА МОНИТОРА 112
ВВЕДЕНИЕ
В процессе проведенных исследований коллективом програм-
мистов СП "ПРОНАН ltd" и субподрядными организациями: Центром
информационных технологий Комитета по науке и технологиям
Украины и частным предприятием "ГЕО" (г. Москва) была
разработана концепция безбумажной технологии обработки
информации по расчетам за услуги электросвязи. Разработаны орга-
низационные мероприятия по изменению системы платежей на базе
организации высокоавтоматизированных городских отделений элек-
тросвязи и районных узлов электросвязи.
В процессе выполнения работы проведено обследование ос-
новных подразделений Запорожского центра технической эксплуатации
междугородных телеграфно-телефонных связей (ЦТЭ МТТС),
непосредственно связанных с предоставлением услуг электросвязи
населению и предприятиям области. Структура ЦТЭ МТТС приведена
на Рис. A.
Структура ЦТЭ МТТС.
рис. A
На основании разработанной и одобренной техническим советом
заказчика концепции разработаны основные предварительные
технические предложения, позволяющие:
провести реорганизацию существующих переговорных пунктов в
высокоавтоматизированные отделения электросвязи городов и районов
области с сокращением затрат и расширение сферы услуг электросвязи;
разработать схемы построения сети вычислительных средств на
базе микрокомпьютеров;
разработать систему обработки информации и схему автома-
тизации производственного и управленческого персонала, обеспечи-
вающую достаточный уровень качества предоставления услуг элек-
тросвязи не имеющий в настоящее время аналогов в Украине;
разработать и одобрить техническим советом заказчика без-
бумажную технологию расчетов с населением областного центра за
услуги электросвязи.
Предыдущие попытки разработчиков СП "ПРОНАН ltd" авто-
матизировать работу городских отделений электросвязи (ГОЭС) прошли
успешно. Одно из наиболее используемых средств малой автоматизации
АПП-РК (автоматизированный переговорный пункт с ручной комм-
утацией).
Автоматизированные системы контроля и управления ведением
междугородных телефонных разговоров являются непременной
атрибутикой современных переговорных пунктов общего пользования.
АПП-РК представляет новое поколение устройств этого класса из
семейства выпускаемых нами изделий: АПП-80, АПП-16, АПП-16/32,
хорошо зарекомендовавших себя более чем в трехстах городах СНГ,
Балтии и за рубежом.
В АПП-РК реализованы последние достижения в этой области -
интеллектуальная система управления, электронные коммутаторы
каналов, компьютерные каналы связи. АПП-РК является комплексным
изделием, сконцентрировавшим в себе весь спектр оборудования,
используемого сегодня на переговорных пунктах для предоставления
услуг по ведению междугородных и международных переговоров.
Являясь законченным автономным изделием, АПП-РК в то же время
имеет канал связи с автоматизированными системами более высокого
уровня, что позволяет встраивать его в качестве низового звена систем
АСУ.
1. ХАРАКТЕРИСТИКА ОБЪЕКТА ПРОЕКТИРОВАНИЯ
1.1. Применяемые технические средства
Отделения электросвязи оснащены двумя типами кабин: руч-
ными и автоматическими. Кабины подключены к АПП-РК. Являясь
законченным автономным изделием, АПП-РК в то же время имеет канал
связи с автоматизированными системами более высокого уровня, что
позволяет встраивать его в качестве низового звена систем АСУ.
Для работы с автоматическими кабинами на ГОЭС используются
АПП-РК как законченное изделие. АПП-РК представляет собой
микропроцессорное устройство на базе МПУ-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М. Его можно условно разделить на две части:
управляющее;
диагностическое.
Управляющее программное обеспечение выполняет функции
управления, контроля и сервиса переговорного пункта в целом. Ди-
агностическое программное обеспечение предназначено для проведения
профилактических работ на переговорном пункте, а также при поиске и
устранении неисправностей в период эксплуатации.
Программное обеспечение адаптируется поставщиком АПП под
АТС заказчика. По желанию заказчика оно может быть дополнено
функциями и возможностями, не входящими в вышеперечисленный
стандартный набор.
1.2. Действующая методика обслуживания
автоматических кабин
Управление автоматическими кабинами производится с помо-
щью блока АПП-РК (автоматически переговорный пункт с ручной
коммутацией) с подключенным к нему принтером. При внесении
клиентом задатка оператор включает кабину, указывая размер задатка.
После окончания разговора клиент обращается к оператору, который
отключает кабину. После отключения кабины принтер отпечатывает
размер остатка, количество разговоров и их длительность, сумму по
разговорам. Остаток возвращается клиенту.
Вся отчетность по работе автоматических кабин осуществляется
на основании распечатки работы автоматических кабин, выдаваемой
принтером.
1.3. Действующая методика оформления ручных
заказов
При оформлении ручного заказа заполняется документ МТФ-4,
являющийся документом строгой отчетности. Документы поступают на
отделение электросвязи в виде пачек по 100 экземпляров в каждой.
Каждый документ имеет свой уникальный номер.
При заполнении формы МТФ-4 указывается вызываемый на-
селенный пункт, телефон вызываемого, список услуг (справка, при-
гласить к телефону и т.д.), время приема заказа, номер оператора,
принявшего заказ, количество заказываемых минут.
После заполнения указанных выше сведений заказ передается на
станцию. При этом в форме указывается время передачи заказа и номер
оператора станции, принявшего заказ.
При соединении в форму заносится время выполнения заказа,
номер оператора, выполнившего заказ.
По окончании разговора оператор станции передает оператору
отделения электросвязи количество минут разговора и свой номер.
Остаток суммы задатка возвращается клиенту.
В случае несостоявшегося разговора в форме МТФ-4 делается
отметка о причине снятия заказа и номер оператора, снявшего заказ, при
этом деньги возвращаются клиенту.
По отработанным формам МТФ-4 ведется статистика о состо-
явшихся и несостоявшихся разговорах по различным регионам: области,
Украине и СНГ отдельно.
В последнее время отделения связи оснащены кассовыми ап-
паратами класса "Онега". Данный кассовый аппарат позволяет печатать
квитанцию с указанием текущей даты, номера отделения связи и суммы
произведенной оплаты, а также снимать показания по суммам,
оформленных с момента последнего снятия этих показаний.
Кассовый аппарат позволяет выделить на каждый вид оплаты
отдельный уникальный номер (от 1 до 9) и вести оформление квитанций
по отдельным видам оплат с суммированием этих сумм отдельно по
каждому виду. При снятии информации в конце смены распечатываются
суммы по отдельным видам оплат, а также общая сводка по всем
принятым суммам. Кассовый аппарат позволяет получать сводку по
оплате для отдельного вида оплаты с указанием в построчном виде всех
принятых сумм. В случае оформления возврата денег клиенту по
каким-либо причинам, данная сумма вводится со знаком "-", в сводках
отображается с соответствующим знаком и к общей сумме не
прибавляется, а вычитается.
Снятые показания с кассового аппарата служат для отчетности
по отделению связи. Сводки по приему оплат по квитанциям за услуги,
предоставленные в кредит снимаются в конце каждой смены и
сшиваются вместе с корешками квитанций для отчетности с МГТС. В
конце смены оператором производится также сверка корешков
квитанций со сводкой на предмет правильности взымания платы.
Сводка по приему телеграмм также распечатывается в конце смены и
сшивается с заполненными бланками телеграмм с предварительной
сверкой сумм по сводке. Аналогичная операция производится при
работе с автоматическими и ручными кабинами.
2. ВЫБОР И ОБОСНОВАНИЕ СТРУКТУРЫ
ПРОЕКТИРУЕМОЙ СИСТЕМЫ
2.1. Общие сведения
АПП ГОЭС представляет собой аппаратно-программный ком-
плекс, который включает в себя технические и программные средства,
позволяющие автоматизировать ряд действий персонала городского от-
деления электросвязи или районного узла связи.
2.2. Обоснование выбора технических средств
После исследования объектов проектирования, можно прийти к
выводу, что наиболее удобной для использования на ГОЭС (РУЭС) яв-
ляется следующая структура системы.
На каждом ГОЭС ставится центральный компьютер, к которому
подключается необходимый для данного ГОЭС набор технических
средств: АПП, телеграфный адаптер, информационная система и т.д. На
каждом отделении электросвязи будет иметься своя БД, включающая в
себя все необходимые для работы ГОЭС справочники и НСИ. В этом
случае будет иметь место избыточность информации, т.к. на каждом
отделении электросвязи будет дублироваться БД массива квитанций
населения города, картотеки квартирных улиц, тарифов и т.п. Но при
этом достигается независимость функционирования ГОЭС от других
ГОЭС, в связи с чем появляется возможность использования АПП ГОЭС
(РУЭС) в виде независимой локальной системы, с возможностью
связывания с другими машинами путем обмена информацией в
специфичном виде через машинные носители, как то дискеты,
переносной винчестер.
Для разрабатываемой системы выдвигается требование о том,
что эксплуатация программно-технического комплекса в части решения
прикладных задач не должна предъявлять особых требований к
квалификации пользователей и быть ориентированной на конечного
пользователя независимо от того, является он руководителем или
исполнителем (оператором).
Выполнение функций комплекса программ системы должно быть
реализовано с применением современных средств организации
взаимодействия с пользователем, включая:
привычные для операторов названия объектов и действий;
выбор операций посредством меню и функциональной клавиа-
туры;
выбор объектов и действий из выводимых на экран их перечней;
вывод поясняющих сообщений на любом этапе работы;
технологически близкий к естественному переход от одной
операции к другой при решении задач.
Так как на каждом ГОЭС будет формироваться своя техническая
база, но с использованием одной и той же системы, то мы может иметь
возможность оперативно изменять состав технических средств без
изменения программной части и с минимальными затратами на
модификацию старой технической базы, т.к. в основе каждого ГОЭС
будет стоять минимальный набор технических средств, как показано
ниже, а дальнейшее его изменение будет происходить простым
подключением дополнительных технических средств без изменения
базовых.
АПП-РК хорошо зарекомендовал себя как устойчиво работающее
оконечное устройство и это есть достаточное обоснование выбора его
для использования как контроллера автоматических и ручных кабин. В
АПП ГОЭС АПП-РК используется в качестве низового узла АСУ.
Информационная станция представляет собой специализиро-
ванный интеллектуальный терминал, который подключен по каналу
ИРПС к локальному серверу АПП ГОЭС. ИС собрана на базе ПК
"ПРИОР-001" является серийно выпускаемым изделием СП "ПРОНАН
ltd". ПК "ПРИОР-001" представляет собой 8-разрядную одноплатную
микро-ЭВМ и является аналогом широко распространенного
компьютера "Spectrum 48+" фирмы "Sinclair".
Компьютер "ПРИОР®-001" выполнен на современной эле-
ментной базе - интегральных микросхемах малой и средней степени
интеграции. Архитектура компьютера базируется на высокопроизво-
дительном микропроцессоре Z80A фирмы SGS-THOMPSON.
Упрощенная блок - схема информационной станции представ-
лена на Рис. 2.A
Схема информационной станции
рис. 2.A
2.3. Программное обеспечение АРМ АПП и ИС
С целью облегчения разработки программного обеспечения был
использован единый подход, что привело к универсальности
разработанного системного и прикладного ПО при использовании его в
двух различных системах.
Программное обеспечение АРМ АПП и АРМ ИС подразделяется
на две части.
1) Системное ПО, которое обеспечивает работу всего комплекса
с соблюдением следующих условий:
функционирование операционной системы в многопользова-
тельском режиме с минимальными затратами ресурсов последней;
работа в реальном или псевдореальном масштабе времени;
обеспечение возможности работы в локальной и глобальной
сетях с использованием как выделенных, так и коммутируемых каналов
связи;
использование средств формирования базы данных, обладающей
минимальным временем доступа к данным и обеспечивающим
сохранность и их целостность;
наличие эффективного языка программирования и хорошие
инструментальные средства для разработки прикладного программного
обеспечения;
возможность переносимости на различные технические плат-
формы.
2) Прикладное программное обеспечение удовлетворят сле-
дующим требованиям:
имеет дружественный интерфейс с непрофессиональным
пользователем;
обеспечивает адаптацию системы к изменяющимся условиям
эксплуатации;
имеет возможность быстрого расширения и изменения круга
реализуемых функций;
максимально удобно реализует связь всех функций с центра-
лизованной базой данных;
обеспечивает санкционированный доступ к информации базы
данных;
ведет подробный протокол работы пользователей системы и
оборудования;
позволяет оперативно и централизованно перераспределять
ресурсы системы администратору базы данных;
обеспечивает преемственность работы на технических средствах
различной конфигурации.
Инструментальным средством, удовлетворяющим вышеприве-
денным требованиям и обеспечивающим хорошее соотношение
стоимость/производительность, является ОС ДТ-МАКС (DT-MAX)
версии 6.0, которая и применены в данном комплексе.
3. ОСНОВНЫЕ РЕШЕНИЯ ПО РЕАЛИЗАЦИИ
КОМПОНЕНТОВ СИСТЕМЫ
3.1. Общие положения
Разрабатываемое автоматизированное рабочее место оператора
автоматических кабин и информационной системы предназначено для
работы на городских отделения электросвязи (ГОЭС) в составе
автоматизированной системы управления АПП ГОЭС. АРМ АПП
реализованы по принципу оконного интерфейса с использованием
библиотеки ДТМ-ПРО ("DTM PRO").
Реализованная в АРМ АПП концепция работы обеспечивает
наиболее благоприятные условия по предоставлению услуг телефонной
связи, а также сводит к минимуму затраты на его установку и
эксплуатацию.
Пользовательский интерфейс разработанной системы построен
таким образом, что оператор, работающий в системе, не встречает
каких-либо специфических особенностей при работе с любой задачей,
независимо от того к какой подсистеме эта задача относится.
Функционально выделенная задача оформляется в виде от-
дельной программы, которая при запуске, оперируя с общесистемными
переменными и специфическими (специальными) данными данной
системы, решает поставленную задачу и возвращается в точку вызова
этой программы.
При написании всех программ широко используется интегри-
рованная среда разработчика, включающая в себя пакет "UniForm".
Данный пакет состоит из процедур и функций, позволяющих
легко оперировать списками при их выводе на экран, организовывать
специальные окна для вывода информации различного рода на экран.
Кроме этого, пакет содержит редактор форм, позволяющий легко
представить вид выводимой на экран информации, как статического
вида, так и информации, изменяемой в процессе работы. Это позволяет
организовывать различного вида строки - поля, в позиции которых
производится ввод и вывод изменяющейся информации. Каждой такой
строке, кроме позиции, задается уникальное имя, порядковый номер,
определяющий последовательность в котором будет производиться
перемещение по строкам в процессе работы с данной формой вывода.
Кроме этого, для каждого поля вывода задается функция контроля ввода
символов, позволяющая задать набор допустимых символов для ввода.
Данный пакет обладает широким набором типов используемых
символов. Так, например, если указан тип поля "русские большие
буквы", то независимо от того, в каком режиме ввода находится
клавиатура, вводимые символы будут преобразовываться в заглавные
русские буквы. Данный пакет позволят устанавливать активные и
пассивные цвета для каждого поля, а также имена процедур, которые
будут вызываться до и после обращения к данному полю вывода.
Кроме описанных выше характеристик, данный пакет обладает
рядом возможностей, на которых мы не будем заострять внимание.
Программное обеспечение АРМ АПП и ИС:
системное ПО;
прикладное ПО.
Системное ПО представляет собой операционную систему ДТМ
(DTM) версии 6.0, которая обеспечивает функционирование
разработанного прикладного ПО, и на языке которой данное прикладное
ПО реализовано.
При разработке прикладного ПО использованы следующие
инструментальные средства:
редактор проектов;
редактор форм;
пакет программ "DTM PRO", реализующий средства органи-
зации экранного интерфейса с пользователем.
Прикладное ПО представляет собой набор отдельных про-
граммных модулей, реализующих все функции АРМ АПП и ИС. Для
объединения этих модулей в единый программный комплекс (проект)
используется редактор проектов, который представляет собой
средство для построения иерархических меню, в каждом конечном
пункте которых может вызываться определенный программный модуль.
Вся система меню построена таким образом, что задачи, назначение
которых позволяет объединить их в группы, находятся в одном меню.
Применение такого подхода позволяет строить интуитивно и логически
понятное дерево меню. Редактор проектов также позволяет
использовать "быстрые клавиши" для вызова любого программного
модуля (пункта меню) из любого меню проекта, чем повышается
удобство пользования системой, особенно при больших уровнях
вложенности меню.
Редактор форм позволяет создавать разнообразные экранные
формы, содержащие поля ввода и вывода информации различного типа,
выполнять различные операции над формами (вывод экрана формы,
вывод значений полей формы, опрос полей формы).
Пакет "DTM PRO" позволяет организовывать современный и
удобный экранный интерфейс с пользователем, используя унифи-
цированные средства построения различных списков, меню, диалогов.
Используя большое разнообразие входных параметров функций данного
пакета (размеры, цвета и т.п.), программист-разработчик может легко
строить необходимый диалог с пользователем.
3.2. Принципы обслуживания автоматических
каналов
Для отслеживания набора номера одновременно в 32 рабо-
тающих каналах и обслуживания периферийных устройств в АПП-РК
реализован псевдо-многозадачный режим базирующийся на теории
автоматов. Это позволило полностью использовать ресурсы мик-
ропроцессора. Обработчик прерываний от внешних устройств вы-
ставляет флаги различных событий, а автоматы их анализируют.
В АПП-РК реализованы два одновременно работающих авто-
мата. Первый автомат реагирует на события связанные с изменениями
состояний на линии автоматического канала (поднятие, укладка трубки;
набор номера; датчики начала разговора). Второй автомат предназначен
для формирования информации для последующей передачи ее в канал
связи с локальным сервером АПП ГОЭС.
Процесс отслеживания событий происходящих на автоматиче-
ской линии связи привязан к реальному времени и требует немедленной
реакции на события. В среде АПП ГОЭС возможности автоматическими
каналами увеличились (по сравнению с возможностями АПП-РК как
автономного устройства) и поэтому пришлось снять с него функции
тарификации разговоров, т.е. сложные математические операции,
связанные с пятибайтовой арифметикой. Эти функции были возложены
на DTM.
3.3. Взаимодействие системы DTM с АПП-РК
АПП-РК общается с сервером по каналу ИРПС через мульти-
портовую плату типа ASTBOARD. Обмен информацией происходит на
скорости 2400 бод. Этой скорости вполне достаточно для данного
объема передаваемой информации и обеспечения надежности. Канал
типа ИРПС допускает устойчивую передачу информации с данной
скорость на расстояние до 1км.
Каждая команда приходящая в или исходящая от АПП-РК за-
канчивается символом "*". Все команды большие латинские буквы. в
табл. 3.A.
Таблица 3.A
Описание команд
Команда
Назначение
E*
Разрешить передачу информации. Эту команду следует
передавать после включения или сброса АПП-РК, иначе
АПП-РК будет удерживать всю информацию во
внутреннем буфере (буфер не безразмерный, около 20
квитанций).
D*
Запретить передачу информации. После этой команды
АПП-РК будет удерживать всю информацию во внут-
реннем буфере (буфер не безразмерный, около 20 кви-
танций) до поступления команды "Е*".
S*
Список свободных кабин. АПП-РК возвращает список
свободных кабин (см. Передаваемую информацию).
V*
Состояние кабин.
F*
Совмещенная команда состояний и списка кабин.
Bn_s*
Включить кабину с номером n на сумму s. Если кабина
ручная то s - время в минутах. Ручную кабину можно
включить без задания времени.
On*
Отключить кабину.
L[строка та-
рифов]*
Передать тарифы для АПП-РК. Формат строки тарифов
смотрите ниже.
P[строка
установок]*
Передать установки для АПП-РК. Формат строки уста-
новок смотрите ниже.
Строки тарифов представляет собой набор символов, в котором
заключены пятибайтные значения тарифов. Первый байт строки
тарифов - размер оставшейся части строки. Второй байт строки - номер
страницы тарифов (0 - междугородние, 1 - международные). Дальше по
5 байт идут тарифы соответственно по 0, 1, 2.. зонам (их может быть до
20 шт.).
Формат строки установок приведен в табл. 3.B.
Таблица 3.B
Формат строки установок
Количество байт
Назначение
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.C.
Таблица 3.C
Расшифровка полей сообщения "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.D.
Таблица 3.D
Расшифровка полей сообщения "EEE"
Поле сообщения
Назначение
ZONE
Номер тарифной зоны
REST
Остаток
COST
Стоимость разговора
MM.SS
Продолжительность разгово-
ра
NC
Номер кабины
Формат сообщения на команду списка свободных кабин: "SSS
NC1 NC2T2 NCnTn*". Расшифровка полей сообщения приведена в табл.
3.E.
Таблица 3.E
Расшифровка полей сообщения "SSS"
Поле сообщения
Назначение
Ti
Тип кабины (A - авт. P -
ручн.)
NCi
Номер кабины
3.4. Взаимодействие оператора с АПП-РК
В АПП ГОЭС один оператор может выполнять множество задач:
прием кредитов, телеграмм, обслуживание АК и РК и т.д. Разговоры в
кабинах происходят во времени не зависимо от того, чем занимается
оператор и реакция на сообщения приходящие от АПП-РК должна
происходить сразу. Для этого между процессом оператора и АПП-РК
запускается теневой процесс который постоянно поддерживает связь с
АПП-РК. Передача информации между процессами происходит через
глобальные переменные. Теневой процесс реализован в модулях iapbckg
и ipabckgsub. Помимо связи с АПП-РК теневой процесс занимается
инициализацией АПП-РК, загрузкой системных установок, загрузкой
тарифов, отслеживанием аварийных ситуаций, формированием записей
в реестре, формированием сообщений для процесса операторы,
формированием журнала работы АПП-РК. Описание глобальных
переменных используемых в АРМ АПП приведено в табл. 3.F.
Таблица 3.F
Описание глобальных переменных
Название
глобальной
переменной
Узел
Назначение
^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-го
разговора
3.5. Взаимодействие системы DTM с информационной
системой
Идея информационной системы является новшеством в сфере
услуг предоставляемых ЦТЭ МТТС потребителям. Зачастую рядовой
пользователь не знает автоматических кодов городов СНГ и дальнего
зарубежья. Использование автоматической телефонной связи требует
знание кодов. Потребитель вынужден обращаться к оператору АПП за
данной информацией, чем отнимает у оператора рабочее время. ИС дает
потребителю достаточно просто и быстро получить нужную ему
информацию.
Помимо кодов направлений автоматической телефонной связи
ИС дает информацию пользователям об услугах МТТС, которые он
должен оплатить, что особенно необходимо при переходе на безбу-
мажную технологию.
Среди дополнительной информации выдаваемой ИС есть: та-
рифы на услуги телефонной связи и информация о подписных изданиях.
Помимо информации ИС используется как рекламное табло с
достаточно богатым набором функций MULTIMEDIA.
ИС общается с сервером по каналу ИРПС через мультипортовую
плату типа ASTBOARD. Обмен информацией происходит на скорости
9600 бод. Этой скорости вполне достаточно для данного объема
передаваемой информации и обеспечения надежности. Канал типа
ИРПС допускает устойчивую передачу информации с данной скорость
на расстояние до 1км.
4. МЕТОДИКА РАБОТЫ ПОТРЕБИТЕЛЯ С СИСТЕМОЙ
4.1. Общие сведения
Работа с пользователем организована в диалоговом режиме с
использованием системы меню для запуска программы, выполняющей
нужную функцию. Выбор пункта меню осуществляется перемещением
указателя по пунктам и нажатием "ENTER" на нужном или нажатием
"быстрой клавиши", при котором осуществляется вызов пункта из
любого меню, независимо от того, в каком меню находится оператор.
При разработке всего интерфейса было отдано предпочтение
использованию черно-белой гаммы цветов, так как использование
черно-белых мониторов позволяет значительно уменьшить нагрузку на
зрение оператора. Кроме того, все программы разрабатывались с
применением условия минимума вывода информации на экран. Это
обусловлено тем, что почти все программы будут эксплуатироваться на
терминалах, скорость вывода информации которых не очень велика.
4.2. Методика работы с автоматическими кабинами
АРМ АПП запускается из системы АПП ГОЭС посредством
выбора пункта меню УПРАВЛЕНИЕ АПП-РК\УПРАВЛЕНИЕ АВ-
ТОМАТИЧЕСКИМИ КАБИНАМИ, или нажатием соответствующей
клавиши быстрого запуска. Одновременно с АПП может работать
только один оператор. После запуска АРМ АПП оператор увидит
список кабин (рис. 4.A).
Форма экрана при работе с АК
Рис. 4.A
В верхней части рамки показан номер текущего оператора. В
нижней - список возможных клавиш и их назначение.
Занятые кабина помечены ярким выделением. Для каждой
кабины отображается задаток, остаток, тариф текущего разговора,
продолжительность текущего разговора, код города и телефон и со-
стояние кабины.
Для включения кабины необходимо нажать клавишу F3 затем
ввести номер кабины и задаток, который клиент вносит в кассу перед
разговором.
Для выключения кабины необходимо нажать клавишу F4 затем
ввести номер кабины, после чего необходимо вернуть клиенту остаток
изображенный на экране по нужной кабине.
Для просмотра протокола разговоров необходимо нажать кла-
вишу F6 и ввести номер кабины. Приблизительная форма протокол
изображена на рис. 4.B.
Протокол работы кабины
Рис. 4.B
По просьбе клиента после выключения кабины можно распе-
чатать квитанцию состоявшихся разговоров. Для этого нужно нажать
клавишу F5 затем ввести номер кабины. Приблизительная форма
квитанции изображена на рис. 4.C.
Форма квитанции по разговорам в автоматической кабине
Рис. 4.C
Для перехода в оформление ручного заказа нужно нажать
клавишу F8. Для выхода из АРМ АПП нужно нажать клавишу ESC.
При возникновении сбоя АПП-РК или пропадания связи с ним
АРМ АПП выводит сообщение показанное на рис. 4.D.
Аварийное сообщение
Рис. 4.D
При возникновении данного сообщения необходимо на задней
панели АПП-РК нажать кнопку сброс и затем на клавиатуре терминала
нажать .
4.3. Методика работы с ручными заказами
При вызове модуля оформления ручного разговора на экране
появится список заказов, изображенный на рис. 4.E
Список ручных заказов
Рис. 4.E
В нижней части рамки показан список возможных клавиш и их
назначение. В списке отображается номер заказа, номер оператора
принявшего заказ, название страны, название областного центра,
название региона, название населенного пункта, время или дата
принятия заказа в зависимости от типа заказа (текущий или уве-
домление), время ожидания абонентом разговора.
Для получения более подробной информации по заказу нужно
нажать клавишу F4. Вид подробной информации по текущему заказу
показан на рис. 4.F, по уведомления на рис. 4.G.
Форма оформления текущего заказа
Рис. 4.F
Форма оформления уведомления
Рис. 4.G
Для оформления заказа необходимо нажать клавишу F2 затем
выбрать тип заказа (уведомление или текущий) и заполнить прототип
формы МТФ-4 (см рис.4.F.,рис.4.G).
Принимая заказ, телефонистка переговорного пункта заполняет
со слов абонента прототип формы МТФ-4 (см рис.4.F, рис.4.G) ,
распечатать квитанцию о принятии задатка и выдает ее абоненту.
На квитанции должен быть поставлен календарный штемпель
предприятия связи.
Если прием заказов на разговоры с данным городом регулиру-
ется, телефонистка переговорного пункта, принимая заказ от абонента,
должна спросить у телефонистки заказной службы, на какое время
можно принять заказ. Получив ответ, телефонистка переговорного
пункта должна согласовать время с абонентом.
Сумма вносимой абонентом платы за заказываемый разговор
определяется автоматически на основании:
тарифа;
стоимости минуты разговора с вызываемым пунктом;
предполагаемой абонентом продолжительности разговора;
указанных в заказе услуг.
После принятия у клиента задатка оператор передает по те-
лефону заказ телефонистке заказного коммутатора в коммутаторный зал
и оформляет передачу на терминале (клавиша ENTER). Пре оформлении
передачи необходимо ввести номер телефонистки принявшей заказ.
Если продолжительность разговора за наличный расчет и вы-
полненные платные услуги не соответствуют указанным в заказе,
телефонистка междугородного коммутатора по окончании разговора
сообщает оператору переговорного пункта продолжительность состо-
явшегося разговора и выполненные услуги. Оператор вводит про-
должительность состоявшегося разговора машину.
Если телефонистка междугородного коммутатора сообщает, что
невозможно предоставить разговор (нет вызываемого лица, по
вызываемому телефону не ответили и пр.), оператор немедленно до-
водит до сведения абонента, ожидающего разговора. Если последний не
называет другого лица и согласен ожидать, оператор сообщает об этом
телефонистке междугородного коммутатора.
Если абонент отказывается ожидать и снимает заказ, оператор,
прежде чем снять заказ, должна предложить абоненту ряд услуг для
обеспечения разговора.
Если продолжительность разговора окажется менее оплаченной
разница выдается абоненту оператором.
Если разговор не состоялся по вине станции или абонент не
желает перенести его на другое время, то разговор снимается и сумма
выдается абоненту оператором. Причина снятия фиксируется в машине.
Машина сообщает оператору сумму остатка. Причины остатка
перечислены в табл. 4.G.
Таблица 4.G
Причины снятия
Код при-
чины
Описание причины
ОМС
Отказ в момент соединения
НВЛ
Нет вызываемого лица
NoНО
Номер не ответил
ПВ
Повреждения связи
ПС
Плохая связь
ТИ
Телефон испорчен
СО
Сеанс окончен
РВ
Связь под радиовещанием или ДГТС
ВК
Связь занята разговорами высшей категории или по
срочному тарифу
ОДС
Отказ до соединения
ЗНЯ
Абонент не явился
При расчете квитанция, выданная абоненту при приеме заказа,
отбирается и уничтожается; по требованию абонента ему выдается
квитанция о стоимости состоявшегося разговора.
4.4. Методика работы с информационной системой
Оператор информационной системы обязан при принятии смены
включить информационную систему. Обычно эту работу выполняет
оператор АПП. Перед запуском информационной системы оператор
должен проверить или при необходимости внести изменения в
конфигурацию ИС. При в ходе в пункт меню УПРАВЛЕНИЕ
ИНФОРМАЦИОННОЙ СИСТЕМОЙ/КОНФИГУРАЦИЯ ИНФОР-
МАЦИОННОЙ СИСТЕМЫ на экране появится список устройств
зарезервированных для ИС и их состояние (рис. 4.H). Внизу подписаны
возможные клавиши и их назначение.
Форма экран при конфигурации информационной системы
Рис. 4.H
При редактировании настроек или создании новой станции на
экран выводится форма, показанная на рис. 4.I.
Форма экрана при редактировании настроек информационной
станции
Рис. 4.I
Номер устройства соответствует номеру канал, к которому
подключена ИС. Если выставлен флаг монитора АПП, то информа-
ционная станция выполняет функции табло расчетов с АПП. Флаг
"АКТИВНО" говорит о том, что устройство будет запущено при запуске
информационной системы.
5. ЭКОНОМИКО-ОРГАНИЗАЦИОННАЯ ЧАСТЬ
5.1. Сущность сетевого планирования и управления
5.1.1. Назначение и области использования
Развитие современной техники характеризуется все возрас-
тающей сложностью. Усложняются конструкции создаваемых машин и
агрегатов, увеличивается число различных сопряженных звеньев в
механизированных и автоматизированных комплексах. Целью иссле-
дования и проектирования все чаще становится комплексное решение
вопросов внедрения новой техники, создание не отдельных машин, а
целых систем.
При создании сложных объектов новой техники возникает
необходимость в координации различных научно-исследовательских,
опытно-конструкторских, технологических, производственных,
строительных, монтажных, наладочных и других работ. В них при-
нимают участие в порядке кооперирования многие предприятия раз-
личных отраслей промышленности: проектные, опытно-
конструкторские, научно-исследовательские и иные организации,
деятельность которых для обеспечения максимальной эффективности
ведущихся разработок должна быть тесно увязана в единый ко-
ординационный план, предусматривающий окончание всего комплекса
работ в заданные сроки при минимальных или лимитированных
издержках.
Планы работ по созданию новой техники должны устанавливать
не только общую длительность всего процесса, но и продолжительность
и последовательность всех входящих в него работ и их этапов.
При освоение относительно простых объектов для этой цели
давно и широко применяют ленточные или поэтапные графики. На этих
графиках по горизонтальной оси откладывают время, а по вертикальной
перечисляют все работы или этапы процесса (рис. 5.A).
При освоении сложных объектов современной техники пла-
нирования и управления разработками должны выполняться при по-
мощи методов сетевого планирования и управления (СПУ). Эти методы
позволяют оптимизировать процесс создания новой техники как по
времени (обеспечивать минимальную длительность цикла), так и по
стоимости (обеспечивать минимум затрат).
СПУ основано на графическом изображении определенного
комплекса работ, отражающем их логическую последовательность,
взаимосвязь и длительность, с последующей оптимизацией разрабо-
танного графика при помощи методов прикладной математики и вы-
числительной техники и его использование для текущего руководства
этими работами.
Ленточный график.
Рис 5.A
К числу основных областей применения сетевого планирования и
управления относятся комплексные научные исследования,
проектирование и подготовка производства сложных объектов новой
техники, сооружения инженерных и прочих сложных объектов, включая
строительство промышленных (в частности, машиностроительных)
предприятий и цехов.
5.1.2. Основные понятия и определения.
Модель всего процесса создания данного объекта изображается в
виде ориентированного графа, называемого сетевым графиком или
просто сетью. Сетевые модели могут иметь детерминированную,
стохастичную и смешанную структуру.
В детерминированных моделях все работы проекта, их взаи-
мосвязи и требования к ожидаемым результатам работ определены.
Если работы включены с некоторой вероятностью, структура сетевой
модели будет носить случайный характер. В смешанных моделях часть
работ входит в сеть детерминировано, а часть - с некоторой
вероятностью. Понятие детерминированности применяется как к
структуре сети, так и к оценкам продолжительности планируемым
работ. Детерминированными принято обычно называть сети, обла-
дающие и детерминированной структурой, и детерминированными
оценками продолжительности работ. Сетевые графики с детермини-
рованной структурой, но с вероятностными оценками называют ве-
роятностными.
Элемент сетевого графика.
Рис 5.B
изготовление опытного образца машины, а событием - момент
завершения работы, в данном случае момент готовности образца, после
которого должна начаться следующая работа - его испытание и доводка.
Таким образом, сетевой график выражает логическую по-
следовательность и связь событий, а каждое событие является про-
межуточным или окончательным результатом одной или нескольких
выполненных работ.
На рис. 5.B изображен фрагмент сетевого графика. Событие
обозначены кружком с указанием в нем его последовательного номера, а
работы - стрелкой. Номер события у острия стрелки конечного события
j должен быть больше номера начального события i (с которого
начинается данная работа). Длина стрелки графически не выражает
продолжительности выполнения работы, она обозначается числом дней
или недель и наносится над стрелкой. Если для перехода от одного
события к другому не требуется затрачивать время, а на графике
необходимо изобразить взаимную связь этих событий, то их соединяют
пунктирной стрелкой. Такая работа называется фиктивной или
условной.
На рис. 5.C. изображен сетевой график для весьма несложного
комплекса работ по проектированию и изготовлению стенда.
Полный путь в сетевом графике - это любая непрерывная по-
следовательность взаимосвязанных событий и работ, ведущая от со-
бытия исходного (начального события всего сетевого графика) I к
завершающему (последнему событию сетевого графика) C. Кроме
полных путей L (I - C) следует различать:
путь от исходного события до данного промежуточного события
L (I - i);
путь, соединяющий данное промежуточное событие с завер-
шающим, L (i - C);
путь между двумя событиями, из которых ни одно не является,
ни исходным, ни завершающим.
Сетевой график для комплекса работ по проектированию и
изготовлению стенда.
Рис 5.C
Среди этих путей особое значение имеет критический путь -
последовательность работ от исходного до завершающего события,
требующая наибольшего времени для своего выполнения tmax [L(I- C)].
Таким образом, продолжительность работ, лежащих на критическом
пути, определяет общий цикл завершения всего комплекса работ,
планируемых при помощи сетевого графика.
5.2. Построение сетевых графиков и оценка времени
выполнения работ
5.2.1. Стадии СПУ
Сетевое планирование и управление проводится в следующей
примерной очередности. Разработки исходного плана:
расчленение комплекса работ на отдельные этапы или группы
работ, закрепляемое за ответственными исполнителями;
выявление и описание каждым ответственным исполнителем
всех событий и работ, необходимых для выполнения поставленной
перед ним конечной цели; построение ("сшивание") первичной сети,
частных и свободной сетей;
определение времени выполнения каждой работы в сети на осно-
ве системы оценок;
расчеты параметров сетевого графика;
анализ сетевого графика и его оптимизация.
Расчленение комплекса работ по созданию системы проводится
руководителем головной организации или техническим руководителем
проекта. Применяются два способа расчленения комплекса работ: путем
разработки укрупненной сети или построением схемы уровней
руководства - иерархической структуры.
В первом случае система подразделяется на крупные элементы,
соответствующие отдельным машинам, агрегатам или этапам работ, для
чего строится укрупненный сетевой график. Затем каждая машина,
агрегат, этап делятся на узлы, подэтапы и т.п. и на каждый их них также
составляется сетевой график.
Во втором случае создаваемая система делится на составные
элементы при помощи построения ее иерархической структуры
(рис.5.D). Проектирование графиков на каждом уровне руководства
поручается руководителям, а на самом низшем - ответственным
исполнителям.
В относительно несложном случае, например, при планировании
подготовки производства какого-либо нового изделия, соответст-
вующими уровнями могут быть:
1-й (высший) уровень - управление всей технической подго-
товкой производства;
2-й уровень - конструкторская, технологическая, материальная
подготовка;
3-й уровень - стадии конструкторской, технологической и
материальной подготовки производства;
4-й уровень - отдельные комплексы работ по каждой стадии
подготовки производства.
Схема иерархическая структуры руководства созданием новой
техники
Рис 5.D
Создание же сложного изделия или комплекса может потре-
бовать значительно большего числа уровней руководства.
Первичные сети, строящиеся на уровне ответственных испол-
нителей, детализируются до такой степени, чтобы в них были отражены
вся совокупность работ и все взаимосвязи событий и работ. Подобная
детализация не является необходимой при "сшивании" частных сетей,
каждая из которых объединяет первичные сети, составленные в данной
организации или на данном предприятии. Первичные сети, являющиеся
элементами такой частной сети, могут быть в ней укреплены.
Отдельные пути, состоящие из целого ряда взаимосвязанных работ и
событий первичной сети, могут быть показаны в виде одной работы.
Например, вся первичная сеть по проектированию и изготовлению
стенда (см. рис. 5.C) может быть представлена в виде одной работы:
"Проектирование и изготовление стенда" с двумя событиями "Принято
решение о создании стенда" и "Стенд готов и отлажен".
От первичных сетей в частной сети всегда должны сохраняться
так называемые граничные события, т.е. события, принадлежащие двум
или большему количеству первичных сетей, и граничные работы, т.е.
работы, у которых предшествующее или последующее событие является
граничным.
Аналогично строится и сводная сеть, т.е. сеть, объединяющая
весь комплекс работ, в котором занят ряд организаций и предприятий. В
одной сводной сети первичные и частичные сети еще более
укрупняются, однако и в ней обязательно показать граничные события
частных сетей.
Как в частных, так и в свободных сетях желательно более
подробно показывать события и работы, относящиеся к критическому
пути.
5.2.2. Описание и последовательность выполнения событий и работ в
первичном сетевом графе
Прежде всего, необходимо выявить, какими событиями будет
характеризоваться данный комплекс работ, порученный ответственному
исполнителю. Каждое событие должно характеризовать законченность
предшествующих действий, например, "Завершено испытание опытных
образцов" или "Проведено обучение обслуживающего персонала" и т.д.
Все события и работы, входящие в комплекс работ, рекомен-
дуется свести в таблицу в порядке их последовательности. Во избежание
неправильной оценки в дальнейшем общей продолжительности
разработки проекта необходимо тщательно проверить этот перечень.
Например, для сети из 14 событий, входящих в процесс создания АПП
ГОЭС, перечень может быть принят следующим (табл. 5.A).
5.2.3. Сшивание сети
Каждый ответственный исполнитель, используя составленный
им перечень событий и работ, "сшивает" свою первичную сеть. По-
строение сети можно начинать как от завершающего события, по-
степенно приближаясь к исходному, так и наоборот - от исходного
события к завершающему; в левом конце ее следует располагать ис-
ходной (нулевое) событие, а в правом - завершающее (см. рис. 5.C).
При проверке созданной сети из нее необходимо исключать:
"тупиковые события", т.е. те, от которых не начинается ни одна
работа (естественно, за исключением завершающего события);
события, которым не предшествует ни одна работа (за исключе-
нием исходного события);
замкнутые контуры (направление стрелок, отображающих по-
следовательность выполняемых работ, образует замкнутое кольцо);
одинаковые коды для параллельных работ между двумя события-
ми.
После составления и проверки первичных сетевых графиков,
разрабатываемых каждым ответственным исполнителем для своей
группы работ, переходят к сшиванию частных и свободного сетевых
графиков, т.е. к объединению всех первичных сетевых графиков в
общую сводную сеть, завершающее событие которой соответствует
конечной цели разработки.
Таблица 5.A
Перечень событий, входящих в процесс создания АПП ГОЭС
Порядковый
номер собы-
тия
Событие
Коды ра-
бот
Работа
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.A
Порядковый
номер собы-
тия
Событие
Коды ра-
бот
Работа
9
Комплекс программ просмотра реестров
создан
9,10
Состыковка комплекса с другими
программами
10
Комплес программ администрирования
создан
10,11
Объединение созданных про-
грамм в единую систему
11
Все созданные комплексы объединены в
единую систему
11,12
Тестирование системы в реальных
условиях работы
11,13
Написание документации по
созданной системе
12
Тестирование системы закончено
12,14
Внедрение системы в производ-
ство
13
Написание документации закончено
13,14
Обучение персонала по готовой
документации
14
АПП ГОЭС создан и внедрен
Практика применения СПУ показывает, что при наличии в
системе до 300 событий все расчеты по сети могут быть проведены
вручную или при помощи счетно-клавишных машин. Большее число
событий вызывает необходимость применения ЭВМ и использования
специальных программ.
5.2.4. Определение времени выполнения каждой работы на основе
системы оценок
Для планирования длительности работ необходимо пользоваться
соответствующими нормативами и обобщенными опытными данными.
При их отсутствии используют три оценки времени, даваемые
ответственными исполнителями по каждой работе: минимальное,
максимальное, наиболее вероятное время - или две: минимальное и
максимальное время. Эти оценки обычно выражаются в днях или не-
делях.
Если от ответственного исполнителя работы затребовать только
одну оценку времени tн.в., то возникает опасность, что она может
оказаться нереальной, а это нарушит весь график работы по проекту,
особенно, если данная работа будет лимитировать срок разработки в це-
лом.
Минимальное время tmin - минимально возможное время вы-
полнения данной работы. Вероятность выполнения работы за такое
время невелика. Максимальное время tmax - это максимальное время
выполнения данной работы при крайней неудачном стечении обстоя-
тельств, например, при возможности разрушения испытываемого из-
делия, выявления неправильности пути, выбранного для исследования,
и т.д. Наконец, наиболее вероятное время tн.в. - возможное время
выполнения данной работы при условии, что не возникнет никаких
особых и неожиданных трудностей.
Наиболее вероятная оценка времени tн.в. не может быть принята в
качестве величины ожидаемого времени выполнения каждой работы tож,
так как в большинстве случаев наиболее вероятное время оценивается
ответственным исполнителем по-разному: в одних случаях - ближе к
минимальному, в других - к среднему, т.е., как правило, не будет
совпадать с ожидаемым. Поэтому для определения ожидаемого времени
выполнения каждой работы полученные оценки подвергают
статистической обработке, допустив, что вероятности
продолжительности выполнения любой работы распределяются в со-
ответствии с законом бета распределения. Тогда:
Среднее квадратическое отклонение принимается равным 1/6
размаха, т.е.
Квадрат ?tож называется дисперсией и служит мерой разброса
ожидаемого времени:
Исследования советских математиков показали, что расчет с
ошибкой, не превышающей 1%, может производиться и по двум
оценкам времени tmin и tmax. Предложенные ими уравнения имеют
следующий вид:
Решение двух уравнений для каждой работы дает необходимые
значения ожидаемого времени и его дисперсию, нужную для оценки
вероятности свершения событий в заданный срок.
Найденные значения tож заносят в таблицу и на сети над каждой
работой проставляют оценки времени (см. рис. 5.C).
Применяемый в обоих случаях (при двух или трех оценках)
метод усреднения продолжительности работ, полученных на основании
вероятностных оценок, позволяет вероятностную сеть рассматривать
как детерминированную.
5.3. Экономический расчет
Автоматизированный переговорный пункт городского отделения
электросвязи представляет собой аппаратно-программный комплекс,
который включает в себя технические и программные средства,
позволяющие автоматизировать ряд действий персонала городского
отделения электросвязи или районного узла связи в частности:
управление автоматическими кабинами междугородной те-
лефонной связи;
управление приемом и обслуживанием разговоров при ком-
мутации ручных междугородных разговоров;
прием и передача телеграфных сообщений;
"перенос на плечи" пользователя информирования о кодах
городов дальнего и ближнего зарубежья, городов и районов Украины
для автоматической телефонной связи, об услугах электросвязи,
предоставленных в кредит, о перечне подписных изданий, о возмож-
ности подачи разного рода объявлений;
выполнение услуг по рекламе с помощью информационной
системы, входящей в состав АПП ГОЭС (РУЭС)
автоматизация процессов передачи телефаксов;
автоматизация процесса получения оплат за услуги почтовой и
электрической связи;
автоматизированное формирование различных реестров и
дневника работы АПП ГОЭС (РУЭС) с накоплением информации по
различным периодам;
загрузку и выгрузку информации об услугах, представленных в
кредит, рассчитанных централизованно;
ведение справочника сотрудников АПП ГОЭС (РУЭС) с
обеспечением парольной защиты и уровня доступа к системе различных
категорий операторов;
настройка параметров на конкретные условия применения АПП
ГОЭС (РУЭС).
5.3.1. Определение затрат на разработку программы
Основная зарплата на 1 человека за 1 месяц 80.00$.
Основная зарплата на 5 человек за 2 месяцев 800.00$.
Дополнительная зарплата 800.00$*13%= 104.00$.
Сумма отчислений от зарплаты 904.00*52%= 470.08$.
Материалы и оборудование 500.00$.
Накладные расходы 800.00*300%=2'400.00$.
Прибыль (2'400.00+ 500.00+ 470.08+ 904.00)*25% =
4'274.08*0.25%=1'068.52$.
Налог на добавочную стоимость 5'342.60*20%=1'068.52$.
Расчет затрат приведен в табл. 5.B.
Таблица 5.B
Расчет затрат
Затраты
Сумма, $
Удельный вес к
ИТОГУ, %
Основная зарплата
800.00
12.48
Дополнительная зарплата
104.00.
1.62
Сумма отчислений от зарплаты
470.08.
7.33
Материалы и оборудование
500.00
7.80
Накладные расходы
2'400.00
37.43
Прибыль
1'068.52
16.67
НДС
1'068.52
16.67
ИТОГО ($)
6'411.12
10'000.00
ИТОГО (крб.) 6'411.12$*200'000=1'282'224'000.00 крб.
Расчет эксплуатационных расходов до внедрения АПП ГОЭС
приведен в табл. 5.C
Таблица 5.C
Затраты до внедрения АПП ГОЭС при кол-ве квитанций 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
Расходы на электроэнергию, по-
требляемую принтером в месяц, крб.
165'000
(0.6*5500)*
((150000/50)/60)
Стоимость принтера, крб.
140'000'000
Амортизационные расходы (11% от
стоимости принтера в год*1/12) в
месяц.
1'283'333
140000000*0.11/12
Итого в месяц, крб.
846'446'033
Итого в год (12 месяцев), крб.
10'157'352'396
Идовнед=10'157'352'396 крб.
Расчет стоимости КТС на одно отделения связи приведен в табл.
5.D.
Таблица 5.D
Расчет стоимости КТС на одно отделение связи.
Наименование
Кол-во,
шт.
Цена за
шт., $
Сумма, $
Рабочая станция 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.E
Затраты после внедрения АПП ГОЭС
Расчитываемый параметр
Кол-во
Расчет
Количество отделений связи, шт
26
Мощность КТС одного отделения
связи, кВт*ч
0.3
Время работы одного отделения
связи в месяц (14 часов * 365.25 дня),
ч
5'114
Стоимость 1кВт*ч, крб
5'500
Стоимость электричества на все от-
деления связи, крб
219'390'600
26*0.3*420*5500
Амортизационные расходы на все
отделения связи (11% от стоимости
оборудования в год), крб
1'144'000'000
400000000*0.11*26
Текущий ремонт (3% от стоимости
оборудования в год), крб
312'000'000
400000000*0.3*26
Прочие расходы (3% от стоимости
оборудования в год), крб
312'000'000
400000000*0.3*26
Общие затраты в год, крб
1'987'390'600
Расчет капитальных вложений приведен в табл. 5.F
Таблица 5.F
Капитальные вложения на АПП ГОЭС.
Наименование
стоимость
крб
Стоимость КТС на 26 отделений связи(КТС на отде-
лениях связи используются только для работы с данной
системой)
10'400'000'000
Стоимость разработки ПО
1'282'224'000
Итого
11'682'224'000
Определение экономической эффективности
Э =Идовнед — Ипосле — Sрп/(n*Тс)= 10'157'352'396-1'987'390'600-
256'444'800 = 7'913'516'996
ТОК = К/Э =11'682'224'000/7'913'516'996= 1.48
Годовая экономия от внедрения АПП ГОЭС позволяет окупить
затраты на разработку комплекса в течении 1.5 года. Таким образом уже
через полтора года комплекс начнет приносить доход около 8 млрд. в
год.
6. ОХРАНА ТРУДА
6.1. Значение охраны труда
Охрана труда - это система правовых, социально-экономических,
организационно-технических, санитарно-гигиенических и лечебно-
профилактических мероприятий и средств, направленных на сохранение
здоровья и работоспособности человека в процессе труда.
Государственная политика в области охраны труда базируется на
принципах:
приоритета жизни и здоровья работников по отношению к ре-
зультатам производственной деятельности предприятий, полной от-
ветственности собственника за создание безопасных и безвредных усло-
вий труда;
комплексного решения задач охраны труда на основе нацио-
нальных программ по этим вопросам с учетом других направлений
экономической и социальной политики, достижений в области науки и
техники и охраны окружающей среды;
социальной защиты работников, полного возмещения ущерба
лицам, потерпевшим от несчастных случаев на производстве и про-
фессиональных заболеваний;
установления единых нормативов по охране труда для всех
предприятий, независимо от форм собственности и видов их дея-
тельности, использование экономических методов управления охраной
труда, проведения политики льготного налогообложения, что
способствует созданию безопасных и безвредных условий труда,
участия государства в финансировании мероприятий по вопросам охра-
ны труда;
обеспечения координации деятельности государственных ор-
ганов, учреждений, организаций и объединений граждан, решающих
различные проблемы охраны здоровья, гигиены и безопасности труда, а
также сотрудничества и проведения консультаций между соб-
ственниками и работниками, между всеми социальными группами при
принятии решений по охране труда на местном и государственном уров-
нях;
международного сотрудничества в области охраны труда, ис-
пользования мирового опыта организации работы по улучшению ус-
ловий и повышению безопасности труда. /A/
Полностью безопасных и безвредных производств не сущест-
вует. Задача охраны труда - свести к минимуму вероятность несчастного
случая или заболевания работающего с одновременным обеспечением
комфортных условий при максимальной производительности труда. /G/
Деятельность пользователя видеотерминала заключается в
основном в наблюдении за появляющимися сигналами, принятии
решения и использовании принятых решений или поступающих команд.
В ряде случаев работа выполняется в соответствии с жестким
алгоритмом, например, ввод информации, часто сопровождающийся
проявлением монотонии.
В других случаях работа связана с диалогом, включающим
интенсивную умственную нагрузку, в результате чего человек пре-
бывает в постоянной готовности к действиям, нередко в условиях
дефицита времени. Подобная работа часто сопровождается высоким
нервно-эмоциональным напряжением, проявление которого наклады-
вает определенные ограничения на режим работы.
Можно выделить три основных вида работ, в процессе выпол-
нения которых используются дисплеи:
1) ввод и редактирование данных, характеризующиеся высокой
скоростью ввода информации, небольшими перерывами в работе,
низкой потребностью в обмене информацией и небольшой частотой
принятия решений. Работа не требует большого умственного напря-
жения, чаще монотонная.
2) Диалоговые виды работ - с документами, экраном и кла-
виатурой, характеризующиеся средней скоростью ввода информации,
часто сопровождающиеся перерывами различной длительности, не-
постоянной (неритмичной) потребностью в обмене информацией с
ЭВМ, с принятием решений.
3) Отладка программ - работа преимущественно с экраном и
документацией, характеризующиеся низкой скоростью ввода инфор-
мации, частыми перерывами на обработку информации и ожидание
ответных реакций ЭВМ, большой потребностью в обмене информацией
и высокой частотой принятия решений. При этом объем интел-
лектуальных усилий, затрачиваемых на различных стадиях разработок,
зависит от индивидуальных особенностей, качества программы.
В зависимости от вида деятельности пользователя в системе
"человек-дисплей" могут преобладать сенсорно-перцептивная, моторная
либо интеллектуальная деятельность (например, у операторов
подготовки данных преобладает сенсорно-перцептивная и моторная
деятельность, тогда как у инженеров-программистов - интеллекту-
альная).
Особенностью работы за дисплеем является постоянное и
значительное напряжение функций зрительного анализатора, обу-
словленное необходимостью различения самосветящихся объектов
(символов, знаков и т.п.) при наличии бликов на экране, мельканием
изображения, недостаточной четкостью объектов различения.
Условия труда пользователя, работающего с дисплеем, опре-
деляются условиями освещения в помещении дисплейного зала и на
рабочем месте; параметрами микроклимата; эргономическими харак-
теристиками основных элементов рабочего места.
Согласно ст. 22 Закона Украины "Об охране труда" одним из
наиболее важных подразделов коллективного договора должны быть
комплексные мероприятия по достижению установленных нормативов
безопасности, гигиены труда и производственной среды, повышению
существующего уровня охраны труда, предотвращению случаев
производственного травматизма, профессиональных заболеваний и
аварий.
6.2. Организационно-технические мероприятия
Это система организационных мероприятий и технических
средств, предотвращающая или уменьшающая воздействие на рабо-
тающих опасных и вредных производственных факторов.
Опасный производственный фактор - фактор, воздействие ко-
торого на работающего в определенных условиях приводит к травме
или другому внезапному резкому ухудшению здоровья.
Вредный производственный фактор - фактор, воздействие ко-
торого на работающего в определенных условиях приводит к заболе-
ванию или снижению работоспособности. /H/
Опасные и вредные производственные факторы подразделяются
по природе действия на следующие группы: физические, химические,
биологические, психофизиологические. /I/
При работе дисплея образуется ряд физических факторов, в том
числе, таких как гамма, рентгеновское, микроволновое, радиочастотное,
ультрафиолетовое, видимое и инфракрасное излучение, уровни которых
значительно ниже предельно допустимых. Наряду с этим на рабочих
местах с функционирующими видеотерминалами создается
электростатическое поле между экраном и оператором. /K/
Автоматизированная программно-аппаратная система расчетов
за услуги междугородной электросвязи разработана для работы с
персональными ЭВМ класса IBM PC/AT, что обеспечивает высокую
надежность в процессе эксплуатации данной системы.
Система работает в интерактивном режиме работы, при котором
пользователь взаимодействует со стандартными устройствами ввода-
вывода, полностью отвечающими требованиям безопасности.
Помещение по степени опасности поражения электрическим
током относится к классу помещений без повышенной опасности.
Материалы конструкции оборудования не оказывают опасного и
вредного воздействия на организм человека во всех режимах работы,
предусмотренными условиями эксплуатации, а также не создают по-
жаро и взрывоопасные ситуации.
Конструкция оборудования и его отдельных частей исключает
возможность их падения, опрокидывания и произвольного смещения
при всех предусмотренных условиях эксплуатации.
Для персонала отделений электросвязи представляет опасность
электрический ток. Безопасность эксплуатации оборудования
обеспечивается комплексом мер безопасности, применением защитных
средств и правильной организации эксплуатации действующих элек-
троустановок.
Для обеспечения защиты от случайного прикосновения к токове-
дущим частям применяются следующие способы и средства:
защитные оболочки;
защитные ограждения;
безопасное расположение токоведущих частей;
изоляция токоведущих частей (рабочая, дополнительная, усилен-
ная, двойная);
изоляция рабочего места;
малое напряжение;
защитное отключение;
предупредительная сигнализация, блокировка, знаки безопас-
ности.
Для обеспечения защиты от поражения электрическим током при
прикосновении к металлическим нетоковедущим частям, которые могут
оказаться под напряжением в результате повреждения изоляции приме-
няют следующие способы:
защитное заземление;
зануление;
выравнивание потенциалов;
защитное отключение;
изоляция нетоковедущих частей;
электрическое разделение сети;
малое напряжение;
контроль изоляции и др. /J/
На рабочих местах операторов установлены розетки с напря-
жением 220В.
Все оборудование поддерживается в рабочем состоянии и об-
служивается специалистами цеха технической эксплуатации между-
городной телефонно-телеграфной связи. В случае возникновения не-
исправности оборудования, оператор немедленно сообщает о неис-
правности в данное подразделение МТТС.
Изоляция составных частей оборудования, доступных для
прикосновения, полностью обеспечивает защиту человека от поражения
электрическим током.
Рабочее место для выполнения работ сидя организуют при
легкой работе, не требующей свободного передвижения работающего.
Устройство рабочего места и взаимное расположение всех его
элементов (сиденье, органы управления, средства отображения ин-
формации и т.д.) соответствуют антропометрическим, физиологическим
и психологическим требованиям, а также характеру работы.
Эргономическая организация рабочего места, оснащенного
дисплеем, учитывает специфику конкретного рабочего места и осо-
бенности выполняемых пользователями задач с применением видео-
терминала ЭВМ.
К основным эргономическим задачам организации рабочего
места относятся:
определение пространственных параметров рабочего места и его
элементов, соответствующих антропометрическим характеристикам
контингента работающих;
оптимальное размещение элементов рабочего места относи-
тельно пользователя на основе анализа его деятельности.
Основными параметрами рабочего места, оснащенного дис-
плеем, являются 20 позиций (табл. 6.A). Рабочее место изображено на
рис. 6.A.
Таблица 6.A
Пространственные параметры рабочего места
Условн
ое обо-
значен
ие па-
раметр
а
Параметр
Способ
измерения
параметра
Степень
необходи-
мости ре-
гулирова-
ния
Значе-
ние
пара-
метра
мм (?)
Примечание
1
Высота сиденья
От пола до верхней
плоскости сиденья
Необходима
400-500
Регулируемый
параметр

Высота кла-
виатуры
От пола до нижнего
ряда клавиатуры
Желательна
600-750
620-700
Диапазон регули-
ровки
Для нерегули-
руемой высоты

То же (от
уровня стола)
От базовой поверхно-
сти до нижнего ряда
клавиатуры
-"-
Около
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.A
Услов-
ное
обозна-
чение
пара-
метра
Параметр
Способ
измерения
параметра
Степень
необходи-
мости ре-
гулирова-
ния
Значе-
ние
пара-
метра
мм (?)
Примечание
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.A
Услов-
ное
обозна-
чение
пара-
метра
Параметр
Способ
измерения
параметра
Степень
необходи-
мости ре-
гулирова-
ния
Значе-
ние
пара-
метра
мм (?)
Примечание
17
Угол наклона
подставки для
ног
От горизонтали
-"-
(0-25)
(15)
Диапазон регули-
ровки
Нерегулируемая
величина
18
Глубина под-
ставки для ног
От переднего до зад-
него края
-"-
400
19
Ширина под-
ставки для ног
-"-
300
20
Пюпитр-
подставка для
документов
От горизонтали
-"-
15?-
20?
Рабочее место пользователя ЭВМ (обозначения на рис 6.A
соответствуют отмеченным в табл. 6.A).
Рис 6.A
Расстояние от глаз пользователя до экрана дисплея составляет
500-700мм, угол зрения 10-20?, но не более 40?; угол между верхним
краем видеотерминала и уровнем глаз оператора составляет менее 10?.
Предпочтительным является расположение экрана перпендикулярно к
линии зрения пользователя.
Конструкцией рабочего места обеспечено оптимальное поло-
жение работающего. Руки пользователя располагаются на рабочем столе
в горизонтальном положении или слегка наклонно, угол локтя должен
составлять 70-90?. Необходима хорошая опора для спины и ягодиц.
Бедра располагаются параллельно полу. Ноги стоят плоско на полу или
на подставке. /M,N,O/
Для обеспечения удобства в случаях выполнения интенсивной
работы предпочтение отдается отделяемой клавиатуре. Встроенные
клавиатуры более приемлемы для компактных настольных дисплеев,
предназначенных для периодического пользования.
Рабочие места, оборудованные дисплеями, расположены таким
образом, чтобы в поле зрения оператора не попадали окна и ос-
ветительные приборы. Видеотерминалы размещаются под углом 90-
105? к окнам и на расстоянии не менее 2.5-3 м от стены с оконными
проемами.
В поле зрения оператора, работающего с дисплеем, не попадают
поверхности окружностей среды, которые обладают зеркальным
отражением. Соотношение яркости экрана и ближайших поверхностей
отражения не превышает 5:1. Покрытие стола матовое с коэффициентом
отражения 0.25-0.4. /L/
6.3. Мероприятия по производственной санитарии и
гигиене труда
Помещения, оснащенные дисплеями, располагаются в северной
или северо-восточной части здания. В случае если же помещение
ориентировано на юг, предусмотрены солнцезащитные устройства
(жалюзи, шторы и т.п.).
Объем производственных помещений на одного работающего
составляет не менее 15м3, а площадь помещений - не менее 4.5м2.
Расстояние между рабочими местами, оборудованными дисплеями, не
менее 1м между рядами.
В помещениях, оборудованных видеотерминалами, стены ок-
рашены красками пастельных тонов с коэффициентом отражения 40-
60%. Окраске поверхностей придана матовая фактура. /L/
В залах вычислительной техники и других производственных
помещениях при выполнении работ операторского типа, связанных с
нервно-эмоциональным напряжением, соблюдаются оптимальные ве-
личины температуры воздуха 22-24? при его относительной влажности
40-60% и скорости движения воздуха не более 0.1м/с. /P/
Помещение оборудовано установками кондиционирования
воздуха. Системы вентиляции и кондиционирования воздуха оснащены
устройствами для виброгашения и шумопоглощения, обеспечивающими
снижение шума до допустимых значений для данного вида работ.
Для искусственного освещения помещений, в которых ис-
пользуют дисплеи, применяется система комбинированного освещения.
Предусмотрено устройство рабочего и эвакуационного освещения.
Освещенность рабочих мест в горизонтальной плоскости на
уровне 0.8м от пола - не менее 400лк. Вертикальная освещенность в
плоскости экранов дисплеев - не более 300лк. Коэффициент пульсации
освещенности - не более 10%. Показатель дискомфорта - не более 40.
Для ограничения отраженных от экранов бликов обеспечено снижение
яркости излучателей в угловой зоне более 55? от вертикали не более
200 кд/м2.
Для искусственного освещения применяются люминесцентные
лампы типа ЛБ. Для достаточно высоких помещений (4м и более) в
случае устройства отраженного освещения применены металло-
галогенные лампы мощности менее 250Вт и высокими индексами
цветопередачи.
Для общего освещения использованы светильники с люми-
несцентными лампами и зеркальными экранирующими решетками и
отражателями. Не применяются для общего освещения помещений с
использованием дисплеев светильников любого класса светораспре-
деления, за исключением светильников класса светораспределения О и с
кривой силы света в нижней полусфере типов Л, Ш, М и С. /Q/
Использована система переключателей, позволяющих регули-
ровать интенсивность искусственного освещения в зависимости от
естественного, а также позволяющих в данный момент времени ос-
вещать только необходимые для работы зоны помещения. /L/
При устройстве местного освещения применяются поворачи-
вающиеся, передвижные лампы на гибком шланге или передвижных
шарнирах. Свет падает слева. Рекомендуемая мощность ламп - не менее
50-70Вт. Одно местное освещение недопустимо, так как связано с
неизбежной адаптацией зрения. Необходимо следить за чистотой
светильников и окон. Грязная поверхность электрических ламп
задерживает до 80% света, а слегка покрытое пылью оконное стекло - до
30% света (чистое оконное стекло пропускает до 80% световых лучей).
Рабочие места программистов вычислительных машин не имеют
уровни звука и эквивалентные уровни звука выше 50ДбА, а в
помещениях телефонных и телеграфных станций, в залах обработки
информации на вычислительных машинах - не выше 65ДбА, в поме-
щениях для размещения шумных агрегатов вычислительных машин -
75ДбА. Нормирование параметров среды проводится с учетом вида
трудовой деятельности, учитывая сходство механизмов действия на
организм человека шума и напряженности труда. При выполнении
работ по выработке концепций новых программ уровни звука не
превышают 40ДбА; при выполнении операторской работы - 65ДбА. /R/
Для поддержания нормированных значений концентрации от-
рицательных и положительных токов предусмотрена искусственная
ионизация. В помещениях с дисплеями проводится ежедневная влажная
уборка и регулярные проветривания в течение рабочей смены. Удаление
пыли с экрана дисплея производится не реже 1 раза в смену. В периоды
смены, когда работа не выполняется, дисплей выключен.
Характер труда за ВДТ приводит к ограниченной двигательной
активности, сопровождающейся малыми мышечными усилиями
(гиподинамией). При некоторых видах труда (ввод и редактирование
информации) имеется значительная, но однообразная и упрощенная
нагрузка на небольшие группы мышц рук (гипокинезия). Для устра-
нения вредного воздействия гиподинамии и гипокинезии вводятся
паузы для выполнения комплекса упражнений, направленных на
увеличение затрат энергии на мышечную работу и на устранение
изменений, вызванных локальным характером мышечных действий.
Для основных видов работ, выполняемых за видеотерминалом,
вводятся официально предусмотренные перерывы. Общие требования к
перерывам:
они установлены для предупреждения утомления;
короткие и частые, а не длинные и редкие;
перерывы проводятся вне рабочего места с видеотерминалом.
Разные виды работ требуют различного подхода к организации
перерывов. Частота и продолжительность (микропаузы или более
длительные перерывы) перерывов зависит от типа и интенсивности
выполняемой работы. Для работ, выполняемых с большой нагрузкой,
рекомендован 10-15-минутный перерыв после каждого часа работы, а
при интенсивной и монотонной работе 10-15 минут через каждые 2
часа. Количество микропауз (длительностью до 1 минуты) регулируется
индивидуально.
Формы и содержание перерывов могут быть разными: выпол-
нение альтернативной вспомогательной работы, не требующей боль-
шого напряжения; длительные перерывы для приема пищи, с начала
регламентированных перерывов - гимнастика для глаз, во время одного
из перерывов рекомендуется проведение общей гимнастики.
Проведение физических упражнений с дозированной нагрузкой в
течение рабочего дня рекомендуется индивидуально, в зависимости от
ощущения усталости. Гимнастика направлена на коррекцию
вынужденной позы, улучшение венозного кровообращения, частичное
восполнение дефицита двигательной активности. Мышечные усилия
комплекса упражнений умеренные, темп средний. После окончания
гимнастики необходим пассивный отдых, длительностью в 2-3 минуты
перед работой. Комплекс упражнений меняется 1 раз в неделю.
Специальные упражнения для глаз, способствующие усилению
кровообращения, сбалансированию тонуса глазных мышц, про-
филактике утомления, выполняются в начале регламентированных пере-
рывов, в течение 2-3 минут, сидя на рабочем месте.
В случае возникновения чрезмерного зрительного напряжения,
сопровождающегося ухудшением самочувствия, несмотря на хорошую
эргономическую организацию работы и соблюдение режимных
моментов, необходим индивидуальный подход в ограничении времени
работы, коррекция длительности перерывов для отдыха или смена
деятельности другой, не связанной с использование ЭВМ.
6.4. Меры обеспечения пожарной безопасности
Обеспечение пожарной безопасности является неотъемлемой
частью государственной деятельности по охране жизни и здоровья
людей, национального богатства и окружающей природной Среды.
Собственник предприятия, учреждения или организации обязан:
разработать комплексные мероприятия по обеспечению по-
жарной безопасности;
в соответствии с нормативными актами по пожарной безо-
пасности разработать и утвердить положения, инструкции, иные
нормативные акты, действующие в пределах предприятия, учреждения
и организации, осуществлять постоянный контроль за их выполнением;
обеспечить соблюдение противопожарных требований, норм,
правил, а также выполнение требований, предписаний и постановлений
органов государственного пожарного надзора;
организовать обучение работников правилам пожарной безо-
пасности и пропаганду мер по их обеспечению;
при отсутствии в нормативных актах требований, необходимых
для обеспечения пожарной безопасности, принимать соответствующие
меры, согласовывая их с органами государственного пожарного надзо-
ра;
содержать в исправном состоянии средства противопожарной
защиты и связи, пожарную технику, оборудование и инвентарь, не
допускать их использование не по назначению;
представить по требованию государственной пожарной охраны
сведения и документы о состоянии пожарной безопасности объектов и
производимой ими продукции;
осуществлять меры по внедрению автоматических средств
обнаружения и тушения пожаров и использованию для этой цели
производственной автоматики;
своевременно информировать пожарную охрану о неисправности
пожарной техники, систем противопожарной защиты, водоснабжения, а
также о закрытии дорог и проездов на своей территории;
проводить служебное расследование в случае пожаров. /S/
Все работники при приеме на работу ежегодно по месту работы
проходят инструктажи по вопросам пожарной безопасности.
Хранилища информации, помещения для хранения машинных
носителей информации размещаются в подсобных отдельных поме-
щениях, оснащенных негорючими стеллажами и шкафами. Машинные
носители информации хранятся в металлических кассетах.
Пол в помещении, где используются ЭВМ, изготовлен из не-
горючих материалов. Звукопоглощающая облицовка потолков и стен
этих помещений также изготовлена из негорючих или тяжело горючих
материалов.
Для мытья деталей используются негорючие моющие вещества.
Для промывания сменных устройств горючими веществами выделены
специальные помещения, оснащенные приточно-вытяжной вентиляци-
ей.
В случае необходимости проведения мелкого ремонта или
технического обслуживания ЭВМ непосредственно в рабочем поме-
щении и с использованием горючих веществ разрешается иметь не
более 0.5 л в таре, которая не разбивается и плотно закрывается.
В помещениях, в которых находятся ПЭВМ (если автоматиче-
ская система пожаротушения не обязательна), имеются переносные
углекислотные огнетушители из расчета 2 шт на каждые 20 м2 площади
помещения с учетом предельно-допустимой концентрации ог-
нетушащего вещества.
Персональные компьютеры после окончания работы на них
выключаются из сети.
Не реже одного раза в квартал производится чистка от пыли
агрегатов, узлов, кабельных каналов.
Не разрешается:
размещать ЭВМ в подвалах;
проводить работу по ремонту узлов или блоков ЭВМ непосредст-
венно в машинном зале;
хранить постоянно в залах ЭВМ машинные носители инфор-
мации, запасные блоки и детали;
оставлять без присмотра включенную в сеть электронную ап-
паратуру, которая используется для испытания и контроля ЭВМ. /T/
ЗАКЛЮЧЕНИЕ
В результате проделанной работы создан программный продукт
способный обеспечить уровень автоматизации достаточный для
выполнения основных функций предоставления услуг электросвязи
населению области, быстро и корректно обработать информацию, что
обеспечивает получения прибыли за предоставленные услуги в полном
объеме.
Созданная система расширила спектр услуг электросвязи,
предоставляемых населению области, и имеет существенные пре-
имущества, основными из которых являются: качественно новый метод
работы операторов, существенно снижающие уровень ручного труда;
информирование абонента о размерах и сроках оплаты за услуги;
оперативность и качество подготовки данных, исключающее ошибки в
системе расчетов за услуги; экономия расходных материалов.
Первая версия системы запущена в эксплуатацию в августе 1995
года на двух центральных отделениях связи. К концу 1995 года система
успешно эксплуатировалась на 19 отделениях связи г. Запорожья.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
A. Руководство системного менеджера по ДТ-МАКС. Кембридж.
ИнтерСистемы, 1994 г.
B. Руководство программиста по ДТ-МАКС. Кембридж. Ин-
терСистемы, 1994 г.
C. Междугородние телефонные правила. Министерство связи
СССР. "Связь". 1968 г.
D. Закон Украины "Об охране труда", Постановление Верхов-
ного Совета Украины от 14.10.92 г. N 2696-XII
E. Державний реєстр міжгалузевих і галузевих нормативних актів
про охорону праці (Реєстр ДНАОП). За станом на 01.02.95 р.
Затверджено наказом Державного комітету України по нагляду за
охороною праці від 06.02.95 р. N 12, Київ, 1995 р.
F. Законодавство України про охорону праці. Збірник норма-
тивних документів. Том 1,2,3,4. Київ, 1995 р.
G. В.Ф. Кобевник. Охрана труда. Киев. "Выща школа" 1990 г.
H. ГОСТ 12.0.002-80 ССБТ Термины и определения.
I. ГОСТ 12.0.003-74* ССБТ Опасные и вредные производст-
венные факторы.
J. ГОСТ 12.1.019-79* ССБТ Электробезопасность. Общие требо-
вания и номенклатура видов защиты.
K. Создание благоприятных условий труда пользователей ЭВМ,
работающих с дисплеями на информационно-вычислительных центрах.
Методические рекомендации. Одобрены Постановлением Госкомтруда
УССР 15.10.86 г. N 134.
L. Временные санитарные нормы и правила для работников
вычислительных центров, утв. Гл. госуд. сан. врачом СССР от 2.03.88 г.
N 4559-88.
M. ГОСТ 12.2.032-78 ССБТ. Рабочее место при выполнении ра-
бот сидя.
N. ГОСТ 12.2.049-80 ССБТ. Оборудование производственное.
Общие эргономические требования.
O. ГОСТ 21689-76 "Система" Человек-машина. "Кресло чело-
века-оператора. Общие эргономические требования."
P. ГОСТ 12.1.005-88 ССБТ. Общие санитарно-гигиенические
требования к воздуху рабочей зоны.
Q. СНиП 11-4-79. Естественное и искусственное освещение.
Нормы проектирования. Изменения, утвержденные Госстроем СССР от
4.12.1985 г. N 205.
R. ГОСТ 12.1.003-83 ССБТ. Шум. Общие требования безопасно-
сти.
S. Закон Украины "О пожарной безопасности" от 17.12.93.
T. Правила пожежної безпеки України. Затверджені: В.О.
головного державного інспектора України з пожежного нагляду
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,"DOUB
LE","Опреатор : "_%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,"А В А Р И Я ! ! !"_%_"Нажмите на задней панели АПП-
РК"_%_"маленькую беленькую кнопочку"_%_"и затем нажмите на клавиатуре
",0)'="KEYENTER" g CRASH
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(%num
cab,%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(%nu
mcab)
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)_" -
ПЕЧАТЬ","DrawTicket^iap","KEYF4")
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(%incr
ement,%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,%sme
n),$zp,6)+%increment
; ЧИСТО ВСЕ ПО АК
i %z=0 s
^AppSmena(%mess,%denn,%oper,%smen).30=$p(^AppSmena(%mess,%denn,%oper,%sm
en),$zp,30)+%increment g inree1
i %z<128 s
^AppSmena(%mess,%denn,%oper,%smen).22=$p(^AppSmena(%mess,%denn,%oper,%sm
en),$zp,22)+%increment g inree1
s
^AppSmena(%mess,%denn,%oper,%smen).29=$p(^AppSmena(%mess,%denn,%oper,%sm
en),$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("NO
M_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
; ---------------
------------------
------------------
--------
OutCOUNTR
Y()
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","","DrawCO
UNTRY^iaphand")
i $p(%res,$c(30),2)="KEYESC" q "PROBLEM"
q %id_$c(30)_"KEYENTER"
DrawCOUNT
RY
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","","Dr
awCOUNTRY^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","","DrawC
OUNTRY^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","","D
rawCOUNTRY^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) 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_DE
NN")_","_%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-Снять
-Прд/Вып/Ост","DrawORDERS^iaphandsub","KEYF2,KEYF8,KEYF4")
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
DrawORDER
S
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,"",$$KVI
TAN(%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")=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) $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) %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(%nor
d)
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,"SINGL
E","Причина","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
DrawREASO
N
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(%R
RR)
s ^ReestrIndRK($p(%RRR,$c(30),5),$p(%RRR,$c(30),16))=%APPSYS("LAST_IND")
q
KVITAN(%N
ORD,%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 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
46