Функции работы со строками 1С — анализ текста

В качестве примера работы функций работы со строками 1С мы хотели бы создать автоматический анализ текста. Текст мы будем брать из файла. Результат анализа выводить в произвольном виде пользователю.

Нам нужно создать внешнюю обработку, которая позволит нам выбрать текстовый файл и запустить анализатор.

 

Анализ текста 1С — форма и кнопки

Итак, создаем внешнюю обработку: Конфигуратор/Файл/Новый/Внешняя обработка.

Добавляем форму. На форме нам нужно разместить поле выбора текстового файла и кнопку анализа.

 

Анализ текста 1С — толстый клиент

На форму разместим обычное текстовое поле. Длина строки – неограниченная, ведь путь к файлу (имена каталогов) может быть значительным.

Чтобы пользователю не пришлось вписывать имя файла, а можно было выбрать его – у поля включим кнопку выбора.

Имя поля изменим на «ИмяФайла», имя связанного реквизита формы изменится на такое же автоматически.

В качестве кнопки будем использовать автоматически добавленную платформой кнопку «Выполнить» (и у нее уже подключен обработчик – удобно).

 

Анализ текста 1С — тонкий клиент

В тонком клиенте мы самостоятельно создадим реквизит формы «ИмяФайла». Перетащим реквизит на форму. В свойствах элемента формы также включим кнопку выбора.

В качестве кнопки – создадим команду «Выполнить», назначим ей обработку и перетащим на форму.

 

Анализ текста 1С — программируем

Первое, что нам нужно сделать – обработать нажатие кнопки выбора – показать по нажатию диалог выбора файла.

Зайдем в свойства нашего текстового поля на форме (в толстом клиенте – левой кнопкой мыши прямо на поле, в тонком – на имя поля в списке), и укажем обработчик события «НачалоВыбора».

Внутри функции обработчика, которую создаст 1С при назначении, впишем нехитрый код:
[VIP_CONTENT]

&НаКлиенте
Процедура ИмяФайлаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

     Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); //создаем объект «ДиалогВыбораФайла»
     Диалог.Фильтр = "Текстовый документ(*.txt)|*.txt"; //указываем фильтр – текстовые файлы, фильтров можно указывать несколько, через знак |

     Если Диалог.Выбрать() Тогда //размещено в конструкции «Если», так как пользователь в диалоге выбора файлов может нажать Отмена
          ИмяФайла = Диалог.ПолноеИмяФайла; //ПолноеИмяФайла –включая путь к нему
          //Имя файла – это текстовое поле, которое мы разместили на форме
     КонецЕсли;

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

[/VIP_CONTENT]

Теперь у нас есть имя файла. Нам нужно «достать» его содержимое и вызвать анализ текста.

У нас уже есть обработчик кнопки «Выполнить». В толстом клиенте кнопка и ее обработчик были созданы автоматически конфигуратором 1С. В тонком клиенте мы добавляли ее ручками.

Впишем в обработчик код, который считает файл в строку:
[VIP_CONTENT]

&НаКлиенте
Процедура ВыполнитьКнопка(Команда)

     Файл = Новый ЧтениеТекста(ИмяФайла); //создаем объект 1С – работа с текстовыми файлами
     Текст = Файл.Прочитать(); //считываем все содержимое файла в одну строку
     Файл.Закрыть();

     АнализТекста(Текст); //вызываем нашу процедуру анализа текста

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

//В эту процедуру мы будем далее вписывать код
Процедура АнализТекста(Текст)

     //тут пока ничего нету

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

[/VIP_CONTENT]

Касательно кодировки файла. Если создать объект ЧтениеТекста() без параметра с указанием кодировки – 1С попытается самостоятельно определить кодировку (по сигнатуре Byte Order Mark – BOM, или будет считать его кодировку ANSI).

Вы можете указать нужную кодировку напрямую, например так:
Файл = Новый ЧтениеТекста(ИмяФайла, "UTF-8"); //имя кодировки подставить нужное

Итак, в результате у нас получилось:

  • Текстовая строка, считанная из файла в переменной «Текст»
  • Процедура, в которой мы будем анализировать полученную строку из переменной, с названием «АнализТекста()», используя функции работы со строками 1С