Функция 1С СтрЧислоВхождений(ГдеИщем, ЧтоИщем) возвращает цифру – сколько количество раз встретилась строка ЧтоИщем в строке ГдеИщем.
Например:
- Выполняем 1С СтрЧислоВхождений(«50$ это всегда лучше, чем 10$», «$»)
- 1С возвращает 2
- Выполняем 1С СтрЧислоВхождений(«Ежик любит посмеяться, Ежик любит попрыгать, Ежиковидный смех», «Ежик»)
- 1С возвращает 3
Если Вам требуется определить наличие в строке символа или части строки – лучше использовать функцию 1С Найти(), так как она ищет первое вхождение, а не все, и поэтому работает быстрее.
Если же Вам требуется проверить шаблон, то лучше использовать 1С СтрЧислоВхождений(). Например проверка на наличие в адресе электронной почты ровно одного символа @, или в телефонном номере 2х символов «-».
На примере нашего анализатора текста сделаем с помощью 1С СтрЧислоВхождений – проверка корректности формата CSV.
В формате CSV можно сохранить документ Excel. Он представляет из себя текстовый файл, где каждое значение колонки в строке таблицы отделено от следующей знаком разделителя, обычно «;».Там, где значение пустое (пропущено), там просто ставится разделитель «;».
Например, Excel:

Данный файл Excel в формате CSV (Файл/Сохранить как/формат CSV) выглядит следующим образом:

Если значение пропущено – то разделитель в любом случае присутствует, поэтому в каждой строке CSV должно быть N разделителей.
[VIP_CONTENT]
//Проверяет корректность файла CSV, сравнивая кол-во колонок в строках файла с первой
Функция ПроверкаФайлаCSV(ИмяФайла)
Попытка
//"открываем" файл на чтение
//если файл невозможно открыть - будет "исключение"
Файл = Новый ЧтениеТекста(ИмяФайла);
Исключение
//здесь мы, если файл не удалось открыть
Сообщить("Ошибка: файл '" + ИмяФайла + "' не найден или невозможно открыть(" + ОписаниеОшибки() + ")");
Возврат Ложь;
КонецПопытки;
Текст = Файл.Прочитать(); //считываем весь файл целиком (все строчки)
Файл.Закрыть(); //"закрываем" файл, чтобы системные ресурсы не были заняты
Результат = Истина; //результат проверки по умолчанию, если в ходе проверки что-то не так - "сбросим" его в ложь
ЗаданноеКолвоКолонок = Неопределено; //эталонное значение колонок, будет известно нам только в первой строке
КолвоСтрок = СтрЧислоСтрок(Текст); //сохраним кол-во строк, так как оно не изменяется в ходе работы с файлом, чтобы не вычислять его много раз
//цикл по кол-ву строк
Для Сч = 1 по КолвоСтрок Цикл
Строка = СтрПолучитьСтроку(Текст, Сч); //получаем из текста со множеством строк одну строку по ее номеру (счетчик в цикле)
ЧислоВхождений = СтрЧислоВхождений(Строка, ";") + 1; //сколько колонок в полученной строке - вычисляем с помощью кол-ва разделителей (кол-во колонок = кол-во разделителей + 1)
Если ЗаданноеКолвоКолонок = Неопределено Тогда //первая строка файла
ЗаданноеКолвоКолонок = ЧислоВхождений; //запомним эталон
ИначеЕсли ЧислоВхождений <> ЗаданноеКолвоКолонок Тогда //иначе сравниваем с эталонным значением
//если не совпало
Сообщить("Ошибка: в строке " + Строка(Сч) + " неверное число колонок(должно быть " + Строка(ЗаданноеКолвоКолонок) + ", по факту " + Строка(ЧислоВхождений) + ")");
//сбрасываем флаг
Результат = Ложь;
КонецЕсли;
КонецЦикла;
//если флаг проверки остался положительным, то сообщим, что все ок
Если Результат Тогда
Сообщить("Файл корректный");
КонецЕсли;
Возврат Результат;
КонецФункции
[/VIP_CONTENT]