Как решить проблему разделителя внутри текста?
Подскажите пожалуйста, есть текстовый файл в нем значение первого элемента уникальный номер который может включать любой символ, в том числе и разделитель! При выгрузке файла многие некорректны!
&НаКлиенте
Процедура ПутьКфайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла = "";
Фильтр = НСтр("ru = 'Выберите TXT файл '")
+ "(*.txt)|*.txt";
ДиалогОткрытияФайла.Фильтр = Фильтр;
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = "Выберите TXT файл";
Если ДиалогОткрытияФайла.Выбрать() Тогда
Объект.ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПрочитатьФайл(Команда)
Объект.Джитины.Очистить();
ПоследовательноеЧтение = Ложь;
Текст = Новый ТекстовыйДокумент;
Текст.Прочитать(Объект.ПутьКфайлу);
Для НомерСтроки = 1 По Текст.КоличествоСтрок()Цикл
ТекСтрока = Текст.ПолучитьСтроку(НомерСтроки);
МассивСлов = СтрРазделить(ТекСтрока, ",");
Если МассивСлов.Количество()> 31 Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = Объект.Джитины.Добавить();
НоваяСтрока.GTIN = СокрЛП(МассивСлов[0]);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ПутьКфайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла = "";
Фильтр = НСтр("ru = 'Выберите TXT файл '")
+ "(*.txt)|*.txt";
ДиалогОткрытияФайла.Фильтр = Фильтр;
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = "Выберите TXT файл";
Если ДиалогОткрытияФайла.Выбрать() Тогда
Объект.ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПрочитатьФайл(Команда)
Объект.Джитины.Очистить();
ПоследовательноеЧтение = Ложь;
Текст = Новый ТекстовыйДокумент;
Текст.Прочитать(Объект.ПутьКфайлу);
Для НомерСтроки = 1 По Текст.КоличествоСтрок()Цикл
ТекСтрока = Текст.ПолучитьСтроку(НомерСтроки);
МассивСлов = СтрРазделить(ТекСтрока, ",");
Если МассивСлов.Количество()> 31 Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = Объект.Джитины.Добавить();
НоваяСтрока.GTIN = СокрЛП(МассивСлов[0]);
КонецЦикла;
КонецПроцедуры
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) Я выгрузил файл, получил строку, мне нужно получить значения только первых элементов. Функция СтрРазделить(ТекСтрока, ",") , где разделителем является запятая не подходит, так как внутри например вот этого элемента "010290000175579521bHM,b+e&u?bZko" значение попадает только 010290000175579521bHM
(4) Если на все остальное наплевать, то возьмите в качестве разделителя не одну запятую, а "," (вместе с кавычками). Останется тогда только левую кавычку откинуть и экранированые кавычки в поле "разэкранировать". Еже ли по другим полям что-то надо, то кавычки парсить придется.
(5) как вариант, сначала нарезать строку по кавычкам...
м=стрРазделить(стр,"""",Истина);
после чего каждый нечетный ([1],[3],[5]...) элемент считаешь неделимым куском....
а каждый четный ([0],[2],[4]) изучаешь на наличие разделителей... если нет - склеиваешь соседей...
м=стрРазделить(стр,"""",Истина);
после чего каждый нечетный ([1],[3],[5]...) элемент считаешь неделимым куском....
а каждый четный ([0],[2],[4]) изучаешь на наличие разделителей... если нет - склеиваешь соседей...
как вариант, можно разложить строку на массив по разделителю и потом в массиве склеить элементы
МассивСлов = СтрРазделить(ТекСтрока, ",");
Инд = 0;
Пока Инд < МассивСлов .ВГраница() Цикл
Если СтрЧислоВхождений(МассивСлов [Инд], """")%2 Тогда
МассивСлов [Инд] = МассивСлов [Инд] + "," + МассивСлов [Инд + 1];
МассивСлов .Удалить(Инд + 1);
Иначе
Инд = Инд + 1;
КонецЕсли;
КонецЦикла;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот