Файл: «Проектирование реализации операций бизнес-процесса «Взаиморасчеты с клиентами»» ..pdf
Добавлен: 15.05.2023
Просмотров: 720
Скачиваний: 3
СОДЕРЖАНИЕ
1. 1 Выбор комплекса задач автоматизации и характеристика существующих бизнес процессов
1.2 Характеристика существующих бизнес –процессов
1.3 Характеристика документооборота, возникающего при решении задачи
1.4 Обоснование проектных решений по информационному обеспечению
1.5 Обоснование проектных решений по программному обеспечению
2.1 Информационная модель и её описание
2.2 Характеристика нормативно-справочной, входной и оперативной информации
2.3 Характеристика результатной информации
2.4 Общие положения (дерево функций и сценарий диалога)
2.5 Характеристика базы данных
2.6 Структурная схема пакета (дерево вызова программных модулей)
2.7 Описание программных модулей
ОсновнойСотрудникПомещения = Справочники.Сотрудники.НайтиПоРеквизиту("ОсновноеРабочееМесто",НовыйДокумент.Помещение);
НовыйДокумент.Сотрудник = ОсновнойСотрудникПомещения;
НовыйДокумент.Специализация = НовыйДокумент.Сотрудник.ОсновнаяСпециализация;
КонецЕсли;
НовыйДокумент.ОкончаниеСобытия = ДатаОкончанияНовогоСобытия;
НовыйДокумент.Состояние = Перечисления.СостоянияСобытий.Запланировано;
Форма = НовыйДокумент.ПолучитьФорму(,ЭтаФорма);
Форма.Открыть();
КонецЕсли;
СтруктураРеквизитов.Очистить();
СформироватьОтчет();
КонецПроцедуры
Процедура ОбработкаЗаписиНовогоОбъекта(Объект, Источник)
СформироватьОтчет();
КонецПроцедуры
Процедура КонтекстноеМенюТабличногоПоляОтменитьСобытие(Кнопка)
Расшифровка=ЭлементыФормы.ПолеТабличногоДокумента1.ТекущаяОбласть.Расшифровка;
Если ТипЗнч(Расшифровка)=Тип("ДокументСсылка.Событие") Тогда
Объект = Расшифровка.ПолучитьОбъект();
Попытка
Объект.Состояние = Перечисления.СостоянияСобытий.Отменено;
Объект.Записать();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
СформироватьОтчет();
КонецЕсли;
КонецПроцедуры
Процедура КонтекстноеМенюТабличногоПоляКопировать(Кнопка)
Расшифровка=ЭлементыФормы.ПолеТабличногоДокумента1.ТекущаяОбласть.Расшифровка;
СкопироватьВыбраныйДокумент(Расшифровка);
КонецПроцедуры
//
Процедура СкопироватьВыбраныйДокумент(Расшифровка)
СтруктураРеквизитов.Очистить();
Если ТипЗнч(Расшифровка)=Тип("ДокументСсылка.Событие") Тогда
МетаданныеКонфигурации = ОдинМодульНаВсех.МетаданныеКонфигурации();
Для Каждого реквизит из МетаданныеКонфигурации.Документы.Событие.Реквизиты Цикл
СтруктураРеквизитов.Вставить(реквизит.Имя,Расшифровка[реквизит.Имя]);
КонецЦикла;
СтруктураРеквизитов.Вставить("Ссылка",Расшифровка);
КонецЕсли;
КонецПроцедуры
Процедура КонтекстноеМенюТабличногоПоляВставить(Кнопка)
ВставитьСкопированныйДокумент();
КонецПроцедуры
//
Процедура ВставитьСкопированныйДокумент()
Если СтруктураРеквизитов.Количество()=0 Тогда
Возврат;
КонецЕсли;
ОбластьПриемник = ЭлементыФормы.ПолеТабличногоДокумента1.ВыделенныеОбласти[0];
Если ТипЗнч(ОбластьПриемник.Расшифровка)=Тип("ДокументСсылка.Событие") Тогда
Предупреждение("На выбранное время уже оформлено событие",10);
Возврат;
КонецЕсли;
СоздатьНовоеСобытие(ОбластьПриемник,"Копирование");
КонецПроцедуры
Процедура ПолеТабличногоДокумента1Выбор(Элемент, Область, СтандартнаяОбработка)
ДействияПользователяССобытием(СтандартнаяОбработка,Область.Расшифровка,"Открыть");
КонецПроцедуры
//
Процедура ДействияПользователяССобытием(СтандартнаяОбработка,Расшифровка,ТипДействия)
Если ТипЗнч(Расшифровка)=Тип("ДокументСсылка.Событие") Тогда
СтандартнаяОбработка=Ложь;
Если ТипДействия = "Открыть" Тогда
Форма = Расшифровка.ПолучитьФорму("ФормаДокумента",ЭтаФорма,"КлючУникальности_123123");
Форма.Открыть();
иначеЕсли ТипДействия = "РедактироватьСодержание" Тогда
Объект = Расшифровка.ПолучитьОбъект();
Объект.Заблокировать();
Содержание = Объект.Содержание;
Если ВвестиСтроку(Содержание, Строка(Расшифровка.Контрагент), 0, Истина) Тогда
Объект.Содержание = Содержание;
Объект.Записать();
СформироватьОтчет();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура КонтекстноеМенюТабличногоПоляРедактировать(Кнопка)
ТекущаяОбласть = ЭлементыФормы.ПолеТабличногоДокумента1.ТекущаяОбласть;
ДействияПользователяССобытием(Ложь,ТекущаяОбласть.Расшифровка,"Открыть");
КонецПроцедуры
Процедура ПолеТабличногоДокумента1НачалоПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
Если ТипЗнч(ПараметрыПеретаскивания.Значение.ТекущаяОбласть.Расшифровка)<>Тип("ДокументСсылка.Событие") Тогда
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецПроцедуры
Процедура ПолеТабличногоДокумента1ПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Область)
КонецПроцедуры
Процедура ПолеТабличногоДокумента1Перетаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Область)
СтандартнаяОбработка = Ложь;
// если принимающая область содержит событие, то отмена
Если ТипЗнч(Область.Расшифровка)=Тип("ДокументСсылка.Событие") Тогда
ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена;
Предупреждение("На выбранное время уже оформлено событие",10);
КонецЕсли;
СкопироватьВыбраныйДокумент(ПараметрыПеретаскивания.Значение.ТекущаяОбласть.Расшифровка);
СоздатьНовоеСобытие(Область,"Перемещение");
//СформироватьОтчет();
КонецПроцедуры
Процедура ПолеТабличногоДокумента1ОкончаниеПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
СтруктураРеквизитов = Новый Структура();
Процедура ОсновныеДействияФормыОсновныеДействияФормыСформировать(Кнопка)
Закрыть();
ВладелецФормы.СформироватьОтчет();
КонецПроцедуры
Процедура КоманднаяПанель1Заполнить(Кнопка)
Выборка = Справочники.Помещения.Выбрать();
Пока выборка.Следующий() цикл
Если Выборка.ЭтоГруппа
ИЛИ выборка.ПометкаУдаления Тогда
Продолжить;
КонецЕсли;
Если Помещения.Найти(Выборка.Ссылка,"Помещение")=Неопределено Тогда
Строкатч = Помещения.Добавить();
Строкатч.Помещение = Выборка.Ссылка;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура КоманднаяПанель3Заполнить(Кнопка)
Выборка = Справочники.Сотрудники.Выбрать();
Пока выборка.Следующий() цикл
Если Выборка.ЭтоГруппа
ИЛИ выборка.ПометкаУдаления Тогда
Продолжить;
КонецЕсли;
Если Сотрудники.Найти(Выборка.Ссылка,"Сотрудник")=Неопределено Тогда
Строкатч = Сотрудники.Добавить();
Строкатч.Сотрудник = Выборка.Ссылка;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура КоманднаяПанель3УстановитьФлажки(Кнопка)
Для Каждого Строкатч из Сотрудники цикл
Строкатч.Использовать = Истина ;
КонецЦикла;
КонецПроцедуры
Процедура КоманднаяПанель3СнятьФлажки(Кнопка)
Для Каждого Строкатч из Сотрудники цикл
Строкатч.Использовать = Ложь ;
КонецЦикла;
КонецПроцедуры
Процедура КоманднаяПанель1УстановитьФлажки(Кнопка)
Для Каждого Строкатч из Помещения цикл
Строкатч.Использовать = Истина ;
КонецЦикла;
КонецПроцедуры
Процедура КоманднаяПанель1СнятьФлажки(Кнопка)
Для Каждого Строкатч из Помещения цикл
Строкатч.Использовать = Ложь ;
КонецЦикла;
КонецПроцедуры
Процедура ТабличноеПолеПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
Если ДанныеСтроки.Цвет = Неопределено Тогда
Возврат;
КонецЕсли;
ОформлениеСтроки.Ячейки.ПримерЦвета.ЦветФона = ДанныеСтроки.Цвет;
КонецПроцедуры
Процедура КоманднаяПанель2Заполнить(Кнопка)
Выборка = Справочники.Специализации.Выбрать();
Пока выборка.Следующий() цикл
Если Выборка.ЭтоГруппа
ИЛИ выборка.ПометкаУдаления Тогда
Продолжить;
КонецЕсли;
Если ТаблицаСоответствияЦветов.Найти(Выборка.Ссылка,"Специализация")=Неопределено Тогда
Строкатч = ТаблицаСоответствияЦветов.Добавить();
Строкатч.Специализация = Выборка.Ссылка;
Строкатч.Цвет = ЦветаСтиля.ЦветФонаПоля;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ПриОткрытии()
Если ТаблицаСоответствияЦветов.Найти("Шапка помещения","Специализация")=неопределено Тогда
Строкатз = ТаблицаСоответствияЦветов.Добавить();
Строкатз.Специализация = "Шапка помещения";
Строкатз.цвет =Новый Цвет(231,227,203);
КонецЕсли;
Если ТаблицаСоответствияЦветов.Найти("Шапка сотрудника","Специализация")=неопределено Тогда
Строкатз = ТаблицаСоответствияЦветов.Добавить();
Строкатз.Специализация = "Шапка сотрудника";
Строкатз.цвет = Новый Цвет(249,249,201);
КонецЕсли;
КонецПроцедуры
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
// регистр ОтметкаИсполнения
Движения.ОтметкаИсполнения.Записывать = Истина;
Движения.ОтметкаИсполнения.Очистить();
Для Каждого ТекСтрокаДоки Из Доки Цикл
Движение = Движения.ОтметкаИсполнения.Добавить();
Движение.Дата = Дата;
Движение.Документ = ТекСтрокаДоки.Документ;
Движение.Исполнен = ТекСтрокаДоки.Отметка;
КонецЦикла;
//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Процедура ОбработкаПроведения(Отказ, Режим)
Если ЭтотОбъект.Исправляемый <> Неопределено Тогда
ИсправляемыйДок=ЭтотОбъект.Исправляемый.ПолучитьОбъект();
ИсправляемыйДок.Исправление=ЭтотОбъект.Ссылка;
ИсправляемыйДок.Записать();
ИсправляемыйДок.УстановитьПометкуУдаления(Истина);
Набор = РегистрыСведений.ЗанятостьСотрудников.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(ЭтотОбъект.Исправляемый);
Набор.Прочитать();
Набор.Очистить();
Набор.Записать(Истина);
Движение = Движения.ЗанятостьСотрудников.Добавить();
Движение.Дата = ДатаСобытия;
Движение.Помещение = Помещение;
Движение.НачалоПериода = НачалоСобытия;
Движение.Специализация = Специализация;
Движение.КонецПериода = ОкончаниеСобытия;
Движение.Сотрудник = Сотрудник;
иначе
Движение = Движения.ЗанятостьСотрудников.Добавить();
Движение.Дата = ДатаСобытия;
Движение.Помещение = Помещение;
Движение.НачалоПериода = НачалоСобытия;
Движение.Специализация = Специализация;
Движение.КонецПериода = ОкончаниеСобытия;
Движение.Сотрудник = Сотрудник;
КонецЕсли;
//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если Состояние = Перечисления.СостоянияСобытий.Отменено Тогда
РежимЗаписи = РежимЗаписиДОкумента.ОтменаПроведения;
КонецЕсли;
//проверка на события в это же время
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗанятостьСотрудников.Помещение,
| ЗанятостьСотрудников.Регистратор,
| ЗанятостьСотрудников.НачалоПериода,
| ЗанятостьСотрудников.КонецПериода
|ИЗ
| РегистрСведений.ЗанятостьСотрудников КАК ЗанятостьСотрудников
|ГДЕ
| ЗанятостьСотрудников.Помещение = &Помещение
| И ЗанятостьСотрудников.Активность = &Истина
| И ЗанятостьСотрудников.Дата = &Дата";
Запрос.УстановитьПараметр("Истина", Истина);
Запрос.УстановитьПараметр("Дата", ЭтотОбъект.ДатаСобытия);
Запрос.УстановитьПараметр("Помещение", ЭтотОбъект.Помещение);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ЭтотОбъект.НачалоСобытия >=ВыборкаДетальныеЗаписи.НачалоПериода
И ЭтотОбъект.НачалоСобытия<= ВыборкаДетальныеЗаписи.КонецПериода
И ЭтотОбъект.Помещение = ВыборкаДетальныеЗаписи.Помещение
И ЭтотОбъект.Ссылка<> ВыборкаДетальныеЗаписи.Регистратор Тогда
Сообщить("На это время уже есть событие "+ ВыборкаДетальныеЗаписи.Регистратор + " документ не может быть проведен!!!");
РежимЗаписи = РежимЗаписиДОкумента.ОтменаПроведения;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
// Процедура вызывается по событию НачалоВыбораИзСписка
// у полей ввода, в которых редактируются даты со временем.
//
// Параметры
// ЭлементУправления - ПолеВвода, в котором редактируется значение даты
// ЭтаФорма - Форма
// Пользователь - СправочникСсылка.Пользователи
// СтандартнаяОбработка - булево
// ПолныйГод - Булево, предсавление года даты в списке выбора
//
Процедура ВыбратьВремяИзСписка(ЭлементУправления, ЭтаФорма, ВремяНачалаВыбора, ИнтервалВремени, СтандартнаяОбработка, ТолькоВремя) Экспорт
СтруктураГрафикаРаботы = Константы.ГрафикРаботыОрганизации.Получить().Получить();
СтандартнаяОбработка = Ложь;
Если ЗначениеЗаполнено(ВремяНачалаВыбора) Тогда
ДатаВремени = ВремяНачалаВыбора;
Иначе
ДатаВремени = СтруктураГрафикаРаботы.НачалоРабочегоДня;
КонецЕсли;
СтруктураРабочихВремен = Новый Структура("ДатаНачала, ДатаОкончания",ДатаВремени,СтруктураГрафикаРаботы.ОкончаниеРабочегоДня);
СписокВремен = Новый СписокЗначений;