Имя: Пароль:
1C
1С v8
Как получить номер строки в текстовом документе
0 Sanjik
 
27.06.16
17:21
Здравствуйте, собственно вопрос, как получить номер строки в текстовом документе по определенному тесту?
Есть функция СтрПолучитьСтроку(Строка, 2) - вернет значение второй строки. А как сделать наоборот, если знаешь значение строки и нужно получить номер этой строки?
1 Ёпрст
 
27.06.16
17:28
А зачем ?
Ну, самый примитив - перебором всех строк, тип того:

Для Счетчик = 1 По СтрЧислоСтрок(ИсходныйТекст) Цикл
    Если НужнаяСтрока = СтрПолучитьСтроку(ИсходныйТекст, Счетчик) Тогда Возврат Счетчик;
    КонецЕсли;
КонецЦикла;
2 GROOVY
 
27.06.16
17:29
Символ переноса строки до позиции курсора посчитайте.
3 Sanjik
 
27.06.16
17:37
(1) Ошибка: Процедура не может возвращать значение
(2) А это как?
4 Ёпрст
 
27.06.16
17:41
(3) :))
5 GROOVY
 
27.06.16
17:42
Понятно.

Это рекурсивно искать символ от начала строки до первого+n совпадения.
6 Ёпрст
 
27.06.16
17:46
Можно еще так

Возврат СтрЧислоСтрок(Лев(ИсходнаяСтрока,СтрНайти(ИсходнаяСтрока,НужныйТекст)));
7 Sanjik
 
27.06.16
17:49
(4) Переделал так:

НужнаяСтрока = "#Изделия";
Для Счетчик = 1 По СтрЧислоСтрок(Текст) Цикл
    Если НужнаяСтрока = СтрПолучитьСтроку(Текст, Счетчик) Тогда цук = Счетчик;
    КонецЕсли;
КонецЦикла;


Но почему-то значение "цук" - 2, а должно быть 4!
Текст:

#Заказ
Отдел;Номер;Дата;Сумма;Клиент;ID_Клиента;ИНН;Бланк;Коммент;Ск_счет;Ск_изд;Ск_акс;Ск_раб
0;500;21.06.2016;218220,32;Уважаемый Заказчик;8;;ООО "Окна";;145480,22;0;0;0;
#Изделия
Номер;Система;ID_Системы;Цвет;Наименование;Ш;В;Сумма;Площадь;Кол-во
8 Ёпрст
 
27.06.16
17:52
(7) ну смотри отладчиком, че у тебя СтрПолучитьСтроку(Текст, Счетчик) возвращает и чего в переменной счётчик
9 Sanjik
 
27.06.16
18:32
(8) Спасибо большое! Получилось так:

НужнаяСтрока = "#Изделия";
Для Счетчик = 1 По Текст.КоличествоСтрок() Цикл
    Строка = Текст.ПолучитьСтроку(Счетчик);
    Если НужнаяСтрока = Строка Тогда цук = Счетчик;
    КонецЕсли;
КонецЦикла;

"цук" - есть номер строки.
10 mistеr
 
27.06.16
20:35
(9) Если искать придется много раз, лучше перегнать в массив или соответствие.