Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсач егоров.doc
Скачиваний:
5
Добавлен:
07.12.2018
Размер:
7.53 Mб
Скачать

Описание технологии бизнес - процессов реализации товаров в среде 1с:Предприятие 8.1

Бизнес – процессы в системе 1С:Предприятие предназначены для объединения отдельных операций в цепочки взаимосвязанных действий, приводящих к достижению конкретной цели. Они дают возможность перейти к процессному управлению деятельностью компании. Все возможные состояния бизнес – процесса и переходы между ними представляются с помощью карты маршрута бизнес – процесса. Карта маршрута описывает логику бизнес – процесса и весь его жизненный цикл от точки старта до точки завершения в виде схематического изображения последовательности прохождения взаимосвязанных точек маршрута.

Задачи в 1С:Предприятии позволяют вести учет заданий по исполнителям и служат отражением продвижения бизнес – процессов по точкам маршрута. При этом задачи могут создаваться не только бизнес – процессами, но и другими объектами информационной базы и непосредственно пользователями.

Другим важным понятием является «Адресация». Основное назначение системы адресации – обеспечить возможность не только персональной, но и ролевой адресации задач участникам бизнес – процессов. Для хранения данных об адресации используется регистр сведений, который в обязательном порядке не должен быть периодическим.

Так выглядят справочники «Сотрудники», «Роли», «Подразделения»

Сотрудники

Роли

Подразделения

Андреева

Кассир

Бухгалтерия

Сидоров

Менеджер

Отдел продаж

Тихонова

Кладовщик

Склад

Федоров

Руководитель отдела

Склад

Рис. 58 Создание предопределенных элементов справочника «Роли»

Рис. 59 Создание предопределенных элементов справочника «Подразделения»

Рис. 60 Справочник «Сотрудники»

Проинициализируем параметр сеанса при запуске системы, поместив его в общий модуль «Модуль приложения»:

Будем считать, что имя пользователя, указываемое при входе в систему, совпадает с наименованием в справочнике «Сотрудники».

Создадим задачу «Задача».

Рис. 61 Создание задачи «Задача»

Установим ранее созданный регистр сведений в свойство задачи «Адресация».

Добавим к задаче реквизиты адресации аналогично измерениям регистра сведений – «Сотрудник», «Роль», «Подразделение».

Установим для созданных реквизитов адресации задачи тип в виде ссылки на соответствующий справочник, и в свойстве «ИзмерениеАдресации» установим ссылку на измерение регистра сведений.

Реквизит адресации

Тип

Измерение адресации

Сотрудник

СправочникСсылка.Сотрудники

Сотрудник

Роль

СправочникСсылка.Роль

Роль

Подразделение

СправочникСсылка.Подразделения

Подразделение

Выберем реквизит «Сотрудник» в качестве главного реквизитом адресации, установив его в соответствующем свойстве задачи.

Зададим реквизиты задачи «Задача»:

Реквизит задачи

Тип реквизита

КонтрольныйСрок

Дата (состав Дата и Время)

ДатаВыполнения

Дата (состав Дата и Время)

Исполнитель

СправочникСсылка.Сотрудники

Приоритет

Число

ДатаАвтоВыполнения

Дата (состав Дата и Время)

Рис. 62 Реквизиты задачи

Для заполнения ряда реквизитов задачи в модуле объекта «Задача» определим обработчик события «ПередВыполнением()», который определяет, что при выполнении задачи (программном или интерактивном) в ней сохраняется время выполнения и исполнитель.

Рис. 63 Обработчик события «ПередВыполнением» задачи «Задача»

Для удобства работы пользователей со списком задач создадим форму списка. Определим имя формы списка как «ФормаСпискаПоИсполнителю». У табличного поля установим свойство «ОтображениеЗадач» (группа свойств «Использование») в значение «По исполнителю». При этом идет речь не о реквизите задачи «Исполнитель», а о свойстве (параметре) – расширении

табличного поля списка задач. У табличного поля, связанного со списком задач, существует свойство (расширение табличного поля списка задач) «Исполнитель». Данный параметр доступен как на чтение, так и для записи. Воспользуемся им для организации возможности просмотра списка задач разных пользователей.

Рис. 64 Свойства табличного поля списка задач

Создадим реквизит формы списка «Сотрудник» типа «СправочникСсылка.Сотрудники», для этого зайдем на вкладку «Реквизиты» формы списка. Определим в диалоге элемент управления «Поле ввода» («Форма – Вставить элемент управления») и свяжем его через свойство «Данные» с реквизитом формы «Сотрудник».

Рис. 65 Создание реквизита формы списка

Рис. 66 Создание поля ввода для реквизита «Сотрудник»

Рис 67 Диалог формы списка по исполнителю

В свойствах поля ввода «Сотрудник» уберем доступность этого поля, чтобы можно было просматривать задачу только активного пользователя.

Определим обработчики событий «ПриИзменении()»поля ввода и «ПриОткрытии()» формы списка:

Рис. 68 Обработчик события «ПриИзменении()» поля ввода

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

Рис. 69 Обработчик события «ПриОткрытии()» формы

Во второй процедуре устанавливаем режим автоматического обновления с периодичностью 5 секунд. Устанавливается порядок сортировки списка задач (по убыванию даты) и инициализируется реквизит формы значением из параметра сеанса.

При работе со списком задач «ФормаСпискаПоИсполнителю» в нем фактически отражаются задачи со статусом «НеВыполнена» (или и «Выполнена», если снять отбор «Выполнена=Ложь»), можно просматривать значения реквизитов адресации, реквизитов задачи. В ряде случаев этого может быть не достаточно. К примеру, необходимо отслеживать, была ли хоть раз выполнена интерактивная активация задачи (была ли хоть раз предпринята попытка открыть форму задачи или выполнены другие действия по интерактивной активации). Постараемся решить эту задачу. Создадим регистр сведений «Просмотр задач» со следующей структурой:

Измерение

Тип измерения

Задача

ЗадачаСсылка.Продажатовара

Сотрудник

СправочникСсылка.Сотрудники

Ресурсов и реквизитов у данного регистра сведений нет.

Сама идея механизма довольно проста: при выполнении интерактивной активации в регистр сведений будут записываться данные о задаче и пользователе, ее выполнившем. При выполнении задачи данные о ней будут из регистра сведений удаляться. Это можно реализовать с помощью обработчиков событий «ОбработкаИнтерактивнойАктивации()» и «ПриВыполнении()» модуля объекта «Задача.Задача».

Рис. 70 Процедура «ОбработкаИнтерактивнойАктивации()» модуля задачи

Рис. 71 Процедура обработки события «ПриВыполнении()»

В данных обработчиках событий есть нерассмотренный момент: вызов процедуры «СброситьСведенияОЗадаче()». Назначение и код этой процедуры рассмотрим позже.

Для удобства отслеживания за происходящим, добавим обработчик событий «ПередЗаписью»

Рис. 72 Процедура обработки события «ПередЗаписью ()»

Одно дело записать и вовремя удалить данные в регистр сведений, а другое дело – это организовать для пользователя удобный механизм просмотра этих данных. Для решения этих задач вернемся к форме списка. Для отображения «дополнительных статусов задачи» воспользуемся событием «ПриВыводеСтроки()» табличного поля, связанного со списком задач. Определим обработчик события.

Рис. 73 Обработчик события «ПриВыводеСтроки()»

В разделе описания переменных модуля формы списка размещается определение двух переменных. В основном разделе модуля формы списка эти переменные инициализируются.

Смысл работы обработчика события «ПриВыводеСтроки()» заключается в том, что первоначально вызывается функция «ПолучитьСведенияОЗадаче()», которая возвращает структуру, содержащую значение с ключом «Просмотрена». Далее, исходя из полученного значения и из значения реквизита задачи «Приоритет», определяются элементы оформления выводимой строки. В функции «ПолучитьСведенияОЗадаче()» производится обращение к регистру сведений и проверяется, есть ли в нем запись по этой задаче. Если есть, то задача была «прочитана», т.е. была произведена ее интерактивная активация. Но если вспомнить текст обработчика события «ПриОткрытии()» формы списка, там событие «ПриВыводеСтроки()» будет вызываться каждые 5 секунд для каждой строки списка, поэтому попытка «лобового» решения этой задачи может привести к плачевному результату, т.к. система будет «тормозить».

Одним из вариантов решения может быть следующий механизм. В модуле приложения определяется переменная «мСведенияОЗадачах» (локальная для модуля приложения) (модуль приложения открывается через контекстное меню корня дерева конфигурации). В основном разделе модуля она инициализируется. Далее определяются функция «ПолучитьСведенияОЗадаче()» и процедуры «СброситьСведенияОЗадаче()» и «СброситьСведенияОВсехЗадачах()».

Рис. 74 Инициализация переменной

На рис. 2.189 строка мСведенияОЗадачах = Новый Соответствие; должна располагаться в конце модуля приложения.

Рис. 75 Функция «ПолучитьСведенияОЗадаче()»

Рис 76 Процедуры «СброситьСведенияОВсехЗадачах()» и «СброситьСведенияОЗадаче()»

Вернемся к обработчикам событий «ОбработкаИнтерактивнойАктивации()» и «ПриВыполнении()» модуля объекта «Задача». В них имеются следующие строки:

#Если ВнешнееСоединение Тогда

#Иначе

СброситьСведенияОЗадаче(Ссылка);

#КонецЕсли

Если модуль используется при внешнем соединении (через СОМ - коннектор), то модуль приложения не компилируется, и поэтому обращение к процедуре «СброситьСведенияОЗадаче()» приведет к ошибке. Определять данную процедуру в общем модуле с видимостью ее во внешнем соединении смысла не имеет, т.к. она участвует в реализации интерфейсного механизма работы пользователя. Сам вызов этой процедуры в этих обработчиках событий обусловлен тем, что как при выполнении, так и при интерактивной активации, статус задачи меняется.

Создадим новый бизнес – процесс «ПродажаТовара». Он позволит отследить процесс, начинающийся с выписки счета менеджером, получение оплаты бухгалтером, и отгрузкой товара кладовщиком. При выполнении процесса производится проверка на размер установленной менеджером скидки. Если она превышает некоторый предел, установленный для фирмы, то такой счет предварительно идет на утверждение к руководителю отдела. У этого бизнес - процесса определим два реквизита:

Счет (ссылка на документ);

РасходнаяНакладная (ссылка на документ).

При создании установим у него ссылку на ранее созданную задачу (свойство «Задача»).

Рис. 77 Создание бизнес – процесса «ПродажаТовара»

Рис. 78 Реквизиты бизнес - процесса «ПродажаТовара»

Перед тем, как перейти к рассмотрению внутренних механизмов данного бизнес – процесса, следует обратить внимание на тот факт, что для более удобной работы пользователя с его задачами, необходимо организовать т.н. механизм обратной связи. При интерактивной активации задач будут открываться формы других объектов (документов «Счет», «РасходнаяНакладная»). Для этого необходимо внести изменения в сами документы. К примеру, в обработчик события «ПриЗаписи()» основной формы документа «Счет» можно поместить следующую строчку кода:

Оповестить («ЗаписьСчета», ,ЭтотОбъект);

В аналогичный обработчик документа «РасходнаяНакладная» добавляется схожая строка кода:

Оповестить («ЗаписьРасходнойНакладной», ,ЭтотОбъект);

В модуле приложения следует определить процедуру, которая будет являться обработчиком при оповещении.

Процедура ОбработчикОповещения(ИмяСобытия, Параметр, Источник) Экспорт

Если ИмяСобытия="ЗаписьРасходнойНакладной" Тогда

Запрос = Новый Запрос;

Запрос.УстановитьПараметр("Парам", Источник.Ссылка);

Запрос.Текст="ВЫБРАТЬ Задача.Ссылка

| ИЗ БизнесПроцесс.ПродажаТовара КАК ПродажаТовара

| ЛЕВОЕ СОЕДИНЕНИЕ Задача.Задача.ЗадачиПоИсполнителю КАК Задача

| ПО ПродажаТовара.Ссылка=Задача.БизнесПроцесс

| ГДЕ (Задача.Выполнена=Ложь) И ПродажаТовара.РасходнаяНакладная=&Парам";

Выборка=Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл

ТекущаяЗадача=Выборка.Ссылка.ПолучитьОбъект();

Если ТекущаяЗадача.ТочкаМаршрута=

БизнесПроцессы.ПродажаТовара.ТочкиМаршрута.ВыпискаСчета

ИЛИ ТекущаяЗадача.ТочкаМаршрута=

БизнесПроцессы.ПродажаТовара.ТочкиМаршрута.ОтгрузкаТовараСоСклада

Тогда

ФормаСчета=ТекущаяЗадача.БизнесПроцесс.Счет.ПолучитьФорму();

Если (ФормаСчета.Открыта()<> Истина) ИЛИ

(ТекущаяЗадача.ТочкаМарщрута<>

БизнесПроцессы.ПродажаТовара.ТочкиМаршрута.ВыпискаСчета)

Тогда

Если Вопрос("Пометить задачу """+ТекущаяЗадача.Наименование+

""" как выполненную ?",РежимДиалогаВопрос.ДаНет)=

КодВозвратаДиалога.Да

Тогда

ТекущаяЗадача.ВыполнитьЗадачу();

КонецЕсли;

КонецЕсли;

КонецЕсли;

КонецЦикла;

КонецЕсли;

Если ИмяСобытия="ЗаписьСчета" Тогда

Запрос= Новый Запрос;

Запрос.УстановитьПараметр("Парам", Источник.Ссылка);

Запрос.Текст="ВЫБРАТЬ Задача.Ссылка

| ИЗ БизнесПроцесс.ПродажаТовара КАК ПродажаТовара

| ЛЕВОЕ СОЕДИНЕНИЕ Задача.Задача.ЗадачиПоИсполнителю КАК Задача

| ПО ПродажаТовара.Ссылка=Задача.БизнесПроцесс

| ГДЕ (Задача.Выполнена=Ложь) И (ПродажаТовара.Счет=&Парам)";

Выборка=Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл

ТекущаяЗадача=Выборка.Ссылка.ПолучитьОбъект();

Если ТекущаяЗадача.ТочкаМаршрута=

БизнесПроцессы.ПродажаТовара.ТочкиМаршрута.ВыпискаСчета

ИЛИ ТекущаяЗадача.ТочкаМаршрута=

БизнесПроцессы.ПродажаТовара.ТочкиМаршрута.ПолучениеНаличнойОплаты

ИЛИ ТекущаяЗадача.ТочкаМаршрута=

БизнесПроцессы.ПродажаТовара.ТочкиМаршрута.УтверждениеСчета

Тогда

ФормаНакладной=

ТекущаяЗадача.БизнесПроцесс.РасходнаяНакладная.ПолучитьФорму();

Если (ФормаНакладной.Открыта()<> Истина) ИЛИ

(ТекущаяЗадача.ТочкаМарщрута<>

БизнесПроцессы.ПродажаТовара.ТочкиМаршрута.ВыпискаСчета)

Тогда

Если Вопрос("Пометить задачу """+ТекущаяЗадача.Наименование+

""" как выполненную ?",РежимДиалогаВопрос.ДаНет)=

КодВозвратаДиалога.Да

Тогда

ТекущаяЗадача.ВыполнитьЗадачу();

КонецЕсли;

КонецЕсли;

КонецЕсли;

КонецЦикла;

КонецЕсли;

КонецПроцедуры

Остается в обработчике события «ПриНачалеРаботыСистемы()» назначить эту процедуру обработчиком оповещения. Сделать это можно следующим образом, разместив эту процедуру в модуле приложения:

Рис. 79 Подключение обработчика оповещения

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

Спроектируем маршрутную карту бизнес – процесса (закладка «Прочее» конструктора бизнес – процесса, кнопка «Карта маршрута»), устанавливая нужные реквизиты адресации для точек маршрута, выбирая их из предопределенных данных соответствующих справочников. Для вставки элементов карты можно воспользоваться основным меню («Карта маршрута | Вставка элементов схемы»), либо соответствующей панелью инструментов. Для уточнения параметров добавленного элемента надо воспользоваться его контекстным меню и выбрать там пункт «Свойства».

Рис. 80 Карта маршрута бизнес – процесса «ПродажаТовара»

При запуске (старте) бизнес - процесса необходимо выполнить процедуру, в которой производится проверка на заполнение реквизитов «Счет» и «РасходнаяНакладная». Если реквизиты содержат пустые ссылки (это возможно, если бизнес – процесс вводится на основании, либо пользователь перед стартом в форме бизнес – процесса мог выбрать нужные документы), то тогда создаются документы соответствующих видов, и ссылки на них записываются в бизнес – процесс. Для ввода текста процедуры надо выбрать пункт «Свойства» из контекстного меню блока старта бизнес – процесса, а в палитре свойств найти соответствующее событие.

Рис. 81 Обработчик события «ПередСтартом()» бизнес – процесса «ПродажаТовара»

После старта бизнес – процесс переходит к точке действия «ВыпискаСчета». В этой точке установлено значение реквизита адресации «Подразделение» в значение «ОтделПродаж». В результате при переходе к этой точке маршрута создается задача с установленным реквизитом адресации «Подразделение». В случае, если бизнес – процесс активирован интерактивно, или соответствующая задача активирована интерактивно, тогда выполняется следующий обработчик события «ОбработкаИнтерактивнойАктивации».

Рис. 82 Обработчик события «ОбработкаИнтерактивнойАктивации» точки «ВыпискаСчета»

Результатом будет открытие формы расходной накладной и счета, а форма счета при этом открыта не будет, т.к. отключен флаг «СтандартнаяОбработка». При попытке выполнения задачи точки маршрута «ВыпискаСчета» сработает следующий обработчик события «ПередИнтерактивнымВыполнением».

Рис. 83 Обработчик события «ПередИнтерактивнымВыполнением()» точки «ВыпискаСчета»

Рис. 84 Обработчик события «ОбработкаПроверкиВыполнения()» точки «ВыпискаСчета»

В процедуре проверяется число строк табличной части документа «Счет». Если оно равно нулю, то задача не будет выполнена и бизнес – процесс не пойдет дальше по карте маршрута. При выполнении задачи точки маршрута «ВыпискаСчета» бизнес – процесс переходит к точке условия «Скидка по счету выше стандартной?».

В точке условия «Скидка по счету выше стандартной?» проверяется тот факт, чтобы в табличной части документа «Счет» (ссылка на него определена в реквизите «Счет» бизнес - процесса) не было скидки, превышающей значение, хранимое в константе «СтандартнаяСкидка». При рассмотрении обработчика событий не надо путать значение по умолчанию, устанавливаемое обработчиком события и функциональность переменной «СкилкаБольшеОбычной». С помощью указанной переменной реализуется следующий алгоритм: «Если найдено превышение, то оставшиеся строки табличной части не перебираются».

Теперь создадим константу ОбычнаяСкидка.

Рис. 85 Обработчик события «ПроверкаУсловия()» точки «Скидка по счету…»

Создадим в документе «Счет» - новый реквизит в табличной части «Материалы» - Скидка и дадим ему тип данных – число, далее разместим в форме новую колонку в табличной части – Скидка:

Если скидка хотя бы в одной строке табличной части документа больше величины, определенной в константе, то в параметр процедуры «Результат» записывается значение «Истина», и бизнес – процесс идет по ветке «Да» на

утверждение скидки. В этом случае бизнес – продвигается до точки «УтверждениеСчета», в которой происходит создание задачи с установленными реквизитами адресации «РольИсполнителя» в значение «Руководитель отдела», «Подразделение» в «ОтделПродаж», а соответствующие значения определены в свойствах группы «Адресация» точки действия. В соответствии с такими значениями реквизитов адресации данная задача в форме списка «ФормаСпискаПоИсполнителю» будет отображаться только для пользователя «Федоров». При интерактивной активации созданной задачи выполняется следующий обработчик события.

Рис 86 Обработчик события «ОбработкаИнтерактивнойактивации» точки «УтверждениеСчета»

После его выполнения открывается форма счета, а форма задачи не открывается. После выполнения текущей задачи бизнес – процесс переходит к точке условия «Счет утвержден?». Ее обработчик проверки условия имеет следующий вид:

Рис. 87 Обработчик события «проверкаУсловия()» точки «Счет утвержден?»

Если в параметр «Результат» записано значение «Ложь» бизнес – процесс переходит к точке завершения «Отмена» и бизнес – процесс завершается. В другом случае бизнес – процесс переходит к точке карты маршрута «ПолучениеОплаты», и к этой же точке бизнес – процесс перейдет в случае, если скидка в счете не превышает порогового значения. Эта точка является точкой действия, поэтому при переходе к ней создается задача с установленным реквизитом адресации «РольИсполнителя» в значение «Кассир», и в соответствии с наполнением регистра, ответственным за адресацию, данная задача будет присутствовать для пользователя «Андреева». При интерактивной активации задачи выполняется следующий обработчик события, в котором открывается форма документа «Счет», ссылка на который хранится в бизнес – процессе, а форма задачи открыта не будет.

Рис. 88 Обработчик события «ОбработкаИнтерактивнойактивации» точки «ПолучениеНаличнойОплаты»

После выполнения данной задачи (приема оплаты), бизнес – процесс перейдет к следующей точке карты маршрута «ОтгрузкаТовараСоСклада». В данной точке свойство «РольИсполнителя» группы свойств «Адресация» установлено в значение «Кладовщик». В данной точке определено два обработчика событий «ПриСозданииЗадач» и «ОбработкаИнтерактивнойАктивации». Один из них срабатывает при создании задачи.

Рис. 89 Обработчик события «ПриСозданииЗадач» точки «ОтгрузкаТовараСоСклада»

В справочнике «Подразделения» ищется значение, совпадающее по наименованию складу из документа «РасходнаяНакладная». В случае успеха, если найденная ссылка не пустая, полученное значение записывается в реквизит «Подразделение» адресации задачи. При интерактивной активации задачи открывается форма расходной накладной.

Рис. 90 Обработчик события «ОбработкаИнтерактивнойАктивации» точки «Отгрузка товара со склада»

Кладовщик уточняет перечень отгружаемых товарных позиций и выполняет задачу. После выполнения текущей задачи бизнес - процесс переходит к точке «НормальноеЗавершение». Для этого события определим обработчик:

Рис. 91 Процедура «НормальноеЗавершение»

Для точки маршрута «Отмена» определим процедуру:

Рис. 92 Процедура «ЗавершениеОтменой»

15. Осталось немного подкорректировать МодульПриложения для правильного отображения выполнения задач. Для этого допишем в него:

Рис. 93 Процедура адресации

Добавим карту маршрута в форму бизнес-процесса. Для этого создадим ФормуБизнесПроцесса в меню создания формы в бизнес процессе «ПродажаТовара». В данной форме размещаем новый элемент управления – «ПолеГрафическойСхемы»:

Присвоим созданной схеме имя «Карта».

Запишем в модуль обработчика событий данной формы «ПриОткрытии» следующий текст:

Рис. 94 «ПриОткрытии»

На панели управления данной формы создадим кнопку «Обновить», чтобы можно было обновлять данные карты маршрута не выходя из бизнес процесса:

Рис. 95 Вставка кнопки «Обновить»

Пропишем для этой кнопки модуль обработчика:

Рис. 96 Обработчик события кнопки «Обновить»

Заключение

В курсовой работе для построения корпоративной сети была использована программа VMware 6.5. На нее были установлены ОС Fedora 8 и Windows XP.

Также была произведена их настройка.

Fedora была в роли сервера, а Windws XP в роли клиента. База 1C находится на сервере, а на клиенте был установлен 1С для взаимодействия с базой. Что бы обеспечить хорошую безопасность был установлен kerio WinRoute firewall.

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

Список используемой литературы

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]