#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.БизнесПроцессы.СогласованиеЗаявкиНаВозвратТоваровОтКлиента) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Менеджер = Метаданные.БизнесПроцессы.СогласованиеЗаявкиНаВозвратТоваровОтКлиента.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.БизнесПроцессы.СогласованиеЗаявкиНаВозвратТоваровОтКлиента);
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьВнутреннееСогласованиеЗаявокНаВозвратТоваровОтКлиентов";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ФормаВыполненияЗадачи(Знач ЗадачаСсылка, Знач ТочкаМаршрутаСсылка) Экспорт
Если ТочкаМаршрутаСсылка = БизнесПроцессы.СогласованиеЗаявкиНаВозвратТоваровОтКлиента.ТочкиМаршрута.ОзнакомитьсяСРезультатами Тогда
ИмяФормы = "БизнесПроцесс.СогласованиеЗаявкиНаВозвратТоваровОтКлиента.Форма.ФормаЗадачиОзнакомиться";
ИначеЕсли ТочкаМаршрутаСсылка = БизнесПроцессы.СогласованиеЗаявкиНаВозвратТоваровОтКлиента.ТочкиМаршрута.СогласоватьЗаявкуНаВозвратТоваровОтКлиента
Или ТочкаМаршрутаСсылка = БизнесПроцессы.СогласованиеЗаявкиНаВозвратТоваровОтКлиента.ТочкиМаршрута.СогласоватьЛогистическиеУсловия
Или ТочкаМаршрутаСсылка = БизнесПроцессы.СогласованиеЗаявкиНаВозвратТоваровОтКлиента.ТочкиМаршрута.СогласоватьФинансовыеУсловия
Или ТочкаМаршрутаСсылка = БизнесПроцессы.СогласованиеЗаявкиНаВозвратТоваровОтКлиента.ТочкиМаршрута.СогласоватьЦеновыеУсловия Тогда
ИмяФормы = "БизнесПроцесс.СогласованиеЗаявкиНаВозвратТоваровОтКлиента.Форма.ФормаЗадачиРецензента";
ИначеЕсли ТочкаМаршрутаСсылка = БизнесПроцессы.СогласованиеЗаявкиНаВозвратТоваровОтКлиента.ТочкиМаршрута.ПодвестиИтогиСогласования Тогда
ИмяФормы = "БизнесПроцесс.СогласованиеЗаявкиНаВозвратТоваровОтКлиента.Форма.ФормаЗадачиПодвестиИтоги";
КонецЕсли;
Результат = Новый Структура;
Результат.Вставить("ПараметрыФормы", Новый Структура("Ключ", ЗадачаСсылка));
Результат.Вставить("ИмяФормы", ИмяФормы);
Возврат Результат;
КонецФункции
Процедура ОбработкаВыполненияПоУмолчанию(Знач ЗадачаСсылка, БизнесПроцессСсылка, Знач ТочкаМаршрутаБизнесПроцесса) Экспорт
Если ТочкаМаршрутаБизнесПроцесса = БизнесПроцессы.СогласованиеЗаявкиНаВозвратТоваровОтКлиента.ТочкиМаршрута.СогласоватьЗаявкуНаВозвратТоваровОтКлиента Или
ТочкаМаршрутаБизнесПроцесса = БизнесПроцессы.СогласованиеЗаявкиНаВозвратТоваровОтКлиента.ТочкиМаршрута.СогласоватьЛогистическиеУсловия Или
ТочкаМаршрутаБизнесПроцесса = БизнесПроцессы.СогласованиеЗаявкиНаВозвратТоваровОтКлиента.ТочкиМаршрута.СогласоватьФинансовыеУсловия Или
ТочкаМаршрутаБизнесПроцесса = БизнесПроцессы.СогласованиеЗаявкиНаВозвратТоваровОтКлиента.ТочкиМаршрута.СогласоватьЦеновыеУсловия Или
ТочкаМаршрутаБизнесПроцесса = БизнесПроцессы.СогласованиеЗаявкиНаВозвратТоваровОтКлиента.ТочкиМаршрута.ПодвестиИтогиСогласования Тогда
Попытка
ЗаблокироватьДанныеДляРедактирования(БизнесПроцессСсылка);
Исключение
ТекстОшибки = НСтр("ru='При выполнении задачи не удалось заблокировать %Ссылка%. %ОписаниеОшибки%'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Ссылка%", БизнесПроцессСсылка);
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%ОписаниеОшибки%", КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
ВызватьИсключение ТекстОшибки;
КонецПопытки;
УстановитьПривилегированныйРежим(Истина);
СогласованиеОбъект = БизнесПроцессСсылка.ПолучитьОбъект();
СогласованиеОбъект.ДобавитьРезультатСогласования(
ТочкаМаршрутаБизнесПроцесса,
Пользователи.ТекущийПользователь(),
Перечисления.РезультатыСогласования.Согласовано,
,
ТекущаяДатаСеанса());
Если ТочкаМаршрутаБизнесПроцесса = БизнесПроцессы.СогласованиеЗаявкиНаВозвратТоваровОтКлиента.ТочкиМаршрута.ПодвестиИтогиСогласования Тогда
СогласованиеОбъект.РезультатСогласования = Перечисления.РезультатыСогласования.Согласовано;
КонецЕсли;
СогласованиеОбъект.Записать();
УстановитьПривилегированныйРежим(Ложь);
РазблокироватьДанныеДляРедактирования(БизнесПроцессСсылка);
КонецЕсли;
КонецПроцедуры
Функция РезультатСогласованияПоТочкеМаршрута(Знач БизнесПроцесс, Знач ТочкаМаршрута) Экспорт
Запрос = Новый Запрос("
|ВЫБРАТЬ
| СогласованиеЗаявкиНаВозвратТоваровОтКлиентаРезультатыСогласования.РезультатСогласования КАК РезультатСогласования
|
|ИЗ
| БизнесПроцесс.СогласованиеЗаявкиНаВозвратТоваровОтКлиента.РезультатыСогласования КАК СогласованиеЗаявкиНаВозвратТоваровОтКлиентаРезультатыСогласования
|ГДЕ
| СогласованиеЗаявкиНаВозвратТоваровОтКлиентаРезультатыСогласования.Ссылка = &Ссылка
| И СогласованиеЗаявкиНаВозвратТоваровОтКлиентаРезультатыСогласования.ТочкаМаршрута = &ТочкаМаршрута
|");
Запрос.УстановитьПараметр("Ссылка", БизнесПроцесс);
Запрос.УстановитьПараметр("ТочкаМаршрута", ТочкаМаршрута);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.РезультатСогласования;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
Функция НомерПоследнейВерсииПредмета(Знач БизнесПроцесс) Экспорт
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос("
|ВЫБРАТЬ ПЕРВЫЕ 1
| ВерсииОбъектов.НомерВерсии КАК НомерВерсии
|ИЗ
| РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов
|ГДЕ
| ВерсииОбъектов.Объект = ВЫРАЗИТЬ (&БизнесПроцесс КАК БизнесПроцесс.СогласованиеЗаявкиНаВозвратТоваровОтКлиента).Предмет
|
|УПОРЯДОЧИТЬ ПО
| НомерВерсии УБЫВ
|
|");
Запрос.УстановитьПараметр("БизнесПроцесс", БизнесПроцесс);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
НомерВерсии = Выборка.НомерВерсии;
Иначе
НомерВерсии = 0;
КонецЕсли;
Возврат НомерВерсии;
КонецФункции
Функция ПоследняяВерсияПредметаОтличаетсяОтСогласованных(Знач БизнесПроцесс) Экспорт
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ЕСТЬNULL(МАКСИМУМ(РезультатыСогласования.НомерВерсии),0) КАК НомерСогласованнойВерсии,
| ЕСТЬNULL(МАКСИМУМ(ВерсииОбъектов.НомерВерсии),0) КАК НомерПоследнейВерсии
|ИЗ
| БизнесПроцесс.СогласованиеЗаявкиНаВозвратТоваровОтКлиента.РезультатыСогласования КАК РезультатыСогласования
|ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов
|ПО
| ВерсииОбъектов.Объект = РезультатыСогласования.Ссылка.Предмет
|ГДЕ
| РезультатыСогласования.Ссылка = &БизнесПроцесс
|");
Запрос.УстановитьПараметр("БизнесПроцесс", БизнесПроцесс);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Если Выборка.НомерСогласованнойВерсии <> Выборка.НомерПоследнейВерсии Тогда
ЕстьОтличия = Истина;
Иначе
ЕстьОтличия = Ложь;
КонецЕсли;
Иначе
ЕстьОтличия = Ложь;
КонецЕсли;
Возврат ЕстьОтличия;
КонецФункции
Функция ИспользуетсяВерсионированиеПредмета(Знач ТипПредмета) Экспорт
УстановитьПривилегированныйРежим(Истина);
ИспользоватьВерсионированиеОбъектов = ПолучитьФункциональнуюОпцию("ИспользоватьВерсионированиеОбъектов");
Если Не ИспользоватьВерсионированиеОбъектов Тогда
Возврат Ложь;
КонецЕсли;
ПараметрыОпции = Новый Структура();
ПараметрыОпции.Вставить("ТипОбъекта", ТипПредмета);
ИспользоватьВерсионированиеОбъекта = ПолучитьФункциональнуюОпцию("ИспользоватьВерсионированиеОбъекта", ПараметрыОпции);
Возврат ИспользоватьВерсионированиеОбъекта;
КонецФункции
Процедура ПриПеренаправленииЗадачи(ЗадачаСсылка, НоваяЗадачаСсылка) Экспорт
ЗадачаОбъект = НоваяЗадачаСсылка.ПолучитьОбъект();
ЗаблокироватьДанныеДляРедактирования(НоваяЗадачаСсылка);
ЗадачаОбъект.РезультатВыполнения = РезультатВыполненияПриПеренаправлении(ЗадачаСсылка) +
ЗадачаОбъект.РезультатВыполнения;
ЗадачаОбъект.Записать();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ОбновлениеИнформационнойБазы
Процедура ИнициализироватьРолиИсполнителей() Экспорт
РольОбъект = Справочники.РолиИсполнителей.СогласующийЗаявкиНаВозвратТоваровОтКлиентов.ПолучитьОбъект();
РольОбъект.ИспользуетсяБезОбъектовАдресации = Истина;
РольОбъект.Записать();
КонецПроцедуры
#КонецОбласти
#Область Прочее
Функция РезультатВыполненияПриПеренаправлении(Знач ЗадачаСсылка)
СтрокаФормат = НСтр("ru = '%1, %2 перенаправил(а) задачу:'");
СтрокаФормат = СтрокаФормат + Символы.ПС + "%3" + Символы.ПС;
РеквизитыЗадачаСсылка = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ЗадачаСсылка,
"РезультатВыполнения, ДатаИсполнения, Исполнитель");
Комментарий = СокрЛП(РеквизитыЗадачаСсылка.РезультатВыполнения);
Комментарий = ?(ПустаяСтрока(Комментарий), "", Комментарий + Символы.ПС);
Результат = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаФормат,
РеквизитыЗадачаСсылка.ДатаИсполнения,
РеквизитыЗадачаСсылка.Исполнитель,
Комментарий);
Возврат Результат;
КонецФункции
#КонецОбласти
#Область Отчеты
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
КомандаОтчет = Отчеты.РезультатыСогласованияЗаявкиНаВозвратТоваровОтКлиента.ДобавитьКомандуОтчета(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаБизнесПроцесса,ФормаСписка";
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецЕсли