Чек ККМ / Разрешение на продажу / Модуль формы

файл

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

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

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

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

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

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

&НаКлиенте
Процедура ТипДокументаПриИзменении(Элемент)
	
	Если Не ЗначениеЗаполнено(ТипДокумента) Тогда
		ТипДокумента = ПредопределенноеЗначение("Перечисление.ТипыРазрешенийНаПродажу.Рецепт");
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ТипДокументаОчистка(Элемент, СтандартнаяОбработка)
	ТипДокумента = ПредопределенноеЗначение("Перечисление.ТипыРазрешенийНаПродажу.Рецепт");
КонецПроцедуры

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

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

&НаКлиенте
Процедура Записать(Команда)
	
	ФлагДанныеДокументаОтпускаПрепаратаЗаполнены = Истина;
	
	Если Не ЗначениеЗаполнено(ТипДокумента) Тогда
		ФлагДанныеДокументаОтпускаПрепаратаЗаполнены = Ложь;
		ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru='Не указан тип документа отпуска препарата'"));
	КонецЕсли;
	
	Если Не ЗначениеЗаполнено(НомерДокумента) Тогда
		ФлагДанныеДокументаОтпускаПрепаратаЗаполнены = Ложь;
		ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru='Не указан номер документа отпуска препарата'"));
	КонецЕсли;
	
	Если Не ЗначениеЗаполнено(ДатаДокумента) Тогда
		ФлагДанныеДокументаОтпускаПрепаратаЗаполнены = Ложь;
		ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru='Не указан дата документа отпуска препарата'"));
	КонецЕсли;
	
	Если Не ФлагДанныеДокументаОтпускаПрепаратаЗаполнены Тогда
		Возврат;
	КонецЕсли;
	
	СохранитьДанныеДокументаОтпускаПрепарата();
	
КонецПроцедуры

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

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

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

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

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

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