Файл: «Проектирование реализации операций бизнес-процесса «Взаиморасчеты с клиентами»» ..pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 15.05.2023

Просмотров: 720

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ОсновнойСотрудникПомещения = Справочники.Сотрудники.НайтиПоРеквизиту("ОсновноеРабочееМесто",НовыйДокумент.Помещение);

НовыйДокумент.Сотрудник = ОсновнойСотрудникПомещения;

НовыйДокумент.Специализация = НовыйДокумент.Сотрудник.ОсновнаяСпециализация;

КонецЕсли;

НовыйДокумент.ОкончаниеСобытия = ДатаОкончанияНовогоСобытия;

НовыйДокумент.Состояние = Перечисления.СостоянияСобытий.Запланировано;

Форма = НовыйДокумент.ПолучитьФорму(,ЭтаФорма);

Форма.Открыть();

КонецЕсли;

СтруктураРеквизитов.Очистить();

СформироватьОтчет();

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

Процедура ОбработкаЗаписиНовогоОбъекта(Объект, Источник)

СформироватьОтчет();

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

Процедура КонтекстноеМенюТабличногоПоляОтменитьСобытие(Кнопка)

Расшифровка=ЭлементыФормы.ПолеТабличногоДокумента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);

КонецЕсли;

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

Процедура ОбработкаПроведения(Отказ, Режим)

//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

// Данный фрагмент построен конструктором.

// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

// регистр ОтметкаИсполнения

Движения.ОтметкаИсполнения.Записывать = Истина;

Движения.ОтметкаИсполнения.Очистить();

Для Каждого ТекСтрокаДоки Из Доки Цикл

Движение = Движения.ОтметкаИсполнения.Добавить();

Движение.Дата = Дата;

Движение.Документ = ТекСтрокаДоки.Документ;

Движение.Исполнен = ТекСтрокаДоки.Отметка;

КонецЦикла;

//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

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

Процедура ОбработкаПроведения(Отказ, Режим)

Если ЭтотОбъект.Исправляемый <> Неопределено Тогда

ИсправляемыйДок=ЭтотОбъект.Исправляемый.ПолучитьОбъект();

ИсправляемыйДок.Исправление=ЭтотОбъект.Ссылка;

ИсправляемыйДок.Записать();

ИсправляемыйДок.УстановитьПометкуУдаления(Истина);

Набор = РегистрыСведений.ЗанятостьСотрудников.СоздатьНаборЗаписей();

Набор.Отбор.Регистратор.Установить(ЭтотОбъект.Исправляемый);

Набор.Прочитать();

Набор.Очистить();

Набор.Записать(Истина);

Движение = Движения.ЗанятостьСотрудников.Добавить();

Движение.Дата = ДатаСобытия;

Движение.Помещение = Помещение;

Движение.НачалоПериода = НачалоСобытия;

Движение.Специализация = Специализация;

Движение.КонецПериода = ОкончаниеСобытия;

Движение.Сотрудник = Сотрудник;

иначе

Движение = Движения.ЗанятостьСотрудников.Добавить();

Движение.Дата = ДатаСобытия;

Движение.Помещение = Помещение;

Движение.НачалоПериода = НачалоСобытия;

Движение.Специализация = Специализация;

Движение.КонецПериода = ОкончаниеСобытия;

Движение.Сотрудник = Сотрудник;

КонецЕсли;

//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

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

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)


Если Состояние = Перечисления.СостоянияСобытий.Отменено Тогда

РежимЗаписи = РежимЗаписиДОкумента.ОтменаПроведения;

КонецЕсли;

//проверка на события в это же время

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

Запрос.Текст =

"ВЫБРАТЬ

| ЗанятостьСотрудников.Помещение,

| ЗанятостьСотрудников.Регистратор,

| ЗанятостьСотрудников.НачалоПериода,

| ЗанятостьСотрудников.КонецПериода

|ИЗ

| РегистрСведений.ЗанятостьСотрудников КАК ЗанятостьСотрудников

|ГДЕ

| ЗанятостьСотрудников.Помещение = &Помещение

| И ЗанятостьСотрудников.Активность = &Истина

| И ЗанятостьСотрудников.Дата = &Дата";

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

Запрос.УстановитьПараметр("Дата", ЭтотОбъект.ДатаСобытия);

Запрос.УстановитьПараметр("Помещение", ЭтотОбъект.Помещение);

РезультатЗапроса = Запрос.Выполнить();

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

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

Если ЭтотОбъект.НачалоСобытия >=ВыборкаДетальныеЗаписи.НачалоПериода

И ЭтотОбъект.НачалоСобытия<= ВыборкаДетальныеЗаписи.КонецПериода

И ЭтотОбъект.Помещение = ВыборкаДетальныеЗаписи.Помещение

И ЭтотОбъект.Ссылка<> ВыборкаДетальныеЗаписи.Регистратор Тогда

Сообщить("На это время уже есть событие "+ ВыборкаДетальныеЗаписи.Регистратор + " документ не может быть проведен!!!");

РежимЗаписи = РежимЗаписиДОкумента.ОтменаПроведения;

КонецЕсли;

КонецЦикла;

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

// Процедура вызывается по событию НачалоВыбораИзСписка

// у полей ввода, в которых редактируются даты со временем.

//

// Параметры

// ЭлементУправления - ПолеВвода, в котором редактируется значение даты

// ЭтаФорма - Форма

// Пользователь - СправочникСсылка.Пользователи

// СтандартнаяОбработка - булево

// ПолныйГод - Булево, предсавление года даты в списке выбора

//

Процедура ВыбратьВремяИзСписка(ЭлементУправления, ЭтаФорма, ВремяНачалаВыбора, ИнтервалВремени, СтандартнаяОбработка, ТолькоВремя) Экспорт

СтруктураГрафикаРаботы = Константы.ГрафикРаботыОрганизации.Получить().Получить();

СтандартнаяОбработка = Ложь;

Если ЗначениеЗаполнено(ВремяНачалаВыбора) Тогда

ДатаВремени = ВремяНачалаВыбора;

Иначе

ДатаВремени = СтруктураГрафикаРаботы.НачалоРабочегоДня;

КонецЕсли;

СтруктураРабочихВремен = Новый Структура("ДатаНачала, ДатаОкончания",ДатаВремени,СтруктураГрафикаРаботы.ОкончаниеРабочегоДня);

СписокВремен = Новый СписокЗначений;