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