#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ЗакрыватьФормуПослеЗавершенияОперации = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("Документы.ЧекККМ.Форма.МенюОперацийСККМ", "ЗакрыватьФормуПослеЗавершенияОперации", Ложь);
Кассир = Параметры.Кассир;
ПраваДоступа = НастройкиПродажДляПользователейСервер.ПраваДоступаРМК(Кассир);
КассаККМ = Параметры.КассаККМ;
ПриИзмененииКассыККМ();
НастроитьРМК();
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
Если СохранятьНастройкиПриЗакрытии И НЕ ЗавершениеРаботы Тогда
СохранитьНастройки();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовФормы
&НаКлиенте
Процедура ЗакрыватьФормуПослеЗавершенияОперацииПриИзменении(Элемент)
СохранятьНастройкиПриЗакрытии = Истина;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ИзменитьКассуККМ(Команда)
Отбор = Новый Структура("Ссылка", ДоступныеКассыККМ);
ПараметрыОткрытия = Новый Структура("Отбор", Отбор);
ОткрытьФорму(
"Справочник.КассыККМ.ФормаВыбора",
ПараметрыОткрытия,,,,,
Новый ОписаниеОповещения("ПослеИзмененияКассыККМ", ЭтотОбъект),
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьКассовуюСмену(Команда)
ОчиститьСообщения();
РозничныеПродажиКлиент.ЗакрытьКассовуюСмену(
ПараметрыКассыККМ,
Новый ОписаниеОповещения("ПослеЗавершенияОперацииСКассовойСменой", ЭтотОбъект));
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКассовуюСмену(Команда)
ОчиститьСообщения();
РозничныеПродажиКлиент.ОткрытьКассовуюСмену(
ПараметрыКассыККМ,
Новый ОписаниеОповещения("ПослеЗавершенияОперацииСКассовойСменой", ЭтотОбъект));
КонецПроцедуры
&НаКлиенте
Процедура ОтчетБезГашения(Команда)
ОчиститьСообщения();
РозничныеПродажиКлиент.СформироватьОтчетБезГашения(
ПараметрыКассыККМ,
Новый ОписаниеОповещения("ПослеФормированияОтчетаБезГашения", ЭтотОбъект));
КонецПроцедуры
&НаКлиенте
Процедура ВнесениеДенежныхСредств(Команда)
ОчиститьСообщения();
РозничныеПродажиКлиент.ОбработатьСостояниеСмены(
ЭтотОбъект,
Новый ОписаниеОповещения("ВнесениеДенежныхСредствПослеОбработкиСостоянияСмены", ЭтотОбъект));
КонецПроцедуры
&НаКлиенте
Процедура ВыемкаДенежныхСредств(Команда)
ОчиститьСообщения();
РозничныеПродажиКлиент.ОбработатьСостояниеСмены(
ЭтотОбъект,
Новый ОписаниеОповещения("ВыемкаДенежныхСредствПослеОбработкиСостоянияСмены", ЭтотОбъект));
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьДенежныйЯщик(Команда)
ОчиститьСообщения();
ОборудованиеЧекопечатающиеУстройстваКлиент.НачатьОткрытиеДенежногоЯщика(
Новый ОписаниеОповещения("ПослеЗавершенияОперацииОткрытияДенежногоЯщика", ЭтотОбъект),
УникальныйИдентификатор,
ПараметрыКассыККМ.ИдентификаторУстройства);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьЗаголовкиФормы(Форма)
Форма.СтруктураСостояниеКассовойСмены = РозничныеПродажиВызовСервера.СостояниеКассовойСмены(Форма.КассаККМ);
Форма.Элементы.ОткрытьКассовуюСмену.Доступность = Форма.ПраваДоступа.ОткрытьСмену И Не Форма.СтруктураСостояниеКассовойСмены.СменаОткрыта;
Форма.Элементы.ЗакрытьКассовуюСмену.Доступность = Форма.ПраваДоступа.ЗакрытьСмену И Форма.СтруктураСостояниеКассовойСмены.СменаОткрыта;
Форма.Элементы.ВнесениеДенежныхСредств.Доступность = Форма.ПраваДоступа.ВнесениеДенег;
Форма.Элементы.ВыемкаДенежныхСредств.Доступность = Форма.ПраваДоступа.ВыемкаДенег;
Если ЗначениеЗаполнено(Форма.КассаККМ) Тогда
Форма.Элементы.ГруппаОперацииСКассойККМ.Заголовок = Строка(Форма.КассаККМ);
КонецЕсли;
Если ЗначениеЗаполнено(Форма.СтруктураСостояниеКассовойСмены.СтатусКассовойСмены) Тогда
ЗаголовокГруппыОперацииСКассовойСменой = НСтр("ru='Статус смены: %СтатусСмены% %ВремяИзменения%'");
ЗаголовокГруппыОперацииСКассовойСменой = СтрЗаменить(ЗаголовокГруппыОперацииСКассовойСменой, "%СтатусСмены%", Форма.СтруктураСостояниеКассовойСмены.СтатусКассовойСмены);
ЗаголовокГруппыОперацииСКассовойСменой = СтрЗаменить(ЗаголовокГруппыОперацииСКассовойСменой, "%ВремяИзменения%", Формат(Форма.СтруктураСостояниеКассовойСмены.ДатаИзмененияСтатуса, НСтр("ru='ДФ=''dd.MM.yy HH:mm'''")));
Иначе
ЗаголовокГруппыОперацииСКассовойСменой = НСтр("ru='Смена не открыта'");
КонецЕсли;
Форма.Элементы.ГруппаОперацииСКассовойСменой.Заголовок = ЗаголовокГруппыОперацииСКассовойСменой;
ЗаголовокГруппыДенежныеОперации = НСтр("ru='В кассе %НаличностьВКассе% %Валюта%'");
перНаличностьВКассе = Формат(Форма.СтруктураСостояниеКассовойСмены.НаличностьВКассе, "ЧДЦ=2; ЧН=0");
ЗаголовокГруппыДенежныеОперации = СтрЗаменить(ЗаголовокГруппыДенежныеОперации, "%НаличностьВКассе%", перНаличностьВКассе);
ЗаголовокГруппыДенежныеОперации = СтрЗаменить(ЗаголовокГруппыДенежныеОперации, "%Валюта%", Форма.СтруктураСостояниеКассовойСмены.ВалютаПредставление);
Форма.Элементы.ГруппаДенежныеОперации.Заголовок = ЗаголовокГруппыДенежныеОперации;
КонецПроцедуры
&НаСервере
Процедура СохранитьНастройки()
ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("Документы.ЧекККМ.Форма.МенюОперацийСККМ", "ЗакрыватьФормуПослеЗавершенияОперации", ЗакрыватьФормуПослеЗавершенияОперации);
КонецПроцедуры
&НаСервере
Процедура НастроитьРМК()
ОграничитьДоступныеКассыККМОднойОрганизацией = (Параметры.Свойство("ОграничитьДоступныеКассыККМОднойОрганизацией")
И Параметры.ОграничитьДоступныеКассыККМОднойОрганизацией = Истина);
ФормированиеФискальныхЧековСервер.ЗаполнитьДоступныеКассыККМ(ДоступныеКассыККМ, КассаККМ, ОграничитьДоступныеКассыККМОднойОрганизацией);
Элементы.ИзменитьКассуККМ.Видимость = ДоступныеКассыККМ.Количество() > 1 И Параметры.ИзменитьКассуККМ;
Элементы.ОткрытьДенежныйЯщик.Видимость = Не ПараметрыКассыККМ.ИспользоватьБезПодключенияОборудования;
РозничныеПродажи.ПодписатьГорячиеКлавишиНаКнопках(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииКассыККМ()
СтруктураСостояниеКассовойСмены = РозничныеПродажиВызовСервера.СостояниеКассовойСмены(КассаККМ);
ПараметрыКассыККМ = Новый ФиксированнаяСтруктура(Справочники.КассыККМ.ПараметрыКассыККМ(КассаККМ));
ОбновитьЗаголовкиФормы(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗавершенияОперацииОткрытияДенежногоЯщика(РезультатВыполнения, ДополнительныеПараметры) Экспорт
Если НЕ РезультатВыполнения.Результат Тогда
ЗаголовокИнформации = НСтр("ru = 'При открытии денежного ящика возникла ошибка.'");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеИзмененияКассыККМ(ВыбраннаяКассаККМ, ДополнительныеПараметры) Экспорт
Если Не ЗначениеЗаполнено(ВыбраннаяКассаККМ) Тогда
Возврат;
Иначе
ПараметрыОповещения = Новый Структура("ВыбраннаяКассаККМ", ВыбраннаяКассаККМ);
ОповещениеОЗавершении = Новый ОписаниеОповещения("ПрименитьИзменениеКассыККМ", ЭтотОбъект, ПараметрыОповещения);
Если ТипЗнч(ВладелецФормы) = Тип("ФормаКлиентскогоПриложения")
И ТипЗнч(ВладелецФормы.Объект.Ссылка) = Тип("ДокументСсылка.ЧекККМВозврат")
И ЗначениеЗаполнено(ВладелецФормы.Объект.ЧекККМ)
И ВладелецФормы.Объект.КассаККМ <> ВыбраннаяКассаККМ Тогда
СостояниеНовойКассовойСмены = РозничныеПродажиВызовСервера.СостояниеКассовойСмены(ВыбраннаяКассаККМ);
Если ВладелецФормы.ДанныеПоЧекуККМ.КассоваяСмена <> СостояниеНовойКассовойСмены.КассоваяСмена
И ВладелецФормы.ДанныеПоЧекуККМ.СтатусКассовойСмены <> ПредопределенноеЗначение("Перечисление.СтатусыКассовойСмены.Закрыта") Тогда
ТекстВопроса = НСтр("ru = 'Кассовая смена чека продажи еще не закрыта.
|Если кассовая смена по выбранной кассе ККМ будет закрыта раньше, чем кассовая смена чека продажи, это может привести к неправильному отражению в учете данных о возврате. Продолжить?'");
ПоказатьВопрос(ОповещениеОЗавершении, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
КонецЕсли;
ВыполнитьОбработкуОповещения(ОповещениеОЗавершении, КодВозвратаДиалога.Да);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПрименитьИзменениеКассыККМ(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
КассаККМ = ДополнительныеПараметры.ВыбраннаяКассаККМ;
ПриИзмененииКассыККМ();
ОписаниеОповещения = Новый ОписаниеОповещения("ИзменитьКассуККМЗавершение", ВладелецФормы);
ВыполнитьОбработкуОповещения(ОписаниеОповещения, КассаККМ);
Если ЗакрыватьФормуПослеЗавершенияОперации И Открыта() Тогда
Закрыть();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗавершенияОперацииСКассовойСменой(Результат, ДополнительныеПараметры) Экспорт
ОбновитьЗаголовкиФормы(ЭтотОбъект);
Если ЗакрыватьФормуПослеЗавершенияОперации И Открыта() Тогда
Закрыть();
КонецЕсли;
Оповестить("ИзменениеКассовойСмены");
КонецПроцедуры
&НаКлиенте
Процедура ПослеФормированияОтчетаБезГашения(Результат, ДополнительныеПараметры) Экспорт
ОбновитьЗаголовкиФормы(ЭтотОбъект);
Если ЗакрыватьФормуПослеЗавершенияОперации И Открыта() Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВнесениеДенежныхСредствПослеОбработкиСостоянияСмены(Результат, ДополнительныеПараметры) Экспорт
Если Не Результат Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметрыОповещения = Новый Структура("РезультатВыполненияФискальнойОперации,СсылкаНаДокумент", Неопределено, Неопределено);
РозничныеПродажиКлиент.ВнесениеДенежныхСредств(
ЭтотОбъект,
ПараметрыКассыККМ,
Новый ОписаниеОповещения("ПослеВнесенияВыемкиДенежныхСредств", ЭтотОбъект, ДополнительныеПараметрыОповещения));
КонецПроцедуры
&НаКлиенте
Процедура ВыемкаДенежныхСредствПослеОбработкиСостоянияСмены(Результат, ДополнительныеПараметры) Экспорт
Если Не Результат Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметрыОповещения = Новый Структура("РезультатВыполненияФискальнойОперации,СсылкаНаДокумент", Неопределено, Неопределено);
РозничныеПродажиКлиент.ВыемкаДенежныхСредств(
ЭтотОбъект,
ПараметрыКассыККМ,
Новый ОписаниеОповещения("ПослеВнесенияВыемкиДенежныхСредств", ЭтотОбъект, ДополнительныеПараметрыОповещения));
КонецПроцедуры
&НаКлиенте
Процедура ПослеВнесенияВыемкиДенежныхСредств(Результат, ДополнительныеПараметры) Экспорт
РезультатВыполненияФискальнойОперации = Неопределено;
Если Результат = Ложь
И ТипЗнч(ДополнительныеПараметры) = Тип("Структура")
И ДополнительныеПараметры.Свойство("РезультатВыполненияФискальнойОперации", РезультатВыполненияФискальнойОперации)
И ТипЗнч(РезультатВыполненияФискальнойОперации) = Тип("Структура")
И РезультатВыполненияФискальнойОперации.Свойство("Результат")
И Не РезультатВыполненияФискальнойОперации.Результат Тогда
СсылкаНаДокумент = Неопределено;
ДополнительныеПараметры.Свойство("СсылкаНаДокумент", СсылкаНаДокумент);
КонецЕсли;
ОбновитьЗаголовкиФормы(ЭтотОбъект);
Если ЗакрыватьФормуПослеЗавершенияОперации И Открыта() Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
#КонецОбласти