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