Чек ККМ / Форма документа / Модуль формы

файл

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	УстановитьУсловноеОформление();
	
	Если Параметры.Свойство("АвтоТест") Тогда
		Возврат;
	КонецЕсли;

	ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
	
	Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
		ПриЧтенииСозданииНаСервере();
	КонецЕсли;
	
	Если Объект.Статус <> Перечисления.СтатусыЧековККМ.Пробит Тогда
		Элементы.ГруппаСуммаСдачи.Видимость = Ложь;
	КонецЕсли;
	
	Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
		
		ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ЧекККМ));
		НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий); 
		УстановитьВидимостьЭлементовСерий();
		ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
		Элементы.СтраницаКомментарий.Картинка = ОбщегоНазначенияКлиентСервер.КартинкаКомментария(Объект.Комментарий);
		
	КонецЕсли;
	
	Элементы.ТоварыПомещение.Видимость = СкладыСервер.ИспользоватьСкладскиеПомещения(Объект.Склад,Объект.Дата);
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
	УстановитьВидимостьРеквизитаРазрешенияНаПродажуЛокализация();
	УстановитьДоступностьКомандСозданияДокументовНаВозврат();
	
	СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
	
	ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	ПересчитатьДокументНаКлиенте();
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
КонецПроцедуры

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)

	// СтандартныеПодсистемы.УправлениеДоступом
	УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
	// Конец СтандартныеПодсистемы.УправлениеДоступом
	
	ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ЧекККМ));
	УстановитьВидимостьЭлементовСерий();
	ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
	
	Элементы.СтраницаКомментарий.Картинка = ОбщегоНазначенияКлиентСервер.КартинкаКомментария(Объект.Комментарий);

	МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
	
	ПриЧтенииСозданииНаСервере();
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
КонецПроцедуры

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)

	// СтандартныеПодсистемы.УправлениеДоступом
	УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
	// Конец СтандартныеПодсистемы.УправлениеДоступом
	
	Элементы.СтраницаКомментарий.Картинка = ОбщегоНазначенияКлиентСервер.КартинкаКомментария(Объект.Комментарий);
	ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();

	МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);

КонецПроцедуры

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
	
	Оповестить("Запись_ЧекККМ", ПараметрыЗаписи, Объект.Ссылка);

	МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи);

	// СтандартныеПодсистемы.ПодключаемыеКоманды
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
		МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
		МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
	КонецЕсли;
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

	МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);

КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовФормы

&НаКлиенте
Процедура ФискальнаяОперацияСтатусОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	ФискальнаяОперацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийТабличнойЧастиТовары

&НаКлиенте
Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	Если НаборыКлиент.БлокируемыйЭлемент(Поле) Тогда
		
		ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(ВыбраннаяСтрока);
		Если ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора) Тогда
			
			ПараметрОповещения = Новый Структура;
			ПараметрОповещения.Вставить("НоменклатураНабора",   ТекущаяСтрока.НоменклатураНабора);
			ПараметрОповещения.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
			ПараметрОповещения.Вставить("ФормаВладелец", УникальныйИдентификатор);
			
			Оповестить("РедактироватьНабор", ПараметрОповещения, ЭтаФорма);
			
		КонецЕсли;
		
	ИначеЕсли Поле = Элементы.ТоварыНоменклатураНабора Тогда
		ПоказатьЗначение(Неопределено, Элементы.Товары.ТекущиеДанные.НоменклатураНабора);
	ИначеЕсли Поле = Элементы.ТоварыСтатусУказанияСерий
		Или Поле = Элементы.ТоварыСерия Тогда
		
		ОткрытьПодборСерий();
		
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
	
	ОбщегоНазначенияУТКлиент.Записать(ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ПровестиДокумент(Команда)
	
	ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
	
	ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ОтправитьПодтверждениеНСПК(Команда)
	
	ОтправитьПодтверждениеНСПКНаКлиентеЛокализация();
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаСервере
Процедура УстановитьУсловноеОформление()

	УсловноеОформление.Элементы.Очистить();

	//

	НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма);

	//

	НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма);

	//

	НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма, Ложь);

	//

	НоменклатураСервер.УстановитьУсловноеОформлениеСтатусовУказанияСерий(ЭтаФорма, Ложь);
	
	//

	НаборыСервер.УстановитьУсловноеОформление(ЭтаФорма, "Товары");

КонецПроцедуры

&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
	
	ФискальнаяОперацияОбновитьСтатус();
	
КонецПроцедуры

#Область Наборы

&НаКлиенте
// Вызывается через ОписаниеОповещения из общего модуля НаборыКлиент 
Процедура ПриУдаленииКомплектующих(Действие, ДополнительныйПараметр) Экспорт
	
	Если НаборыКлиент.ДействиеРедактироватьНабор(Действие) Тогда
		НаборыКлиент.ПриУдаленииКомплектующих(ЭтаФорма, "Товары", ДополнительныйПараметр);
	ИначеЕсли НаборыКлиент.ДействиеУдалитьВесьНабор(Действие) Тогда
		ПриУдаленииКомплектующихНаСервере("Товары", ДополнительныйПараметр);
	КонецЕсли;
	
	ПересчитатьДокументНаКлиенте();
	
КонецПроцедуры

&НаСервере
Процедура ПриУдаленииКомплектующихНаСервере(ИмяТЧ, ДополнительныйПараметр)
	НаборыСервер.ПриУдаленииКомплектующих(ЭтаФорма, ИмяТЧ, ДополнительныйПараметр);
КонецПроцедуры

#КонецОбласти

#Область ФискальнаяОперация

&НаСервере
Процедура ФискальнаяОперацияОбновитьСтатус()
	
	Если ЗначениеЗаполнено(Объект.Ссылка)
			И Объект.Статус = Перечисления.СтатусыЧековККМ.Пробит Тогда
		ФискальнаяОперацияДанныеЖурнала = ОборудованиеЧекопечатающиеУстройства.ДанныеФискальнойОперации(Объект.Ссылка);
		ФискальнаяОперацияОбновитьСтатусЛокализация(ФискальнаяОперацияДанныеЖурнала);
	Иначе
		ФискальнаяОперацияДанныеЖурнала = Неопределено;
	КонецЕсли;
	
	Строки = Новый Массив;
	Если ФискальнаяОперацияДанныеЖурнала = Неопределено Тогда
		
		Строки.Добавить("");
		
	Иначе
		
		Строки.Добавить(
			Новый ФорматированнаяСтрока(
				СтрШаблон(
					НСтр("ru = 'Пробит чек №%1'"),
					ФискальнаяОперацияДанныеЖурнала.НомерЧекаККМ),,
				ЦветаСтиля.ГиперссылкаЦвет,,
				"ОткрытьЗаписьФискальнойОперации"));
		
	КонецЕсли;
	
	ФискальнаяОперацияСтатус = Новый ФорматированнаяСтрока(Строки);
	
КонецПроцедуры

&НаКлиенте
Процедура ФискальнаяОперацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	Если "ОткрытьЗаписьФискальнойОперации" = НавигационнаяСсылкаФорматированнойСтроки Тогда
		
		ПодключаемоеОборудованиеУТКлиент.ОткрытьЗаписьФискальнойОперации(ЭтотОбъект, Объект.Ссылка);
		
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#Область Прочее

&НаКлиенте
Процедура ПересчитатьДокументНаКлиенте()
	
	СуммаДокумента = ЦенообразованиеКлиентСервер.ПолучитьСуммуДокумента(Объект.Товары, Объект.ЦенаВключаетНДС);
	ОплаченоПрочее = Объект.ОплатаПлатежнымиКартами.Итог("Сумма") + Объект.ПодарочныеСертификаты.Итог("Сумма");
	СуммаСдачи = Объект.ОплатаПлатежнымиКартами.Итог("Сумма") + Объект.ПодарочныеСертификаты.Итог("Сумма") + Объект.ПолученоНаличными - Объект.СуммаДокумента;
	СуммаСкидки = Объект.Товары.Итог("СуммаРучнойСкидки") + Объект.Товары.Итог("СуммаАвтоматическойСкидки");
	СуммаБезСкидки = Объект.СуммаДокумента + СуммаСкидки;
	
КонецПроцедуры

&НаСервере
Процедура УстановитьДоступностьКомандСозданияДокументовНаВозврат()
	
	СтруктураСостояниеКассовойСмены = РозничныеПродажи.ПолучитьСостояниеКассовойСмены(Объект.КассаККМ);
	КассоваяСменаОткрыта = СтруктураСостояниеКассовойСмены.СменаОткрыта;
	ЧекПробит = (Объект.Статус =  Перечисления.СтатусыЧековККМ.Пробит);
	
	ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФормаДокументЧекККМВозвратСоздатьНаОсновании",                   "Доступность", ЧекПробит И КассоваяСменаОткрыта);
	ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФормаДокументВозвратТоваровОтКлиентаСоздатьНаОсновании",         "Доступность", ЧекПробит);
	ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФормаДокументЗаявкаНаВозвратТоваровОтКлиентаСоздатьНаОсновании", "Доступность", ЧекПробит);
	ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФормаДокументЧекККМКоррекцииСоздатьНаОсновании",                 "Доступность", КассоваяСменаОткрыта);
	
КонецПроцедуры

&НаСервере
Процедура УстановитьВидимостьЭлементовСерий()
	
	Элементы.ТоварыСтатусУказанияСерий.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
	Элементы.ТоварыСерия.Видимость               = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
	
КонецПроцедуры

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
	ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры

&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
	ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыПоНоменклатуре()
	
	ПараметрыЗаполненияРеквизитов = Новый Структура;
	ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
	ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
	
	НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, ПараметрыЗаполненияРеквизитов);
	
	НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьПодборСерий()
	ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
	
	Если НоменклатураКлиент.ДляУказанияСерийНуженСерверныйВызов(ЭтаФорма,ПараметрыУказанияСерий,"",ТекущиеДанные)Тогда
		ТекущиеДанныеИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();

		ПараметрыФормыУказанияСерий = ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор);
		
		ОткрытьФорму(ПараметрыФормыУказанияСерий.ИмяФормы,ПараметрыФормыУказанияСерий,ЭтаФорма,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
	КонецЕсли;
КонецПроцедуры

&НаСервере
Функция ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор)
	
	Возврат НоменклатураСервер.ПараметрыФормыУказанияСерий(Объект, ПараметрыУказанияСерий, ТекущиеДанныеИдентификатор, ЭтаФорма);
	
КонецФункции

#КонецОбласти

#Область СлужебныеПроцедурыИФункцииЛокализация

&НаКлиенте
Процедура ОтправитьПодтверждениеНСПКНаКлиентеЛокализация()
	
	//++ Локализация
	
	СтрокиДляОплатыЭС = ТоварыФССКОплате();
	
	Если СтрокиДляОплатыЭС.Количество() = 0 Тогда
		ПоказатьПредупреждение(,
			НСтр("ru = 'В документе не выбраны товары из классификатора ФСС, либо у товаров не указан код ТРУ ФСС.'"));
		Возврат;
	КонецЕсли;
	
	СуммаСертификатамиЭСФСС = СуммаОплатыЭСФССПоДокументу(Объект.ОплатаПлатежнымиКартами);
	
	Если СуммаСертификатамиЭСФСС = 0 Тогда
		ПоказатьПредупреждение(,
			НСтр("ru = 'Отправлять подтверждение не требуется, т.к. ЭС НСПК не использовался для оплаты'"));
		Возврат;
	КонецЕсли;
	
	ДополнительныеПараметры = Новый Структура("СуммаСертификатамиЭСФСС", СуммаСертификатамиЭСФСС);
	
	Если ОтправленФискальныйЧекВНСПК(Объект) Тогда
		
		ПоказатьВопрос(
			Новый ОписаниеОповещения("ОповещениеВопросОтправитьПодтверждениеНСПК", ЭтотОбъект, ДополнительныеПараметры),
			НСтр("ru = 'Подтверждение уже было отправлено на сервер НСПК. Повторить отправку подтверждения?'"),
			РежимДиалогаВопрос.ПовторитьОтмена);
		
	Иначе
		
		ОтправитьПодтверждениеНСПКНаКлиенте(Объект.Ссылка, ДополнительныеПараметры.СуммаСертификатамиЭСФСС);
		
	КонецЕсли;
	
	//-- Локализация
	
КонецПроцедуры

&НаСервере
Процедура УстановитьВидимостьРеквизитаРазрешенияНаПродажуЛокализация()
	
	//++ Локализация
	ВетеринарныеПрепараты = Перечисления.ВидыПродукцииИС.ВетеринарныеПрепараты;
	
	Если ИнтеграцияИСМПКлиентСерверПовтИсп.ВестиУчетМаркируемойПродукции(ВетеринарныеПрепараты) Тогда
		
		ДобавляемыеРеквизиты = Новый Массив;
		
		Реквизит = Новый РеквизитФормы("РеквизитыРазрешенияНаПродажу",
			Новый ОписаниеТипов("Строка"),
			"Объект.Товары");
		ДобавляемыеРеквизиты.Добавить(Реквизит);
		
		ИзменитьРеквизиты(ДобавляемыеРеквизиты);
		
		ПутьКРеквизиту = "Объект.Товары.РеквизитыРазрешенияНаПродажу";
		КолонкаИнтерфейса = Элементы.Вставить(
			"ТоварыРеквизитыРазрешенияНаПродажу",
			Тип("ПолеФормы"),
			Элементы.Товары,
			Элементы.ТоварыИндексНабора);
		КолонкаИнтерфейса.ПутьКДанным = ПутьКРеквизиту;
		КолонкаИнтерфейса.Заголовок = "Разрешение на продажу";
		КолонкаИнтерфейса.Вид = ВидПоляФормы.ПолеВвода;
		КолонкаИнтерфейса.ТолькоПросмотр = Истина;
		
		ЕстьРазрешенияНаПродажу = Ложь;
		
		Для Каждого СтрокаТовары Из Объект.Товары Цикл
			
			ПараметрыОтбора = Новый Структура;
			ПараметрыОтбора.Вставить("ИдентификаторСтроки", СтрокаТовары.ИдентификаторСтроки);
			
			СтрокиРазрешенияНаПродажу = Объект.РазрешенияНаПродажу.НайтиСтроки(ПараметрыОтбора);
			
			Если СтрокиРазрешенияНаПродажу.Количество() > 0
				И ЗначениеЗаполнено(СтрокиРазрешенияНаПродажу[0].ТипДокумента) Тогда
				
				СтрокаТовары.РеквизитыРазрешенияНаПродажу = "" + СтрокиРазрешенияНаПродажу[0].ТипДокумента
					+ " №" + СтрокиРазрешенияНаПродажу[0].НомерДокумента + " от "
					+ Формат(СтрокиРазрешенияНаПродажу[0].ДатаДокумента, "ДФ=dd.MM.yyyy");
				
				ЕстьРазрешенияНаПродажу = Истина;
			КонецЕсли;
			
		КонецЦикла;
		
		КолонкаИнтерфейса.Видимость = ЕстьРазрешенияНаПродажу;
		
	КонецЕсли;
	//-- Локализация
	
КонецПроцедуры

&НаСервере
Процедура ФискальнаяОперацияОбновитьСтатусЛокализация(ФискальнаяОперацияДанныеЖурнала)
	
	//++ Локализация
	Если ФискальнаяОперацияДанныеЖурнала = Неопределено Тогда
		
		Запрос = Новый Запрос;
		Запрос.Текст =
		"ВЫБРАТЬ
		|	ЧекККМКоррекции.Ссылка КАК Ссылка
		|ИЗ
		|	Документ.ЧекККМКоррекции КАК ЧекККМКоррекции
		|ГДЕ
		|	ЧекККМКоррекции.ЧекККМ = &ЧекККМ
		|	И ЧекККМКоррекции.Проведен = ИСТИНА
		|	И ЧекККМКоррекции.Статус = &Статус
		|	И ЧекККМКоррекции.ВидКоррекции = &ВидКоррекции";
		Запрос.УстановитьПараметр("ЧекККМ", Объект.Ссылка);
		Запрос.УстановитьПараметр("Статус", Перечисления.СтатусыЧековККМ.Пробит);
		Запрос.УстановитьПараметр("ВидКоррекции", Перечисления.ВидыЧековКоррекции.НеприменениеККТ);
		
		Выборка = Запрос.Выполнить().Выбрать();
		Если Выборка.Следующий() Тогда
			ФискальнаяОперацияДанныеЖурнала = ОборудованиеЧекопечатающиеУстройства.ДанныеФискальнойОперации(Выборка.Ссылка);
		КонецЕсли;
		
	КонецЕсли;
	//-- Локализация
	
КонецПроцедуры

//++ Локализация

&НаСервере
Функция ПараметрыПередачиДанныхФискальногоЧека(ДокументОснование, СуммаСертификатамиЭСФСС)
	
	Возврат ЭлектронныеСертификатыНСПКУТ.ПараметрыПередачиДанныхФискальногоЧека(ДокументОснование, СуммаСертификатамиЭСФСС);
	
КонецФункции

&НаКлиенте
Процедура ОповещениеВопросОтправитьПодтверждениеНСПК(Знач Результат = Неопределено, Знач ДополнительныеПараметры = Неопределено) Экспорт
	
	Если Результат <> КодВозвратаДиалога.Повторить Тогда
		Возврат;
	КонецЕсли;
	
	ОтправитьПодтверждениеНСПКНаКлиенте(Объект.Ссылка, ДополнительныеПараметры.СуммаСертификатамиЭСФСС);
	
КонецПроцедуры

&НаКлиенте
Процедура ОтправитьПодтверждениеНСПКНаКлиенте(ЧекККМ, СуммаСертификатамиЭСФСС)
	
	ПараметрыОперации = ПараметрыПередачиДанныхФискальногоЧека(ЧекККМ, СуммаСертификатамиЭСФСС);
	Если ПараметрыОперации = Неопределено Тогда
		ТекстСообщения = СтрШаблон(НСтр("ru = 'Отсутствуют данные о фискализации чека: %1'"), СокрЛП(ЧекККМ));
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения);
	Иначе
		ОповещениеМетода = Новый ОписаниеОповещения("ПередатьДанныеФискальногоЧекаНСПКЗавершение", ЭтотОбъект, ПараметрыОперации);
		ЭлектронныеСертификатыНСПККлиент.НачатьПередачуДанныхФискальногоЧека(ОповещениеМетода, ПараметрыОперации);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПередатьДанныеФискальногоЧекаНСПКЗавершение(РезультатВыполнения, ДополнительныеПараметры) Экспорт 
	
	РезультатПередачи = Новый Структура("Результат, КодРезультата, ОписаниеОшибки", Ложь, 999, "");
	ЗаполнитьЗначенияСвойств(РезультатПередачи, РезультатВыполнения);
	
	Если Не РезультатПередачи.Результат Тогда
		ТекстСообщения = СтрШаблон(
			НСтр("ru = 'При отправке подтверждения операции %1 на сервер произошла ошибка (код %2):
			|%3'", ОбщегоНазначенияКлиент.КодОсновногоЯзыка()),
			ДополнительныеПараметры.ИдентификаторКорзины,
			Строка(РезультатПередачи.КодРезультата),
			РезультатПередачи.ОписаниеОшибки);
			
		ДобавитьЗаписьПоНеотправленномуВНСПКФискальномуЧеку(Объект.Ссылка, ТекстСообщения);
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения);
	Иначе
		ТекстСообщения = СтрШаблон(
			НСтр("ru = 'Подтверждение операции %1 успешно отправлено на сервер НСПК'",
				ОбщегоНазначенияКлиент.КодОсновногоЯзыка()),
			ДополнительныеПараметры.ИдентификаторКорзины);
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения);
		
		УдалитьЗаписьПоОтправленномуВНСПКФискальномуЧеку(Объект.Ссылка);
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ДобавитьЗаписьПоНеотправленномуВНСПКФискальномуЧеку(ЧекККМ, ТекстСообщения)
	
	ЭлектронныеСертификатыНСПКУТ.ДобавитьЗаписьПоНеотправленномуВНСПКФискальномуЧеку(ЧекККМ, ТекстСообщения);
	
КонецПроцедуры

&НаСервере
Процедура УдалитьЗаписьПоОтправленномуВНСПКФискальномуЧеку(ЧекККМ)
	
	ЭлектронныеСертификатыНСПКУТ.УдалитьЗаписьПоОтправленномуВНСПКФискальномуЧеку(ЧекККМ);
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция СуммаОплатыЭСФССПоДокументу(ЗНАЧ ОплатыПлатежнойКартой)
	
	Возврат РозничныеПродажиЛокализация.СуммаОплатыЭСФССПоДокументу(ОплатыПлатежнойКартой.Выгрузить());
	
КонецФункции

&НаСервереБезКонтекста
Функция ОтправленФискальныйЧекВНСПК(ЗНАЧ Объект)
	
	Возврат РегистрыСведений.НеотправленныеВНСПКФискальныеЧекиСТоварамиФСС.ОтправленФискальныйЧекВНСПК(Объект.Ссылка);
	
КонецФункции

&НаСервере
Функция ТоварыФССКОплате()
	
	Возврат ЧекККМЛокализация.ТоварыФССВДокументеКОплате(
				Объект.Товары.Выгрузить(),
				Объект.ЦенаВключаетНДС);
	
КонецФункции

//-- Локализация

#КонецОбласти

#КонецОбласти

Связанные материалы