|
Избавиться от ковычек при загрузке с текстового файла | ☑ | ||
---|---|---|---|---|
0
falselight
07.05.19
✎
12:39
|
Если открыть файл, то там такие значения
"Гр.","00000010","Клиенты","","","","","","","","","","" При обработке в коде они идут в двойных кавычках. Как мне получить значения в одинарных кавычках? Текст = Новый ТекстовыйДокумент; Текст.Прочитать(ИмяФайлаЗагрузкиКонтрагентов); Для НомерСтроки = 1 по Текст.КоличествоСтрок() Цикл Строка = Текст.ПолучитьСтроку(НомерСтроки); МассивКолонок = РазложитьСтрокуВМассивПодстрок(Строка, Разделитель); Для НомерКолонки = 1 по МассивКолонок.Количество() Цикл ТекущееЗначение = МассивКолонок[НомерКолонки-1]; Если ТекущееЗначение = "Гр." Тогда // Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") МассивСтрок = Новый Массив(); Если Разделитель = " " Тогда Стр = СокрЛП(Стр); Пока Истина Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = СокрЛ(Сред(Стр,Поз)); КонецЦикла; Иначе ДлинаРазделителя = СтрДлина(Разделитель); Пока Истина Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = Сред(Стр,Поз+ДлинаРазделителя); КонецЦикла; КонецЕсли; |
|||
1
falselight
07.05.19
✎
12:40
|
(0+) По коду всегда будет, -
ТекущееЗначение = ""Гр."" - и не будет равно!!!!! |
|||
2
dezss
07.05.19
✎
12:42
|
СтрЗаменить
|
|||
3
Fish
07.05.19
✎
12:42
|
(1) "ТекущееЗначение = ""Гр."" - и не будет равно!" - Что означает сия фраза?
|
|||
4
dezss
07.05.19
✎
12:43
|
И вообще, зачем изобретать велосипед, если есть СтрРазделить?
|
|||
5
falselight
07.05.19
✎
12:44
|
(3) Отладчиком встаю на
Если ТекущееЗначение = "Гр." Тогда ТекущееЗначение = ""Гр."" то есть лишние кавычки!!!!! Не пойму что не так делаю! |
|||
6
Вафель
07.05.19
✎
12:46
|
а вот в 77 был метод
|
|||
7
Fish
07.05.19
✎
12:46
|
(5) Строковые значения в отладчике всегда отображаются в кавычках.
|
|||
8
Вафель
07.05.19
✎
12:47
|
гугли csv
|
|||
9
dezss
07.05.19
✎
12:47
|
(5) Да что ж такое.
Строка = СтрЗаменить(Текст.ПолучитьСтроку(НомерСтроки),"""",""); |
|||
10
Вафель
07.05.19
✎
12:48
|
тут самое интересное, что внутри строк могут быть запятые и кавычки
|
|||
11
1Сергей
07.05.19
✎
12:49
|
ЗначениеИзСтрокиВнутр не предлагали ещё?
|
|||
12
dezss
07.05.19
✎
12:49
|
(10) В теме про "Избавиться от ковычек". Про то, что они могут быть внутри строк нет ни слова.
|
|||
13
falselight
07.05.19
✎
13:30
|
(6) Это выгрузка с 7.7 ?
(7) Там идет значение в двойных кавычках, и равенство не выполняется Если ТекущееЗначение = "Гр." Тогда (8) Я делал так давно, сейчас хочу сделать загрузку с файла "Эл.","9998","ИП Зайцев Илья Иванович","ИП Зайцев Юрий Вячеславович","Основной договор","","","","","","","БН","1399" (9) А так правильно будет? (10) Да это точно! (11) Буду пробовать. (12) Ну так от куда знать. Что там навбивали. Выгрузка из 1с 7.7, справочников. |
|||
14
Garykom
гуру
07.05.19
✎
13:33
|
Вместо Разделитель = ","
Сделай Разделитель = """,""" |
|||
15
falselight
07.05.19
✎
13:34
|
(14) Буду пробовать разные варианты. Пока сам не понял в чем дело.
Из семерки выгрузил как обычно. Но вот при загрузке что то не идет. |
|||
16
HawkEye
07.05.19
✎
13:38
|
(15) возвращайся на 7-ку )
|
|||
17
НЕА123
07.05.19
✎
14:15
|
автор где-то врет.
я за (7). |
|||
18
Garykom
гуру
07.05.19
✎
14:26
|
(17) Он не врет, он просто не понимает.
|
|||
19
falselight
07.05.19
✎
15:21
|
||||
20
d4rkmesa
07.05.19
✎
15:25
|
(0)
// Функция формирует список значений из строки с разделителями. // // Параметры // СтрокаТекста - строка текста с разделителями // Разделитель - Строка, разделитель в тексте // НаличиеКавычек - Булево, есть ли кавычки вокруг значений в строке // // Возвращаемое значение: // СписокЗначений // Функция ИзСтрокиСРазделителями(СтрокаТекста, Разделитель, НаличиеКавычек, ТекстСТабуляциями = Ложь) Экспорт Если ТекстСТабуляциями Тогда НаличиеКавычек = Ложь; Разделитель = Символы.Таб; КонецЕсли; СписокДанных = Новый СписокЗначений; ПрошлыйРазделитель = 0; КоличествоСимволов = 0; Для а=1 По СтрДлина(СтрокаТекста) Цикл Если Сред(СтрокаТекста,а,1) = Разделитель Тогда ВыбранноеЗначение = Сред(СтрокаТекста,(ПрошлыйРазделитель + 1),КоличествоСимволов); Если НаличиеКавычек Тогда ВыбранноеЗначение = Сред(ВыбранноеЗначение, 2, (СтрДлина(ВыбранноеЗначение) - 2)); КонецЕсли; Если ТекстСТабуляциями Тогда ВыбранноеЗначение = СтрЗаменить(ВыбранноеЗначение, (""""""), """"); Если Сред(ВыбранноеЗначение, 1, 1) = """" Тогда ВыбранноеЗначение = Сред(ВыбранноеЗначение, 2); КонецЕсли; Если Сред(ВыбранноеЗначение, СтрДлина(ВыбранноеЗначение), 1) = """" Тогда ВыбранноеЗначение = Сред(ВыбранноеЗначение, 1, (СтрДлина(ВыбранноеЗначение) - 1)); КонецЕсли; КонецЕсли; СписокДанных.Добавить(ВыбранноеЗначение); ПрошлыйРазделитель = а; КоличествоСимволов = 0; Продолжить; КонецЕсли; КоличествоСимволов = КоличествоСимволов + 1; КонецЦикла; ВыбранноеЗначение = Сред(СтрокаТекста,(ПрошлыйРазделитель + 1)); Если НаличиеКавычек Тогда ВыбранноеЗначение = Сред(ВыбранноеЗначение, 2, (СтрДлина(ВыбранноеЗначение) - 2)); КонецЕсли; Если ТекстСТабуляциями Тогда ВыбранноеЗначение = СтрЗаменить(ВыбранноеЗначение, (""""""), """"); Если Сред(ВыбранноеЗначение, 1, 1) = """" Тогда ВыбранноеЗначение = Сред(ВыбранноеЗначение, 2); КонецЕсли; Если Сред(ВыбранноеЗначение, СтрДлина(ВыбранноеЗначение), 1) = """" Тогда ВыбранноеЗначение = Сред(ВыбранноеЗначение, 1, (СтрДлина(ВыбранноеЗначение) - 1)); КонецЕсли; КонецЕсли; СписокДанных.Добавить(ВыбранноеЗначение); Возврат СписокДанных; КонецФункции |
|||
21
hhhh
07.05.19
✎
16:24
|
(19) ну так пробуй
Если ТекущееЗначение = """Гр.""" Тогда |
|||
22
falselight
07.05.19
✎
18:30
|
(21) То есть проверять на тройные кавычки по бокам?
Так воспринимает. А это будет ли правильно? |
|||
23
Garykom
гуру
07.05.19
✎
19:27
|
(22) Поучиться бы вам батенька. Хотя бы про экранирование символов в строке узнать.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |