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

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

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

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

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

// Генератор выражения языка запросов 1С для конвертации текстового поля заданной длины в число без знака (+/-) с заданным разделителем, начиная с заданного символа
//.
// Параметры:
//  ИмяПоля - Строка - 
//  ДлинаСтроки - Число - 
//  СимволРазделителя - Строка - 
//  НомерПервогоСимволаЧисла - Число - 
// Возвращаемое значение:
//  Строка - 
Функция ТекстВыраженияЗапросаИзСтрокиВЧисло(Знач ИмяПоля, Знач ДлинаСтроки = 10, Знач СимволРазделителя = ".", Знач НомерПервогоСимволаЧисла = 1, выхКомментарий = "") Экспорт 

	Текст = Новый Массив;
	Текст.Добавить("ВЫБОР ");
	Для ДлинаЦелойЧасти=НомерПервогоСимволаЧисла - 1 По ДлинаСтроки Цикл
		Если ДлинаЦелойЧасти=ДлинаСтроки Тогда 
			Текст.Добавить("	ИНАЧЕ"+Символы.ПС);
		Иначе
			Текст.Добавить("	КОГДА ПОДСТРОКА("+ИмяПоля+", "+(ДлинаЦелойЧасти+1)+", 1) = """+СимволРазделителя+""" ИЛИ ПОДСТРОКА("+ИмяПоля+", "+(ДлинаЦелойЧасти+1)+", 1) = """" ТОГДА "+Символы.ПС);
		КонецЕсли; 
		Если ДлинаЦелойЧасти=0 Тогда 
			Текст.Добавить("    0" + Символы.ПС);
		КонецЕсли; 
		Для лИнд=1 По ДлинаЦелойЧасти Цикл
			Текст.Добавить("    ВЫБОР ПОДСТРОКА("+ИмяПоля+", "+лИнд+", 1)");
			Для лЦифра=0 По 9 Цикл
				Текст.Добавить(" КОГДА """+лЦифра+""" ТОГДА "+лЦифра);
			КонецЦикла;
			Текст.Добавить(" ИНАЧЕ 0 КОНЕЦ"+?(лИнд=ДлинаЦелойЧасти, "", "*"+Формат(Pow(10, ДлинаЦелойЧасти-лИнд), "ЧРД=.; ЧГ=0")+"+")+Символы.ПС);
		КонецЦикла;
		Для лИнд=ДлинаЦелойЧасти+2 По ДлинаСтроки Цикл
			Текст.Добавить("+ ВЫБОР ПОДСТРОКА("+ИмяПоля+", "+лИнд+", 1)");
			Для лЦифра=0 По 9 Цикл
				Текст.Добавить(" КОГДА """+лЦифра+""" ТОГДА "+лЦифра);
			КонецЦикла;
			Текст.Добавить(" ИНАЧЕ 0 КОНЕЦ"+?(лИнд=ДлинаЦелойЧасти, "", " / "+Формат(Pow(10, лИнд-ДлинаЦелойЧасти-1), "ЧРД=.; ЧГ=0"))+Символы.ПС);
		КонецЦикла;
	КонецЦикла;
	Текст.Добавить("КОНЕЦ");
	Текст = ирОбщий.СтрСоединитьЛкс(Текст, "");
	выхКомментарий = "Конвертация строки(" + ДлинаСтроки + ") в число без знака (+/-) с разделителем """ + СимволРазделителя + """, начиная с " + НомерПервогоСимволаЧисла + "-го символа";
	Возврат Текст;
КонецФункции

ирКлиент.ИнициироватьФормуЛкс(ЭтаФорма, "Обработка.ирКлсПолеТекстаПрограммы.Форма.ВыражениеЗапросаИзСтрокиВЧисло");
НомерПервогоСимволаЧисла = 1;
Длина = 1;