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