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