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