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