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