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

файл
#Область ОписаниеПеременных

&НаКлиенте
Перем ОбновитьИнтерфейс;

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

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

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

&НаКлиенте
Процедура ВариантПроверкиСтатусовСертификатовНоменклатурыРосаккредитацииОчистка(Элемент, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
КонецПроцедуры

&НаКлиенте
Процедура ПриИзмененииРеквизита(Элемент)
	
	ЭтаФорма.Модифицированность = Истина;
	
КонецПроцедуры  

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

&НаСервере
Функция ПриИзмененииРеквизитаСервер(ИмяЭлемента)
	
	РеквизитПутьКДанным = Элементы[ИмяЭлемента].ПутьКДанным;
	
	КонстантаИмя = СохранитьЗначениеРеквизита(РеквизитПутьКДанным);
	
	УстановитьДоступность(РеквизитПутьКДанным);
	
	ОбновитьПовторноИспользуемыеЗначения();
	
	Возврат КонстантаИмя;
	
КонецФункции   

&НаКлиенте
Процедура ОбновитьИнтерфейсПрограммы()
	
	Если ОбновитьИнтерфейс = Истина Тогда
		ОбновитьИнтерфейс = Ложь;
		ОбщегоНазначенияКлиент.ОбновитьИнтерфейсПрограммы();
	КонецЕсли;
	
КонецПроцедуры

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

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

&НаСервере
Процедура ОпределитьНастройкиРегламентногоЗаданияОбновлениеСтатусовСертификатов()  
	
	МетаданныеПредопределенного = Метаданные.РегламентныеЗадания.ОбновлениеСтатусовСертификатовНоменклатурыРосаккредитации;
	РегламентноеЗаданиеОбновлениеСтатусов = РегламентныеЗаданияСервер.Задание(МетаданныеПредопределенного);	
	
	Если РегламентноеЗаданиеОбновлениеСтатусов <> Неопределено Тогда
		ОбновлениеСтатусовСертификатовНоменклатурыРосаккредитацииИдентификатор = РегламентноеЗаданиеОбновлениеСтатусов.УникальныйИдентификатор;
		ОбновлениеСтатусовСертификатовНоменклатурыРосаккредитацииИспользование = РегламентноеЗаданиеОбновлениеСтатусов.Использование;
		ОбновлениеСтатусовСертификатовНоменклатурыРосаккредитацииРасписание    = РегламентноеЗаданиеОбновлениеСтатусов.Расписание;
	КонецЕсли;
	
КонецПроцедуры

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

#Область РегламентныеЗадания

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

// Параметры:
// 	Расписание - РасписаниеРегламентногоЗадания
// 	ПараметрыВыполнения - Структура:
//		* ИмяРеквизитаИспользование - Строка
//		* ИмяРеквизитаРасписание - Строка
//		* Идентификатор - Строка
&НаКлиенте
Процедура РегламентныеЗаданияПослеИзмененияРасписания(Расписание, ПараметрыВыполнения) Экспорт
	
	Если Расписание = Неопределено Тогда
		Если ПараметрыВыполнения.Свойство("ИмяРеквизитаИспользование") Тогда
			ЭтотОбъект[ПараметрыВыполнения.ИмяРеквизитаИспользование] = Ложь;
		КонецЕсли;
		Возврат;
	КонецЕсли;
	
	ЭтотОбъект[ПараметрыВыполнения.ИмяРеквизитаРасписание] = Расписание;
	
	Изменения = Новый Структура("Расписание", Расписание);
	Если ПараметрыВыполнения.Свойство("ИмяРеквизитаИспользование") Тогда
		ЭтотОбъект[ПараметрыВыполнения.ИмяРеквизитаИспользование] = Истина;
		Изменения.Вставить("Использование", Истина);
	КонецЕсли;
	РегламентныеЗаданияСохранить(ПараметрыВыполнения.Идентификатор, Изменения, ПараметрыВыполнения.ИмяРеквизитаРасписание);
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)  
	
	Если ЭтаФорма.Модифицированность Тогда
		Подключаемый_ПриИзмененииРеквизита(Элементы.ВариантПроверкиСтатусовСертификатовНоменклатурыРосаккредитации);  
	КонецЕсли;            
	
КонецПроцедуры

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

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