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