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