Реализуем Конечный автомат Мура на 1С.
Для этого нам надо составить собственно сам автомат, выделив необходимые состояния. Прописать в коде каждого из состояний условия для перехода из одного состояния в другое. А также прописать в коде - ту полезную работу, которую должен выполнять наш автомат в данном состоянии.
Итак, начнем.
Для начала нарисуем примерную диаграмму переходов.
Собственно сама реализация состоит из следующих шагов:
Инициализируем и создаем все начальные переменные
текПоле="";
...
и т. д.
Создаем Макет, куда будем выводить разобранные данные. Создаем его через вызов Функции НаСервере
Макет = ПолучитьПечатнуюФорму();
Задаем начальное состояние Автомата
Состояние=0;
Теперь пишем бесконечный цикл, с выходом из него если Состояние автомата станет более 100 (условный уровень завершения)
Пока Состояние<100 Цикл
...
КонецЦикла;
Внутри цикла прописываем обработку состояний согласно диаграмме переходов. Реализуем просто в виде множественного Если
Если Состояние = 0 Тогда
ВыборкаСтрока = ЧтениеТекста.ПрочитатьСтроку();
//Сообщить("Начинаем чтение: "+ВыборкаСтрока);
Если ВыборкаСтрока=Неопределено Тогда
Состояние = 100; //Весь текст прочитан
Иначе
Состояние = 1; //Парсинг обычной строки
КонецЕсли;
ИначеЕсли Состояние = 1 Тогда
замСтрока = СтрЗаменить(ВыборкаСтрока,"""""","$%*&");
...
КонецЕсли;
Результат выводим в Табличный документ.
Макет.Показать("Результат");
Добавляем на Форму Поле ввода, и обрабатываем у него событие НачалоВыбора
&НаКлиенте
Процедура ИмяФайлаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Фильтр = "CSV файл (*.csv)|*.csv|";
Если Диалог.Выбрать() Тогда
ИмяФайла = Диалог.ПолноеИмяФайла;
КонецЕсли;
КонецПроцедуры
На этом обработка готова.
Работать должно в любой конфигурации на базе УФ.
В частности, работа обработки была проверена на Базовой ЗУП 3.1.11.133, Платформа 8.3.15.1830