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

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

&НаКлиенте
Перем ПараметрыОбработчикаОжидания;

&НаКлиенте
Перем ФормаДлительнойОперации;

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

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

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

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

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
	
	ЗначенияПоУмолчанию = Новый Структура;
	ЗначенияПоУмолчанию.Вставить("ФормироватьУправленческийБаланс");

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

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

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

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

&НаКлиенте
Процедура ИспользоватьГруппыФинансовогоУчетаПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура УчитыватьСебестоимостьТоваровПоНазначениямПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ДатаВключенияОбособленногоУчетаСебестоимостиПоНазначениямПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

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

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

&НаКлиенте
Процедура ФормироватьВидыЗапасовПоПодразделениямМенеджерамПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

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

&НаКлиенте
Процедура ИспользоватьУчетПрочихДоходовРасходовРеглПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьУчетПрочихАктивовПассивовПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

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

&НаКлиенте
Процедура ФормироватьФинансовыйРезультатПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьГруппыАналитическогоУчетаПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьМониторингЦелевыхПоказателейПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьПередачиТоваровМеждуОрганизациямиПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

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

&НаКлиенте
Процедура ИспользоватьДоговорыМеждуОрганизациямиПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура КонтролироватьОстаткиТоваровОрганизацийПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент, Ложь);
КонецПроцедуры

&НаКлиенте
Процедура РаспределениеДопРасходовПоВыбывшимТоварамПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент, Ложь);
КонецПроцедуры

&НаКлиенте
Процедура РаспределениеДопРасходовНаТоварыВПутиОтПоставщиковПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент, Ложь);
КонецПроцедуры

&НаКлиенте
Процедура АктуализироватьДанныеПриФормированииОтчетовПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьИсправлениеДокументовПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент, Ложь);
КонецПроцедуры

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

&НаКлиенте
Процедура ПриИзмененииРеквизита(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

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

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

&НаКлиенте
Процедура ФормироватьРезервыПредстоящихРасходовПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьПроверкуФинансовыхДокументовПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ВариантПроверкиДокументовПриИзменении(Элемент)
	//++ НЕ УТ
	НаборКонстант.РазрешатьИзменятьПроверенныеФинансовыеДокументы = ВариантПроверкиДокументов;
	//-- НЕ УТ
	Подключаемый_ПриИзмененииРеквизита(Элементы.РазрешатьИзменятьПроверенныеФинансовыеДокументы);
КонецПроцедуры

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

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

&НаКлиенте
Процедура ВосстановитьПоставляемуюМодельПоказателей(Команда)
	ПоказатьВопрос(Новый ОписаниеОповещения("ВосстановитьПоставляемуюМодельПоказателейЗавершение", ЭтаФорма), 
		НСтр("ru = 'Настройки поставляемых категорий целей, целевых показателей, вариантов анализа и целевых значений будут сброшены.
		|Продолжить с потерей настроек поставляемой модели показателей?'"), РежимДиалогаВопрос.ДаНет);
КонецПроцедуры

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

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

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

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

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

#Область Клиент

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

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

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

&НаКлиенте
Процедура ВыключитьКонтрольОстатковТоваров(Команда)
	ВыключитьКонтрольОстатковТоваровСервер();
КонецПроцедуры

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

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

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

#Область ВызовСервера

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

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

#Область Сервер

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

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

		Элементы.ГруппаУчетПоОбъектамВозникновенияЗатрат.Видимость = ЛОЖЬ
			//++ НЕ УТ
			ИЛИ НаборКонстант.КомплекснаяАвтоматизация 
			ИЛИ НаборКонстант.УправлениеПредприятием
			//-- НЕ УТ
		;

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

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

&НаСервереБезКонтекста 
Процедура ЗаполнитьСтруктуруЦелейИВариантыАнализаНаСервере()
	МониторингЦелевыхПоказателей.ЗаполнитьСтруктуруЦелейИВариантыАнализа();
КонецПроцедуры

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

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

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

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

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