Сканирование / Настройка сканирования на сеанс / Модуль формы

файл
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2024, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Разрешение = Параметры.Разрешение;
	Цветность = Параметры.Цветность;
	Поворот = Параметры.Поворот;
	РазмерБумаги = Параметры.РазмерБумаги;
	ДвустороннееСканирование = Параметры.ДвустороннееСканирование;
	ИспользоватьImageMagickДляПреобразованияВPDF = Параметры.ИспользоватьImageMagickДляПреобразованияВPDF;
	ПоказыватьДиалогСканера = Параметры.ПоказыватьДиалогСканера;
	ФорматСканированногоИзображения = Параметры.ФорматСканированногоИзображения;
	КачествоJPG = Параметры.КачествоJPG;
	СжатиеTIFF = Параметры.СжатиеTIFF;
	СохранятьВPDF = Параметры.СохранятьВPDF;
	ФорматХраненияМногостраничный = Параметры.ФорматХраненияМногостраничный;
	
	Элементы.Поворот.Доступность = Параметры.ДоступностьПоворот;
	Элементы.РазмерБумаги.Доступность = Параметры.ДоступностьРазмерБумаги;
	Элементы.ДвустороннееСканирование.Доступность = Параметры.ДоступностьДвустороннееСканирование;
	
	ФорматJPG = Перечисления.ФорматыСканированногоИзображения.JPG;
	ФорматTIF = Перечисления.ФорматыСканированногоИзображения.TIF;
	
	Элементы.ГруппаКачествоJPG.Видимость = (ФорматСканированногоИзображения = ФорматJPG);
	Элементы.СжатиеTIFF.Видимость = (ФорматСканированногоИзображения = ФорматTIF);
	
	Элементы.КачествоJPG.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Качество (%1)'"), КачествоJPG);
	УстановитьПодсказки();
	
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	Если ОбщегоНазначенияКлиент.ЭтоLinuxКлиент() Тогда
		АдаптироватьДляLinux();
		ПоказыватьДиалогСканера = Ложь;
	КонецЕсли;
	
	ОбработатьИспользованиеДиалогаСканирования();
КонецПроцедуры

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

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

&НаКлиенте
Процедура ФорматСканированногоИзображенияПриИзменении(Элемент)
	
	Элементы.ГруппаКачествоJPG.Видимость = (ФорматСканированногоИзображения = ФорматJPG);
	Элементы.СжатиеTIFF.Видимость = (ФорматСканированногоИзображения = ФорматTIF);
	УстановитьПодсказки();
	
КонецПроцедуры

&НаКлиенте
Процедура КачествоJPGПриИзменении(Элемент)
	Элементы.КачествоJPG.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Качество (%1)'"), КачествоJPG);
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ОК(Команда)
	
	ОчиститьСообщения();
	Если Не ПроверитьЗаполнение() Тогда 
		Возврат;
	КонецЕсли;
	
	РезультатВыбора = Новый Структура;
	РезультатВыбора.Вставить("ПоказыватьДиалогСканера",  ПоказыватьДиалогСканера);
	РезультатВыбора.Вставить("Разрешение",               Разрешение);
	РезультатВыбора.Вставить("Цветность",                Цветность);
	РезультатВыбора.Вставить("Поворот",                  Поворот);
	РезультатВыбора.Вставить("РазмерБумаги",             РазмерБумаги);
	РезультатВыбора.Вставить("ДвустороннееСканирование", ДвустороннееСканирование);
	
	РезультатВыбора.Вставить("ИспользоватьImageMagickДляПреобразованияВPDF",
		ИспользоватьImageMagickДляПреобразованияВPDF);
	
	РезультатВыбора.Вставить("ФорматСканированногоИзображения", ФорматСканированногоИзображения);
	РезультатВыбора.Вставить("КачествоJPG",                     КачествоJPG);
	РезультатВыбора.Вставить("СжатиеTIFF",                      СжатиеTIFF);
	РезультатВыбора.Вставить("СохранятьВPDF",                   СохранятьВPDF);
	РезультатВыбора.Вставить("ФорматХраненияМногостраничный",   ФорматХраненияМногостраничный);
	
	ОповеститьОВыборе(РезультатВыбора);
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ОбработатьИспользованиеДиалогаСканирования()
	
	Элементы.Разрешение.Доступность = Не ПоказыватьДиалогСканера;
	Элементы.Цветность.Доступность = Не ПоказыватьДиалогСканера;
	Элементы.Поворот.Доступность = Не ПоказыватьДиалогСканера;
	Элементы.РазмерБумаги.Доступность = Не ПоказыватьДиалогСканера;
	Элементы.ДвустороннееСканирование.Доступность = Не ПоказыватьДиалогСканера;
	Элементы.ФорматСканированногоИзображения.Доступность = Не ПоказыватьДиалогСканера;
	Элементы.КачествоJPG.Доступность = Не ПоказыватьДиалогСканера;
	Элементы.СжатиеTIFF.Доступность = Не ПоказыватьДиалогСканера;

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

&НаСервере
Процедура АдаптироватьДляLinux()
	Элементы.ПоказыватьДиалогСканера.Видимость = Ложь;
	Элементы.Поворот.Видимость = Ложь;
	ДоступныеФорматы = Новый Массив;
	ДоступныеФорматы.Добавить(Перечисления.ФорматыСканированногоИзображения.PNG);
	ДоступныеФорматы.Добавить(Перечисления.ФорматыСканированногоИзображения.JPG);
	Элементы.ФорматСканированногоИзображения.СписокВыбора.ЗагрузитьЗначения(ДоступныеФорматы);
	Элементы.ФорматСканированногоИзображения.РежимВыбораИзСписка = Истина;
	Если ДоступныеФорматы.Найти(ФорматСканированногоИзображения) = Неопределено Тогда
		ФорматСканированногоИзображения = Перечисления.ФорматыСканированногоИзображения.PNG;
		Модифицированность = Истина;
	КонецЕсли;
КонецПроцедуры

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

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