Символ ОСТ

оформление - PDA | Полная версия сайта

Орден Современной Технократии

Главная » Статьи » общие разделы » производство

Инструкция по созданию роботов для СУБД
Современные системы управления базами данных(СУБД) имеют возможности по тесной интеграции со средой где они работают. Вы можете сделать программу на 1С предприятие которая будет доступаться к MS SQL 2000, извлекать данные, сверять со своей DBF базой данных, и отправлять в СУБД Oracle. Однако такие системы как 1С Предприятие 7.7 лишь пассивно содержат возможности по автоматизации, ниже я расскажу о действующих приёмах на примере "1С 7.7".

1. Клиент 1С Предприятие должен уметь самостоятельно запускаться в указанные интервалы времени и выполнять задачи. 1С можно запустить через планировщик задач в Windows. Например, старт 1С каждый раз в 8 утра.
После старта оно определяет имя пользователя зашедшего в систему, и может предпринять действия. Простейшее - запуск отчёта после старта пользователя. Потом закрытие 1С предприятия. Так вы можете делать ежедневные разовые отчёты.

2. Немного сложнее. В 1С можно запустить пользователя-робота. Создайте планировщик задач где можно указать
-Уникальный номер задачи
-Период выполнения(варианты: каждый раз, при старте 1с, при закрытии 1с, через промежутки времени, или 1 раз в день в назначенное время)
-Команда. Например "Запуск отчёта МойОтчёт.ert НачДата=12.10.2006, КонДата=13.10.2006"
-Пользователь которому это адресовано. Для адресованных задач.

Пункт "Команда" наиболее сложный. Здесь полная свобода действий. На мой взгляд, после имени отчёта полезно указать параметры в виде строки разделённой запятыми:
НачДата=12.10.2006, КонДата=13.10.2006, Парам3=12, Параметр4="Текстовая строка"
Вы можете сделать и сложнее, например отчёт за последние 3 дня:
НачДата=[РабочаяДата()-2], КонДата=[РабочаяДата()], Парам3=12, Параметр4="Текстовая строка"

Выражение "[РабочаяДата()-2]" можно обработать функцией "Шаблон()" либо написать свою программу по конвертации переменной (РабочаяДата-2) в значение типа дата.

Команда подаётся в файл ERT под видом строковой переменной Форма.Параметр
Затем необходима универсальная процедура разбиения команды на переменные.

Запускается обработка, стартует процедура "ПриОткрытии"
Затем если параметр указан, нужно выполнить то что находится под кнопкой "Сформировать". но наживать будет робот:
Сформировать("Я робот",РезультатМоейРаботы)
А в процедуре "Сформировать" принимать значение флага. Таким образов отчёт будет сам запускаться.
РезультатМоейРаботы вернёт результирующий отчёт.

Затем, если в строке параметров было записано "ОтправитьПоПочте=masha@mail.ru", запускаем отправку почты. Можно через программу SendFile (плюсы: не требуется Outlook!)

Итак ваша работа процедуры ПриОткрытии подходит к концу, если в строке параметров указано "ЗакрытьФорму=1" то закрываем форму:
Форма.Закрыть(0);

Итак, вся логика работы отдельно взятого ert.

Процедура ПриОткрытии()
// если обработка запущена планировщиком то параметр не будет равен ""
Если Форма.Параметр<>"" тогда
//Декодирование строки переданной в форму при открытии
// "ОтправитьПоПочте=masha@mail.ru, ЗакрытьФорму=1, НачДата=[РабочаяДата()-2]"
ПолучитьПеременные(Форма.Параметр);

УстановитьЗначенияНаФорме(Переменные);
//после декодирования расставляем эти параметры
//точно также как вы это делаете при ручной работе

Сформировать("Я робот", РезультатРаботыРобота);
// здесь вы жмёте на выполнение отчёта

ОтправитьПочту(Переменные.Адресаты,РезультатРаботыРобота);
// отчёт самостоятельно уходит к получателю.

Если Переменные.ЗакрыватьФорму=1 тогда
Форма.Закрыть(0); //без вопроса о сохранении
// если нужно форма закроется
КонецЕсли;

КонецЕсли

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



Вы можете быть на обеде, можете болеть дома. У вас полно свободного времени и нет никакой рутинной работы.


3. Ещё сложнее. Создаём пользователя который выполняет заказы со стороны.

Скорость работы ограничивается физическими показателями компьютера, и может делать работу за 4-5 человек(для небольшой организации).
Снова обращаемся к планировщику задач.
Ставим задачу выполняемую каждый раз при опросе заданий в планировщике. Например каждые 60 секунд.

Ваш робот будет обитать в ERT файле + возможно вспомогательные отчёты запускаемые из глобального модуля 1С, и даже из текстовых файлов.
Стартует ERT. Но задание берёт не из строки параметров, а из этой или другой СУБД.
Выбор СУБД ничем не ограничен.

- вы можете создать робота который будет начислять зарплату сотрудникам каждый месяц 30 числа в 9-30 дня.
- вы можете сделать автоматический обмен с другой информационной базой в соседнем городе.
- вы можете создать обслуживание торговых агентов, загружать от них заявки.
- можете проверять ошибки в базе данных и просить рапортовать вам о них н почту.
- можете выполнять задания от своего босса. А боссу даёте небольшую программу с 2-3 кнопками. Он нажал #1. Появилась задача роботу. Робот стартовал, видит список задач. В точности выполняет.


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


4. Для полного экстрима.
Вы создали робота выполняющего 95% заданий на фирме.Достаточно нажать 1 кнопку и идёт цикл обработки, рассылка десятков отчётов запрошенных кем угодно из людей даже не являющихся вашими коллегами.

Потребуется выполнить балансировку нагрузки на сервер, распределение мощности. Для этого при каждом старте робота измеряем количество заданий, обращаем внимание на время суток, день недели. Решаем с какой скоростью он должен выполнить эти задания. Отбираем часть заданий, выполняем. Остальные рассматриаем при следующем старте цикла обсулживания. Через 60 секунд.

5. Чего не рекомендую делать

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

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

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

5.4 Не рекомендую советоваться с людьми отрицающими возможность выше описанного. Для вас нужен специалист, только он сможет изложить суть процесса. Общение с простым пользователем унесёт день-два на пустую разработку.

5.5 Строго оттестируйте все сбои и неполадки на тестовых данных. Чем ужаснее сделаете условия тестирования, тем лучше.

5.6 Не приступайте к задаче если ей никогда не занимался сознательный человек. Исследуйте коллектив в поисках технократичного руководства и найдите того с кем будете согласовывать стиль и особенности робота.

Категории: производство, | Добавил: asmator (07.05.2008)
Просмотров: 1754 | Рейтинг: 0.0/0 |
похожие статьи:


Всего комментариев: 0
avatar
[производство]

Ключевые слова:


[ Категории каталога ]
производство [17]
история [7]
космос [6]
культура [9]
атеизм [1]
политика [16]

[ Поиск ]


[ Друзья сайта ]

Мембрана

КосмоБлог


Total online: 1
Guests: 1
Users: 0

Copyright ОСТ © 2024