Диплом: Автоматизация материально-технического учета ООО «ПрофИнст»

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
147
Возврат;
КонецЕсли;
// регистр ИспользованниеНоменклатуры
Движения.ИспользованиеНоменклатуры.Записывать = Истина;
Для Каждого ТекСтрокаНоменклатура Из Номенклатура Цикл
Если ТекСтрокаНоменклатура.Наличие Тогда // если в ТЧ
стоит признак наличия
Продолжить;
КонецЕсли;
Если НЕ
ТекСтрокаНоменклатура.Номенклатура.ВидНоменклатуры.Списывается Тогда
// если номенклатуру не надо списывать
Продолжить;
КонецЕсли;
Движение =
Движения.ИспользованиеНоменклатуры.Добавить();
Движение.Период = Дата;
Движение.Номенклатура =
ТекСтрокаНоменклатура.Номенклатура;
Движение.Задача = ЭтотОбъект.Ссылка;
Движение.Количество =
ТекСтрокаНоменклатура.Количество;
Движение.Сумма =
ТекСтрокаНоменклатура.Сумма;
КонецЦикла;
КонецПроцедуры
// обработка распроведения
Процедура ОбработкаУдаленияПроведения(Отказ)
Если Не ОтменитьПроведениеРодителей(ЭтотОбъект.Ссылка) Тогда
// отменитиь проведение задач-родителей
Отказ = Истина;
Возврат;
КонецЕсли;
КонецПроцедуры
// отменить проведение всех родителей ДокСсылкаРебенок
Функция ОтменитьПроведениеРодителей(ДокСсылкаРебенок)
148
МассивОтменяемых =
ОбщийСрв.СформироватьСписокОтменяемых(ДокСсылкаРебенок); //
сформировать массив распроводимых документов
Если МассивОтменяемых.Количество() Тогда // если есть хоть один
- сообщить
Сообщить ("Отмена выполнения " +
ОбщийСрв.ПредставлениеЗадачи(ЭтотОбъект)
+ " приводит к отмене выполнения задач-
родителей...");
КонецЕсли;
Для Каждого СтрокаОтменяемый Из МассивОтменяемых Цикл // для
каждого документа из распроводимых
Если
ОбщийСрв.ВЗакрытомПериоде(СтрокаОтменяемый.Значение) Тогда // если
находится в закрытом периоде
Сообщить("Отмена выполенния " +
ОбщийСрв.ПредставлениеЗадачи(ДокСсылкаРебенок)
+ " приводит к отмене выполенния " +
ОбщийСрв.ПредставлениеЗадачи(СтрокаОтменяемый.Значение)
+ ", находящейся в закрытом периоде.
Отмена не может быть выполнена");
Возврат Ложь;
КонецЕсли;
Если Не
ОбщийСрв.ПроверкаПрав(СтрокаОтменяемый.Значение.Автор,
ПараметрыСеанса.глПользователь) Тогда // проверка прав
Сообщить("Отмена выполенния " +
ОбщийСрв.ПредставлениеЗадачи(ДокСсылкаРебенок)
+ " приводит к отмене выполенния " +
ОбщийСрв.ПредставлениеЗадачи(СтрокаОтменяемый.Значение)
+ ", на редактирование которого у Вас нет
прав. Отмена не может быть выполнена");
Возврат Ложь;
КонецЕсли;
КонецЦикла;
// распровести каждый
Для Каждого СтрокаОтменяемый Из МассивОтменяемых Цикл
Если
СтрокаОтменяемый.Значение.ПолучитьОбъект().Проведен Тогда
СтрокаОтменяемый.Значение.ПолучитьОбъект().Записать(РежимЗаписиД
окумента.ОтменаПроведения);
149
Сообщить("Отменено выполнение родительской " +
ОбщийСрв.ПредставлениеЗадачи(СтрокаОтменяемый.Значение));
КонецЕсли;
КонецЦикла;
Возврат Истина;
КонецФункции
// перед любой записью (включая проведение и распроведение) - проверка
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Головная = ЭтоГоловная(); // установить признак - головная или нет
Если ОбщийСрв.ВЗакрытомПериоде(ЭтотОбъект) Тогда // провера
на закрытый период
Сообщить(ОбщийСрв.ПредставлениеЗадачи(ЭтотОбъект) +
"Находится в закрытом периоде. Редактирование невозможно");
Отказ = Истина;
Возврат;
КонецЕсли;
// проверка того что проведен (тогда редактирование запрещено)
Если Не (РежимЗаписи = РежимЗаписиДокумента.Проведение Или
РежимЗаписи =
РежимЗаписиДокумента.ОтменаПроведения) Тогда
Если (ЭтотОбъект.Проведен И
Константы.ЗапретПроведенных.Получить()) И Не
ПараметрыСеанса.глЗаписьВедетИсполнитель
И Не ПараметрыСеанса.ИдетОбменДанными
Тогда
Сообщить(ОбщийСрв.ПредставлениеЗадачи(ЭтотОбъект) + "Уже
выполнена. Редактирование невозможно");
Отказ = Истина;
Возврат;
КонецЕсли;
КонецЕсли;
// проверка прав
Если Не ОбщийСрв.ПроверкаПрав(Автор,
ПараметрыСеанса.глПользователь) Тогда
Сообщить(ОбщийСрв.ПредставлениеЗадачи(ЭтотОбъект) +
"Нет прав редактировать чужой документ");
Отказ = Истина;
150
Возврат;
КонецЕсли;
Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
РеальнаяДатаВыполнения = ТекущаяДата(); // дата реального
выполнения - дата проведения
Если
Константы.УстанавливатьЗавершенаУспешно.Получить() = Истина Тогда
Статус = Справочники.Статусы.ЗавершенаУспешно; //
статус - успешно
КонецЕсли;
КонецЕсли;
Если РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения
Тогда
РеальнаяДатаВыполнения = 0; // если распровели - значит
нет реальной даты завершения
Статус = Справочники.Статусы.ПустаяСсылка(); // и нет
статуса
КонецЕсли;
КонецПроцедуры
// проверка на то, что данная задача не входит ни в одну другую в
качетсве подзадачи
Функция ЭтоГоловная()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗадачаПодзадачи.Подзадача
|ИЗ
| Документ.Задача.Подзадачи КАК ЗадачаПодзадачи
| ГДЕ ЗадачаПодзадачи.Подзадача = &ИскомаяЗадача
|";
Запрос.УстановитьПараметр("ИскомаяЗадача",
ЭтотОбъект.Ссылка);
Результат = Запрос.Выполнить();
Возврат (Результат.Выбрать().Количество() = 0);
КонецФункции
151
Форма документа «Задача»
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// ЗАКЛАДКА ПОДЗАДАЧИ
Если Параметры.Свойство("ЭтоНовый") Тогда // если из
вызывающей формы был пердан признак что это новый документ
Если Параметры.ЭтоНовый Тогда // значит нажали кнопку
Новая подзадача в тч Подзадачи родителя
Основание = Параметры.Родитель;
Если Не Основание.Пустая() Тогда
ОбщийСрв.ПриВводеНовойЗадачи(Объект,
Основание, Ложь); // перезаполнить реквизиты и тч новой на основании родителя
// но не добавлять в тч Подзадачи
// далее см. в ПослеЗаписи этой задачи -
добавить эту новую в тч Подзадачи родителя
// далее см. в ОбработкаОповещения родителя -
спозиционироваться на вновь добавленной задче в дереве
КонецЕсли;
КонецЕсли;
КонецЕсли;
ФильтрПроведенные = 2; // первоначальное значение фильтра "Все"
ЗаполнитьДеревоПодзадач(); // первоначально создать дерево
подзадач
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// если нет прав - то форма только просмотр
Если Не ОбщийСрв.ПроверкаПрав(Объект.Автор,
ОбщийСрв.ПолучитьГлПользователь()) Тогда
ЭтаФорма.ТолькоПросмотр = Истина;
КонецЕсли;
// если проведена и запрет проведенных
Если Объект.Проведен И
ОбщийСрв.обПолучитьКонстанту("ЗапретПроведенных") Тогда
ЭтаФорма.ТолькоПросмотр = Истина;
КонецЕсли;
// ЗАКЛАДКА ИСПОЛНИТЕЛИ
152
// если пользователь является исполнителем этого документа и он
открыл документ - то считается что он с ним ознакомлен -
// надо проставить отметку об ознакомлении
ИсполнительОзнакомлен = Ложь;
Для Каждого СтрокаИсполнитель Из Объект.Исполнители Цикл
Если (СтрокаИсполнитель.Исполнитель =
ОбщийСрв.ПолучитьГлПользователь()) И (СтрокаИсполнитель.Ознакомлен =
глПустаяДата) Тогда
СтрокаИсполнитель.Ознакомлен = ТекущаяДата(); //
простановка даты ознакомления - и есть признак ознакомления
ИсполнительОзнакомлен = Истина;
ОбщийСрв.ЗаписьВедетИсполнитель(Истина); //
признак того что дальнейшая запись будет вестись исполнителем
Прервать;
КонецЕсли;
КонецЦикла;
Если ИсполнительОзнакомлен = Истина Тогда // если была
простановка даты ознакомления
П = Новый Структура;
П.Вставить("РежимЗаписи", РежимЗаписиДокумента.Запись);
Записать(П);
КонецЕсли;
// ЗАКЛАДКА ПОДЗАДАЧИ
ВывестиПанельПодзадач(); // первоначальное заполнение дерева
подзадач
// РодительскаяЗадача =
ОбщийСрв.НайтиРодительскуюЗадачу(Объект.Ссылка);
КонецПроцедуры
// реакция на команду формы Записать и закрыть
&НаКлиенте
Процедура ФормаЗаписатьИЗакрыть(Команда)
Записать();
Закрыть();
КонецПроцедуры
// реакция на команду формы Распровести
&НаКлиенте
Процедура ФормаРаспровести(Команда)
П = Новый Структура;
153
П.Вставить("РежимЗаписи",
РежимЗаписиДокумента.ОтменаПроведения);
Записать(П);
КонецПроцедуры
// реакция на окончание выбора в других формах
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
// результат пришел из формы Исполнение исполнителем
Если ИсточникВыбора.ИмяФормы =
"Документ.Задача.Форма.ФормаИсполнения" Тогда
ЭтотОбъект.Элементы.Исполнители.ТекущиеДанные.РезультатИсполнен
ия = ВыбранноеЗначение.Получить(0).Значение;
ЭтотОбъект.Элементы.Исполнители.ТекущиеДанные.ДатаИсполнения
= ВыбранноеЗначение.Получить(1).Значение;
ЭтотОбъект.Элементы.Исполнители.ТекущиеДанные.Комментарий
= ВыбранноеЗначение.Получить(2).Значение;
ОбщийСрв.ЗаписьВедетИсполнитель(Истина); // флаг того,
что записывать можно, даже если нет прав
П = Новый Структура;
П.Вставить("РежимЗаписи", РежимЗаписиДокумента.Запись);
ЭтотОбъект.Записать(П);
КонецЕсли;
// результат пришел из формы выбора справочника Этапы
Если ИсточникВыбора.ИмяФормы =
"Справочник.Этапы.ФормаВыбора" Тогда
ЗаполнитьДеревоПоШаблону(ВыбранноеЗначение);
КонецЕсли;
КонецПроцедуры
// проверить возможность записи документа из формы
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если ПараметрыЗаписи.РежимЗаписи =
РежимЗаписиДокумента.Проведение Тогда
Отказ = Не ПроверкаВозможностиПроведения();
154
КонецЕсли;
Если ПараметрыЗаписи.РежимЗаписи =
РежимЗаписиДокумента.ОтменаПроведения Тогда
Отказ = Не ПроверкаВозможностиРасПроведения();
КонецЕсли
КонецПроцедуры
&НаКлиенте
Функция ПроверкаВозможностиРасПроведения(ЭтаЗадача =
Неопределено)
Если ЭтаЗадача = Неопределено Тогда
ЭтаЗадача = Объект.Ссылка;
КонецЕсли;
// задать пользователю вопрос
//МассивОтменяемых =
ОбщийСрв.СформироватьСписокОтменяемых(ЭтаЗадача);
//Если МассивОтменяемых.Количество() Тогда
// Если Вопрос("Отмена выполнения задачи " +
ОбщийСрв.ПредставлениеЗадачи(ЭтаЗадача)
// + " приведет к отмене выполнения задач-родителей.
Все равно отменить?", РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Нет
Тогда
// Возврат Ложь;
// КонецЕсли;
//КонецЕсли;
Возврат Истина;
КонецФункции
Функция ПроверкаВозможностиПроведения(ЭтаЗадача = Неопределено)
Если ЭтаЗадача = Неопределено Тогда
ЭтаЗадача = Объект.Ссылка;
КонецЕсли;
// задать пользователю вопрос
Возврат Истина;
КонецФункции
155
// ЗАКЛАДКА СВОЙСТВА
&НаКлиенте
Процедура СвойстваВидСвойстваОбработкаВыбора(Элемент,
ВыбранноеЗначение, СтандартнаяОбработка)
// проверка соответсвия типа выбранного свойства
Если Не
СвойстваВидСвойстваОбработкаВыбораНаСервере(ВыбранноеЗначение) Тогда
Сообщить("Тип свойства выбранного вида свойств не
относится к задачам");
СтандартнаяОбработка = Ложь;
Возврат;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция
СвойстваВидСвойстваОбработкаВыбораНаСервере(ВыбВидСвойства)
Если
ВыбВидСвойства.ПолучитьОбъект().ТипСвойства.ТипОбъекта <>
Перечисления.ТипыОбъектов.Задача Тогда
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
//---------------------------------------------------------------------------
// ЗАКЛАДКА ПЕРЕПИСКА
// выход из поля ввода текста сообщения - это команда на добавление
сообщения
&НаКлиенте
Процедура НовоеСообщениеОкончаниеВводаТекста(Элемент, Текст,
ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
Если ПустаяСтрока(Текст) Тогда
Возврат;
КонецЕсли;
ДобавитьНовоеСообщение(Текст);
156
КонецПроцедуры
// программное добавление сообщения
&НаКлиенте
Процедура ДобавитьНовоеСообщение(ТекстСообщения)
Если Объект.Ссылка.Пустая() Тогда
Сообщить("Нужно сначала записать новую задачу");
Возврат;
КонецЕсли;
НоваяСтрока = Объект.Переписка.Добавить();
НоваяСтрока.Пользователь =
ОбщийСрв.ПолучитьГлПользователь();
НоваяСтрока.ДатаСообщения = ТекущаяДата();
НоваяСтрока.Сообщение = ТекстСообщения;
ОбщийСрв.ЗаписьВедетИсполнитель(Истина); // флаг того, что
записывать можно, даже если нет прав
Записать();
КонецПроцедуры
//---------------------------------------------------------------------------
// ЗАКЛАДКА ИСПОЛНИТЕЛИ
// по команде Исполнить
&НаКлиенте
Процедура ИсполнителиИсполнить(Команда)
Если
ОбщийСрв.ПроверкаПрав(ЭтотОбъект.Элементы.Исполнители.ТекущиеДанны
е.Исполнитель, ОбщийСрв.ПолучитьГлПользователь()) Тогда
П = Новый Структура;
П.Вставить("Исполнитель",
ЭтотОбъект.Элементы.Исполнители.ТекущиеДанные.Исполнитель);
П.Вставить("РезультатИсполнения",
ЭтотОбъект.Элементы.Исполнители.ТекущиеДанные.РезультатИсполнен
ия);
П.Вставить("ДатаИсполнения",
ЭтотОбъект.Элементы.Исполнители.ТекущиеДанные.ДатаИсполнения);

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Agile-методология в управлении проектами на примере ООО «Ресурсный центр «Академия КлассИнфо»
Aвтoмaтизaция пpoцecca вeдeния инфopмaциoннoй бaзы o дoлжнocтяx и вaкaнcияx c укaзaниeм тpeбoвaний к уpoвню знaний и нaвыкoв кaндидaтoв для гpуппы кaдpoв вoйcкoвoй чacти 3474»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
Cовершенствование управления рентабельности предприятия (на примере гуипп «бендерская типография «полиграфист»)
Event - менеджмент: реализация проекта (на примере ООО "АГРОПАК")