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

Процедура ПриОткрытии()
	
	мПлатформа = ирКэш.Получить();
	#Если Сервер И Не Сервер Тогда
		мПлатформа = Обработки.ирПлатформа.Создать();
	#КонецЕсли
	ирКлиент.Форма_ПриОткрытииЛкс(ЭтаФорма);
	ЭтаФорма.ФайлШаблоновТекста = ирОбщий.ВосстановитьЗначениеЛкс(ИмяКласса + ".ФайлШаблоновТекста");
	ЭтаФорма.ЛиОткрыватьПустойСписок = ирОбщий.ВосстановитьЗначениеЛкс(ИмяКласса + ".ЛиОткрыватьПустойСписок");
	ЭтаФорма.ЛиАктивизироватьОкноСправкиПриЕгоОткрытии = ирОбщий.ВосстановитьЗначениеЛкс(ИмяКласса + ".ЛиАктивизироватьОкноСправкиПриЕгоОткрытии");
	ЭтаФорма.ПредпочитаюСобственныйКонструкторЗапроса = ирОбщий.ВосстановитьЗначениеЛкс(ИмяКласса + ".ПредпочитаюСобственныйКонструкторЗапроса");
	ЭтаФорма.ПоказыватьВсеТипыВСпискеАвтодополненияHTML = ПоказыватьВсеТипыВСпискеАвтодополненияHTML(Истина);
	ЭтаФорма.АвтоматическаяПодсказкаПоВызовуМетода = АвтоматическаяПодсказкаПоВызовуМетода(Истина);
	ЭтаФорма.АвтоматическаяПодсказкаАвтодополненияHTML = АвтоматическаяПодсказкаАвтодополненияHTML(Истина);
	ЭтаФорма.ПредпочитатьHTMLРедакторКода = ПредпочитатьHTMLРедакторКода(Истина);
	ЭтаФорма.ГитРепозиторий = ГитРепозиторий();
	ЭтаФорма.СжиматьПустыеСтроки = ЛиСжиматьПустыеСтроки();
	ЭтаФорма.СжиматьВнутренниеПустотыВСтроке = ЛиСжиматьВнутренниеПустотыВСтроке();
	ЭтаФорма.КаталогКэша = мПлатформа.ПапкаКэшаМодулей.ПолноеИмя;
	ОбновитьИнфоПапкиКэша();

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

Процедура ФайлШаблоновНачалоВыбора(Элемент, СтандартнаяОбработка)
	
	лПолноеИмяФайла = ирКлиент.ВыбратьФайлЛкс(, "st", "Файл шаблонов текста 1С", Элемент.Значение);
	Если лПолноеИмяФайла = Неопределено Тогда
		Возврат;
	КонецЕсли;
	ирКлиент.ИнтерактивноЗаписатьВПолеВводаЛкс(Элемент, лПолноеИмяФайла);
	
КонецПроцедуры

Процедура ФайлШаблоновТекстаОткрытие(Элемент, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	ТаблицаШаблоновТекста = ирКэш.Получить().ПолучитьТаблицуШаблоновТекста(ИмяКласса);
	ТаблицаШаблоновТекста.Сортировать("Шаблон");
	ирОбщий.ИсследоватьЛкс(ТаблицаШаблоновТекста, Ложь, Истина);
	
КонецПроцедуры

Процедура КоманднаяПанель1ОбновитьКэшМодулей(Кнопка)
	
	ирКлиент.ОбновитьКэшМодулейЛкс(КаталогКэша);
	ОбновитьИнфоПапкиКэша();
	
КонецПроцедуры

Процедура КоманднаяПанель1ОчиститьСтатистику(Кнопка)
	
	#Если Сервер И Не Сервер Тогда
		мПлатформа = Обработки.ирПлатформа.Создать();
	#КонецЕсли
	Ответ = Вопрос("Очистить статистику выбора (" + мПлатформа.ТаблицаСтатистикиВыбора.Количество() + " слов). Продолжить?", РежимДиалогаВопрос.ОКОтмена);
	Если Ответ <> КодВозвратаДиалога.ОК Тогда
		Возврат;
	КонецЕсли;
	мПлатформа.ТаблицаСтатистикиВыбора.Очистить();
	СохранитьСтатистикуВыбораПодсказки();
	Сообщить("Статистика выбора очищена");
	
КонецПроцедуры

Процедура ВнешнееСобытие(Источник, Событие, Данные) Экспорт
	
	ирКлиент.Форма_ВнешнееСобытиеЛкс(ЭтаФорма, Источник, Событие, Данные);

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

Процедура КлсКомандаНажатие(Кнопка)
	ирКлиент.УниверсальнаяКомандаФормыЛкс(ЭтаФорма, Кнопка);
КонецПроцедуры

Процедура ПриЗакрытии()
	ирКлиент.Форма_ПриЗакрытииЛкс(ЭтаФорма);
КонецПроцедуры

Процедура ТабличноеПолеПриПолученииДанных(Элемент, ОформленияСтрок) Экспорт 
	
	ирКлиент.ТабличноеПолеПриПолученииДанныхЛкс(ЭтаФорма, Элемент, ОформленияСтрок);

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

Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Экспорт 
	
	ирКлиент.Форма_ОбработкаОповещенияЛкс(ЭтаФорма, ИмяСобытия, Параметр, Источник);
	
КонецПроцедуры

// Каталог кэша

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

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

Процедура ВычислитьРазмерПапкиКэша()
	
	ЭтаФорма.РазмерКэша = ирОбщий.ВычислитьРазмерКаталогаЛкс(КаталогКэша) /1000/1000;

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

Процедура КаталогКэшаПриИзменении(Элемент)
	#Если Сервер И Не Сервер Тогда
		мПлатформа = Обработки.ирПлатформа.Создать();
	#КонецЕсли
	Файл = Новый Файл(КаталогКэша);
	Если Файл.Существует() Тогда
		ЭтаФорма.КаталогКэша = Файл.ПолноеИмя;
		ОбновитьИнфоПапкиКэша();
	Иначе
		КаталогКэшаОчистка();
	КонецЕсли; 
	мПлатформа.ОчиститьКэшАнализатораЯзыка();
	ирКлиент.ПолеВводаСИсториейВыбора_ПриИзмененииЛкс(Элемент, ЭтаФорма,,, ИмяКомпьютера());
КонецПроцедуры

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

Процедура КаталогКэшаНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
	ирОбщий.ПолеВводаСИсториейВыбора_ОбновитьСписокЛкс(Элемент, ЭтаФорма, ИмяКомпьютера());
КонецПроцедуры

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

Процедура КаталогКэшаОткрытие(Элемент, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	ЗапуститьПриложение(Элемент.Значение);
	
КонецПроцедуры

Процедура ФайлШаблоновТекстаНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
	ирОбщий.ПолеВводаСИсториейВыбора_ОбновитьСписокЛкс(Элемент, ЭтаФорма, ИмяКомпьютера());
КонецПроцедуры

Процедура ФайлШаблоновТекстаПриИзменении(Элемент)
	ирКлиент.ПолеВводаСИсториейВыбора_ПриИзмененииЛкс(Элемент, ЭтаФорма,,, ИмяКомпьютера());
КонецПроцедуры

Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
	Ответ = ирКлиент.ЗапроситьСохранениеДанныхФормыЛкс(ЭтаФорма, Отказ);
	Если Ответ = КодВозвратаДиалога.Да Тогда
		ОсновныеДействияФормыОК();
	КонецЕсли; 
КонецПроцедуры

Процедура ГитРепозиторийНачалоВыбора(Элемент, СтандартнаяОбработка)
	
	//ирКлиент.ВыбратьФайлЛкс(, "code-workspace",, Элемент.Значение,,, "Выберите связанный гит репозиторий");
	ирКлиент.ВыбратьКаталогВФормеЛкс(Элемент.Значение, ЭтаФорма, "Выберите связанный гит репозиторий");
	
КонецПроцедуры

Процедура ГитРепозиторийОткрытие(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	ЗапуститьПриложение(Элемент.Значение);
КонецПроцедуры

Процедура КоманднаяПанель1ПроверитьМодули(Кнопка)
	
	Форма = ПолучитьФорму("ОшибкиМодуля");
	Форма.ВсеМодули = Истина;
	Форма.Открыть()
	
КонецПроцедуры


ирКлиент.ИнициироватьФормуЛкс(ЭтаФорма, "Обработка.ирКлсПолеТекстаПрограммы.Форма.ФормаНастройки");
