Перем мТипПриемника;

Функция СохраняемаяНастройкаФормы(выхНаименование, выхИменаСвойств) Экспорт 
	выхИменаСвойств = "Форма.ВариантРазделителя, Форма.Разделитель, Форма.ОбрезатьКрайниеНепечатныеСимволы, Форма.ПропускатьПустые, Форма.ИменаКолонокИзПервойСтроки, Форма.РазворачиватьКавычки";
	Возврат Неопределено;
КонецФункции

Процедура КнопкаОКНажатие(Кнопка)
	
	Результат = РассчитатьРезультат();
	Закрыть(Результат);
	Если ОткрытьПриемникПриЗакрытии Тогда
		ирКлиент.ОткрытьЗначениеЛкс(Результат);
	КонецЕсли; 
	
КонецПроцедуры

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

КонецФункции

Процедура ВариантРазделителяПриИзменении(Элемент)
	
	НастроитьЭлементыФормы();
	ОбновитьТаблицуПримера();
	
КонецПроцедуры

Процедура НастроитьЭлементыФормы()
	
	ЭлементыФормы.Разделитель.Видимость = ВариантРазделителя = "Произвольный";
	ЭлементыФормы.ПропускатьПустые.Видимость = мТипПриемника = Тип("Массив");
	ЭлементыФормы.ИменаКолонокИзПервойСтроки.Видимость = мТипПриемника = Тип("ТаблицаЗначений");
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

Процедура ОбрезатьКрайниеНепечатныеСимволыПриИзменении(Элемент)
	
	ОбновитьТаблицуПримера();
	
КонецПроцедуры

Процедура РазделительПриИзменении(Элемент)
	
	ОбновитьТаблицуПримера();

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

Процедура РазворачиватьКавычкиПриИзменении(Элемент)
	
	ОбновитьТаблицуПримера();

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

Процедура ИменаКолонокИзПервойСтрокиПриИзменении(Элемент)
	
	ОбновитьТаблицуПримера();

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

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

Процедура ДействияФормыОбновитьПримерРазбивки(Кнопка)
	
	ОбновитьТаблицуПримера();
	
КонецПроцедуры

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

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

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